尝试在python中使用fsolve和sym solve求解函数时出现多个错误

2024-05-23 20:03:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图解决下面的函数。我尝试使用符号解算器和F解算器。都给我惹麻烦了。第一次发帖,如果我的问题有遗漏,我会提前道歉。在

有人对如何解决这个问题有什么建议吗?我在解y,其他的都是已知变量。在

cos(y) + ((xi - tdd) / y) * sin(y)) - exp(xi - tii)

我在python中尝试了两种方法,但都不起作用。首先是:

import numpy as np
from scipy.optimize import fsolve
import sympy as sym
from sympy import *

def fi(y):
    return ((cos(y) + ((xi - tdd) / y) * sin(y)) - exp(xi - tii))
y = fsolve(fi,0.01)

有了这个代码,我得到了这个错误:

AttributeError: 'ImmutableDenseNDimArray' object has no attribute 'could_extract_minus_sign'

我也试过了:

^{pr2}$

得到了这个错误:

NotImplementedError: multiple generators [y, tan(y/2)] No algorithms are implemented to solve equation y*(10000000000000000*(-tan(y/2)**2 + 1)/(tan(y/2)**2 + 1) - 9849605264665270) - 300789470669454*tan(y/2)/(tan(y/2)**2 + 1)

这就是我在Matlab中解决它的方法(I和j是因为矩阵中有x值需要求解):

fi = @(y,x) (cos(y) + (((x-tdd)/y)*sin (y))) - exp((x - tii));
yi(i) = fzero(@(y) fi(y,xi(i,j)),.01);

Tags: 方法fromimportas错误sincosfi
1条回答
网友
1楼 · 发布于 2024-05-23 20:03:28

正如我在一篇评论中已经提到的,solve函数并不是用来求解这些方程的。更多信息可在here找到。在

关于fsolve,问题似乎是因为您正在使用sympy的sincos和{}函数。如果用math模块中的函数替换它们,代码应该可以工作。在

具体来说,您的代码应该如下所示:

import math
from scipy.optimize import fsolve

def fi(y):
    return ((math.cos(y) + ((xi - tdd) / y) * math.sin(y)) - math.exp(xi - tii))

y = fsolve(fi, 0.01)

相关问题 更多 >