【解方程】scipy.optimize.solve.

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 opt
import numpy as np
def 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 opt
import numpy as np
def 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))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值