필자는 수학 문제 집합에 대해 Newton의 방법 계산을 수행하기 위해 Python 2에서 다음 프로그램을 작성했으며, 내가 처음에 ipython에서 %run -i NewtonsMethodMultivariate.py
으로로드 할 때, 파이썬 3 사업부는 반입되지 않습니다. 내 파이썬 프로그램을로드 한 후 x**(3/4)
을 입력하면 "1"이되기 때문에 이것을 알 수 있습니다. 새 부서를 수동으로 가져온 후 x**(3/4)
은 예상대로 그대로 x**(3/4)
으로 유지됩니다. 왜 이런거야?내 프로그램에서 "from __future__ import division"을 사용하지만 내 프로그램과 함께로드되지 않았습니다.
# coding: utf-8
from __future__ import division
from sympy import symbols, Matrix, zeros
x, y = symbols('x y')
X = Matrix([[x],[y]])
tol = 1e-3
def roots(h,a):
def F(s):
return h.subs({x: s[0,0], y: s[1,0]})
def D(s):
return h.jacobian(X).subs({x: s[0,0], y: s[1,0]})
if F(a) == zeros((2,1)):
return a
else:
while (F(a)).norm() > tol:
a = a - ((D(a))**(-1))*F(a)
print a.evalf(10)
나는이 문제를 방지하기 위해 파이썬 3를 사용하지만 내 리눅스 배포판 전용 선박 SymPy 파이썬 2. 감사 도움말 누구든지 제공 할 수 있습니다에 대한 것입니다.
궁금한 점이 있으면 nxn Jacobians에 대해이 스크립트를 아직 일반화하지 않았으며 문제점 세트에서 2x2 만 처리해야했습니다. 또한 (0을 기능과 함께 문제를 해결 내 표기법을 수정 주셔서 감사합니다 eryksun.)zeros(2,1)
대신에 내 컴퓨터에 설치된 SymPy 0.7.1에 "0이 정확히 하나의 인수를 취합니다"라는 문구가 있기 때문에 2x2 제로 행렬을 분할합니다. 그렇지 않으면 wiki에서 제안합니다. 어쩌면이 명령은 자식 버전에만 해당 될 수 있습니다. ipython
인터프리터
제로 ((2,1))입니다. 인수는 스. 라 또는 터플입니다. 'print 1/2'로 수입 직후에 부서를 테스트 했습니까? – eryksun
호기심에서, 프로그램 끝 부분에'print division'을 추가하면 어떻게 될까요? '_Feature ((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)'? 그렇다면 동일한 인쇄 문이 ipython 명령 줄에서 무엇을 제공합니까? "ipython from future import division"에는 수만 개의 Google 결과가 있습니다. 당신이 이것을 처음으로 눈치 채지 못했던 것 같습니다. :-) –
@eryksun 제로 명령을 사용하는 것에 대해 저를 시정 해 주셔서 감사합니다. 내 프로그램을 업데이트했습니다. 그래서 ipython을 열고'__future__ import division'을 실행 한 다음'print 1/2 '를 실행하면 결과는 예상대로 0.5가됩니다. 하지만 대신 ipython을 열고'% run -i NewtonsMethodMultivariate.py'를 실행 한 다음'print 1/2 '를 실행하면 0이됩니다. Python 3 부분을 가져 오는 행은 분명히 프로그램에 있으므로, 무슨 일인지 알지 못해. –