2016-05-05 6 views
1

В основном, что говорится в заголовке. Я получаю то, что, как я думаю, является числовым ошибкой, распространяющимся в моем коде, поэтому я пытаюсь улучшить, изменив все типы на mpcs с высокой точностью. Тем не менее, некоторые из моих вычислений являются символическими, а sympy, похоже, не нравится mpcs.Решение символической симпы с mpmath mpc типами

val += (1.0/2.0)*(1.0/kConversionFactor)**(ci) * (A*k**(ln-lm+2*ci) - 1.0j*B*k**(ln+lm+1+2*ci)) 
TypeError: unsupported operand type(s) for *: 'mpc' and 'Symbol' 

к является SymPy символом А и В MPC в

+0

Я думаю, возможно, это могло бы помочь HTTP://mattpap.github.io/scipy-2011-tutorial/html/basics.html#foreign-types-in-sympy –

ответ

0

Обновлены следующие комментарии:

val += (1.0/2.0)*(1.0/kConversionFactor)**(ci) * (mpcToSympy(A)*k**(ln-lm+2*ci) - sy.I*mpcToSympy(B)*k**(ln+lm+1+2*ci)) 
.... 
def mpcToSympy(mpc_): 
    return (sy.Float(str(mpc_.real),DPS) + sy.Float(str(mpc_.imag),DPS)*sy.I) 

Смотрите здесь: Convert from mpf to Sympy Float without losing precision

+0

'sympify' преобразует их в типы SymPy. Однако, если вы хотите высокоточные поплавки, вы можете просто использовать ['sympy.Float'] (http://docs.sympy.org/latest/modules/core.html#sympy.core.numbers.Float). – asmeurer

+0

Спасибо. Таким образом, типы Sympy потеряют точность, а sympy Float не будет? Косвенно? –

+0

Теперь, когда я помню, я действительно пробовал Float, но проблема в том, что мне нужен сложный тип, а sympy, похоже, нет. Кроме того, вы правы, sympify, похоже, снижает точность. Я думаю, что если я использую Флао с симпый I. –

 Смежные вопросы

  • Нет связанных вопросов^_^