python用fsolve、leastsq对非线性方程组求解

yipeiwu_com6年前Python基础

背景:

实现用python的optimize库的fsolve对非线性方程组进行求解。可以看到这一个问题实际上还是一个优化问题,也可以用之前拟合函数的leastsq求解。下面用这两个方法进行对比:

代码:

from scipy.optimize import fsolve,leastsq
from math import sin,cos
 
def f(x):
 x0 = float(x[0])
 x1 = float(x[1])
 x2 = float(x[2])
 return [
 5*x1+3,
 4*x0*x0 - 2*sin(x1*x2),
 x1*x2-1.5
 ]
 
x0 = [1,1,1]
result = fsolve(f,x0)
 
print("===================")
print()
print("求解函数名称:",fsolve.__name__)
print("解:",result)
print("各向量值:",f(result))
#拟合函数来求解
h = leastsq(f,x0)
 
print("===================")
print()
print("求解函数名称:",leastsq.__name__)
print("解:",h[0])
print("各向量的值:",f(h[0]))

结果:

===================


求解函数名称: fsolve
解: [-0.70622057 -0.6        -2.5       ]
各向量值: [0.0, -9.126033262418787e-14, 5.329070518200751e-15]
===================


求解函数名称: leastsq
解: [-0.70622057 -0.6        -2.5       ]
各向量的值: [0.0, -2.220446049250313e-16, 0.0]

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

python tkinter组件摆放方式详解

python tkinter组件摆放方式详解

1.最小界面组成 # 导入tkinter模块 import tkinter # 创建主窗口对象 root = tkinter.Tk() # 设置窗口大小(最小值:像素) root.m...

详解Python logging调用Logger.info方法的处理过程

详解Python logging调用Logger.info方法的处理过程

本次分析一下Logger.info的流程 1. Logger.info源码: def info(self, msg, *args, **kwargs): """ Log...

tensorflow1.0学习之模型的保存与恢复(Saver)

将训练好的模型参数保存起来,以便以后进行验证或测试,这是我们经常要做的事情。tf里面提供模型保存的是tf.train.Saver()模块。 模型保存,先要创建一个Saver对象:如...

Python3 批量扫描端口的例子

用法 本脚本用于批量扫描端口 1.在同目录下创建输入文件,属性inputFile为输入文件名 2.属性th为线程数 3.属性port为探测的目标端口 4.属性arg为默认的命令 不推荐...

梯度下降法介绍及利用Python实现的方法示例

梯度下降法介绍及利用Python实现的方法示例

本文主要给大家介绍了梯度下降法及利用Python实现的相关内容,分享出来供大家参考学习,下面话不多说,来一起看看详细的介绍吧。 梯度下降法介绍 梯度下降法(gradient descen...