Использую "from __future__ import division" в своей программе, но она не загружается с моей программой

Я написал следующую программу на Python 2 для вычислений по методу Ньютона для моего набора математических задач, и хотя она прекрасно работает, по неизвестным мне причинам, когда я первоначально загружаю ее в ipython с %run -i NewtonsMethodMultivariate.py, разделение Python 3 не импортируется. Я знаю это, потому что после загрузки моей программы Python ввод x**(3/4) дает "1". После ручного импорта нового деления, затем x**(3/4) остается x**(3/4), как и ожидалось. Почему так происходит?

# 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)

Я бы использовал Python 3, чтобы избежать этой проблемы, но мой дистрибутив Linux поставляет только SymPy для Python 2. Спасибо за помощь, которую кто-либо может оказать.

Также, если кому-то интересно, я еще не обобщал этот скрипт для nxn якобианов, и в моем наборе задач я имел дело только с 2x2. Кроме того, я нарезаю нулевую матрицу 2x2 вместо того, чтобы использовать команду zeros(2,1), потому что SymPy 0.7.1, установленный на моей машине, жалуется, что "zeros() принимает ровно один аргумент", хотя wiki говорит об обратном. Возможно, эта команда предназначена только для git-версии. (Спасибо eryksun за исправление моей нотации, которое устранило проблему с функцией zeros.)

17
задан Sara Fauzia 28 November 2011 в 02:19
поделиться