Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用python求解非线性方程组_Python_Arrays_Scipy_Nonlinear Functions - Fatal编程技术网

用python求解非线性方程组

用python求解非线性方程组,python,arrays,scipy,nonlinear-functions,Python,Arrays,Scipy,Nonlinear Functions,我有一个家庭作业需要解这个方程组: 所以我的变量是: 所以我有N-1个方程和N-1个变量。我应该用Python使用scipy.optimize库来解决这个问题,但是我编程不是很好,所以我被卡住了。我的代码如下所示:(N=500 btw) def-fun(x,F): 对于范围(1000)内的j: 如果j

我有一个家庭作业需要解这个方程组:

所以我的变量是:

所以我有N-1个方程和N-1个变量。我应该用Python使用scipy.optimize库来解决这个问题,但是我编程不是很好,所以我被卡住了。我的代码如下所示:(N=500 btw)

def-fun(x,F):
对于范围(1000)内的j:
如果j
我得到了这个错误:

TypeError:fun()缺少1个必需的位置参数:“F”


问题是我真的不知道如何使用scipy函数,但我尝试创建了一个方程数组,我对变量x0和F0有一个初步猜测。所以我想问一下,我的函数是否真的对应于我的方程,我的意思是,我是否使用循环正确编程,或者我应该使用其他方法。还有,我是否成功在创建与我的方程组相对应的函数时,如何使用scipy来求解它?我应该输入哪些参数?

您必须提供更多上下文(并复制粘贴代码).所以有一千个F?这是一个物理问题的数值解,所以应该有无穷多个F,因为方程是近似解,我选择了1000个点作为近似解。我只是对scipy.optimize.roots的参数如何工作感兴趣。我查看了库页,但我不是程序员,所以我不懂我的意思t、 变量向量有1000个元素。这意味着作为其第一个参数发送到scipy.optimize.root的函数将有一个长度为1000的单参数向量。显然有两个参数,即x0和F0。这意味着scipy函数的第二个参数应该是长度为2的类似向量的对象。并且大多数人忘记了你的乐趣需要两个参数,第一个是前面提到的1000个元素的变量向量,第二个是两个元素的x0和F0的试验值向量。
def fun(x, F):
    for j in range(1000):
        if j < N:
            return F[j + 1] * (x[j] - x[j + 1]) + F[j + 2] * (x[j + 2] - x[j + 1]
        else:
            return -F[j + 1] * np.sqrt(l ** 2 - (x[j + 1] - x[j + 1]) ** 2) + F[j + 2] * np.sqrt(l ** 2 - (x[j + 2] - x[j + 1]) ** 2) - m * g * l
prom = scipy.optimize.root(fun, (x0, f0))