【解方程】scipy.optimize.solve.

来源:互联网 发布:c语言assert函数 编辑:程序博客网 时间:2024/06/07 03:07

fsolve求方程的解

如果要求解方程:

f1(u1,u2,u3)=0f2(u1,u2,u3)=0f3(u1,u2,u3)=0

那么func这么定义:

def func(x):  u1,u2,u3=x  return [f1(u1,u2,u3),f2(u1,u2,u3),f3(u1,u2,u3)]

代码案例1:

import scipy.optimize as optimport numpy as npdef f(x):    x0,x1,x2=x    return np.array([5*x1+3,4*x0*x0-2*np.sin(x1*x2),x1*x2-1.5])result=opt.fsolve(f,[1,1,1])print(result)print(f(result))

代码案例2:

如果给了Jacobian矩阵,那么迭代速度更快
Jacobian矩阵的定义是:

f1u1f2u1f3u1f1u2f2u2f3u2f1u2f2u2f3u2

import scipy.optimize as optimport numpy as npdef obj_func(x):    x0,x1,x2=x    return [5*x1+3,4*x0*x0-2*np.sin(x1*x2),x1*x2-1.5]def jacobian(x):    x0, x1, x2 = x    return [        [0,5,0],        [8*x0,-2*x2*np.cos(x1*x2),-2*x1*np.cos(x1*x2)],        [0,x2,x1]    ]result=opt.fsolve(obj_func,[1,1,1],fprime=jacobian)print(result)print(obj_func(result))
原创粉丝点击