Python 如何传递要与scipy一起使用的sympy表达式?

Python 如何传递要与scipy一起使用的sympy表达式?,python,python-3.x,scipy,sympy,scipy-optimize,Python,Python 3.x,Scipy,Sympy,Scipy Optimize,我想用scipy.optimize中的root来解由循环创建的非线性方程组。我想用一种方法建立方程,然后用另一种方法求解。我用Symphy创建了这些方程,并想用scipy求解它们。我的实际代码有太多的循环,每次来自scipy的root都会迭代这些循环 这是我尝试的一个非常简化的版本。我用Symphy符号建立了方程,然后我用lambdify将方程从Symphy中取出,但解算器给我发送了一个错误 从scipy.optimize导入根目录 来自sympy导入符号lambdify y=[Symbol'x

我想用scipy.optimize中的root来解由循环创建的非线性方程组。我想用一种方法建立方程,然后用另一种方法求解。我用Symphy创建了这些方程,并想用scipy求解它们。我的实际代码有太多的循环,每次来自scipy的root都会迭代这些循环

这是我尝试的一个非常简化的版本。我用Symphy符号建立了方程,然后我用lambdify将方程从Symphy中取出,但解算器给我发送了一个错误

从scipy.optimize导入根目录 来自sympy导入符号lambdify y=[Symbol'x%d'%i代表范围2中的i] def ecuacion: 全球c、卡基奥、梅拉多 c=[] cakeo=y[0]+1+y[1] c、 附录卡基奥 mellado=y[1]+4+-y[0] c、 梅拉多酒店 printc 返回c 厄瓜多尔 f=lambdify,c,'numpy' def解算器: 猜测=[1,-1] sol=rootf,Guess,method='hybr',jac=False Entrega el resultado printsol.x 返回溶胶 解算器 它向我发送了以下错误类型错误:root获得了一个意外的关键字参数“jac”。 如果我删除jac,它会向sme发送以下类型错误:/:“int”和“list”的操作数类型不受支持

这些是jac的追踪

文件,第1行,在 运行文件'C:/Users/gian_/Documents/Irri trickle/speed/i.py',wdir='C:/Users/gian_/Documents/Irri trickle/speed'

文件C:\Users\gian\uu\Anaconda3\lib\site packages\spyder\u kernels\customize\spydercurustomize.py,第827行,在runfile中 execfilefilename,命名空间

文件C:\Users\gian\uuz\Anaconda3\lib\site packages\spyder\u kernels\customize\spydercurustomize.py,第110行,在execfile中 execcompilef.read,文件名,“exec”,命名空间

文件C:/Users/gian_/Documents/Irri trickle/speed/i.py,第54行,in 解算器

文件C:/Users/gian_/Documents/Irri trickle/speed/i.py,第49行,在解算器中 sol=rootf,Guess,method='krylov'Entrega el resultado

TypeError:root获得意外的关键字参数“jac”

文件,第1行,在 运行文件'C:/Users/gian_/Documents/Irri trickle/speed/i.py',wdir='C:/Users/gian_/Documents/Irri trickle/speed'

文件C:\Users\gian\uu\Anaconda3\lib\site packages\spyder\u kernels\customize\spydercurustomize.py,第827行,在runfile中 execfilefilename,命名空间

文件C:\Users\gian\uuz\Anaconda3\lib\site packages\spyder\u kernels\customize\spydercurustomize.py,第110行,在execfile中 execcompilef.read,文件名,“exec”,命名空间

文件C:/Users/gian_/Documents/Irri trickle/speed/i.py,第54行,in 解算器

文件C:/Users/gian_/Documents/Irri trickle/speed/i.py,第49行,在解算器中 sol=rootf,Guess,jac=False Entrega el resultado


TypeError:root得到了一个意外的关键字参数“jac”

提供的代码也给了我一个错误:TypeError:\u lambdifygenerated缺少1个必需的位置参数:“y1”。将y的声明替换为y=DeferredVector'y'解决了问题,如中所述。假设您使用的是Symphy和scipy的最新版本

我不理解关于jac的奇怪错误消息,因为您输入的很好。也许您无意中使用了另一个包中的root

尝试使用明确的名称导入它,如中所示:

从scipy.optimizeimport root作为scipy\u root 从sympy导入符号、lambdify、DeferredVector y=延迟向量'y' ... def解算器: 猜测=[1,-1] sol=scipy_rootf,guess,method='hybr',jac=False Entrega el resultado printsol.x 返回溶胶
什么错误?如果你希望得到真正的帮助,那么就给我们关于你的问题的真实信息;将导入和sympy设置添加到问题中。根据错误,我们可能希望运行您的案例,并建议进行修复。谢谢,我根据根文档修复了它,jac=False应该可以,但是默认值是jac=None,我认为这意味着同样的事情。我们还需要回溯,以便更好地识别错误发生的位置,它可能位于根调用的下面几层。