python牛顿法解非线性方程组_利用python求非线性方程
最近在做的东西中有一件任务,相当于一个函数已知y来求x,网上找了各种办法最终得以实现。在此说明方法,并记录一些坑。
要求的函数比如:*log(x) - log(1-x) + 2.2 * (1 -2x) *
最好用的方法,利用Scipy.optimize中的fsolve函数。
在该方法中,我们可以调用scipy.optimize.fsolve来求解非线性方程(组),具体方法如下:
from scipy.optimize import fsolve
import numpy as np
# 按格式要求定义我们需要求的函数
def f(x):
return np.log(x) -np.log(1-x) + 2.2*(1-2x)
# 调用fsolve函数
sol_fsolve = fsolve(f, [0.1, 0.9]) # 第一个参数为我们需要求解的方程,第二个参数为方程解的估计值
print(sol_fsolve)
[0.17071517 0.82928483]
# 输入两个解意味着根据你的估计值来进行梯度下降等算法找到的方程解。解的值域为(0,1),因此我估计为[0.1, 0.9]从而让函数从两边开始梯度下降,找到左右两个解
# 其实该方程有三个解,只是我不需要中间值的解,因此从左右两端估计
手动实现牛顿迭代法
牛顿迭代法是求非线性方程常用方法之一,具体原理如下:
随后,附上python实现代码:
from sympy import *
x = symbols('x')
f = log(x) - log(1-x) +2.2*(1 - 2*x)
t = 0.01 # x每次的替代值
f1 = f.subs(x, t) # 表示t赋值给x
while abs(f1) > 0.0001: #我们设定的精度
dify = diff(f, x) # f对x求导
dify = dify.subs(x, t)
t = t - f1/dify
f1 = f.subs(x, t)
print('x=', x)
注:该方法只能找到你首次赋值t进行牛顿法的第一个解,要得到其余解还需自行调整t值
第三种方法失败的,用sympy
网上看到人说sympy求方程很好用,用了sympy.solve 以及sympy.solveset均发生错误,貌似是该函数无法解决非线性方程。
该包具体怎么用来实现求解非线性方程还没深究,也许以后会补上。
python牛顿法解非线性方程组_利用python求非线性方程相关推荐
- python牛顿法解非线性方程组_用牛顿迭代法解非线性方程组
题目: 用牛顿迭代法解非线性方程组 有两个非线性方程,未知数是x1,x2: (15x1+10x2)/[(40-30x1-10x2)^2×(15-15x1)]=5e-4; (15x1+10x2)/[(4 ...
- python牛顿法解非线性方程组_萌新请教牛顿法求解三元非线性方程组
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 请问牛顿迭代法求解三元非线性方程组,不同迭代初值貌似有很多不同结果,如何求解到满足要求的解,0 FindRoot[{-6.565159793181527` ...
- python牛顿法解非线性方程组_科学网—求解多元非线性方程组F(x)=0的Newton-Raphson方法及其MATLAB实现 - 王福昌的博文...
科学网对公式支持不太好,在博客园有相同博文 牛顿迭代法可以推广到多元非线性方程组 $boldsymbol{F}(boldsymbol{x})=boldsymbol{0}$的情况,称为牛顿-- 拉夫逊方 ...
- python牛顿法解非线性方程组_牛顿迭代法解非线性方程组(MATLAB版)
牛顿迭代法,又名切线法,这里不详细介绍,简单说明每一次牛顿迭代的运算:首先将各个方程式在一个根的估计值处线性化(泰勒展开式忽略高阶余项),然后求解线性化后的方程组,最后再更新根的估计值.下面以求解最简 ...
- python牛顿法解非线性方程组_matlab实现牛顿迭代法求解非线性方程组.pdf
matlab实现牛顿迭代法求解非线性方程组.pdf matlab 实现牛顿迭代法求解非线性方程组实现牛顿迭代法求解非线性方程组 已知非线性方程组如下 3*x1-cosx2*x3-1/20 x12-81 ...
- matlab牛顿法解非线性方程组,matlab实现牛顿迭代法求解非线性方程组.pdf
资源描述 matlab 实现牛顿迭代法求解非线性方程组实现牛顿迭代法求解非线性方程组 已知非线性方程组如下 3*x1-cos(x2*x3)-1/2=0 x1^2-81*(x2+0.1)^2+sin(x ...
- python怎么去掉视频字幕_利用Python实现字幕挂载(把字幕文件与视频合并)思路详解...
其实超简单超简单!python好现成的库,一下子省略了好多步骤! 本文在Windows环境下!linux只是不需要手动输入imagicmagick的位置! 需要用到的环境 python(基本上只要不是 ...
- python 物理学中的应用_利用python求解物理学中的双弹簧质能系统详解
前言 本文主要给大家介绍了关于利用python求解物理学中双弹簧质能系统的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 物理的模型如下: 在这个系统里有两个物体,它们的质 ...
- python beautifulsoup抓取网页内容_利用Python和Beautiful Soup抓取网页内容
利用Python和Beautiful Soup抓取网页内容 Posted on 2012-08-09 00:08 SamWei 阅读(381) 评论(1) 编辑 收藏 Python 3中提供了url打 ...
最新文章
- 人工智能会被赋予人性么?
- vue中一个组件导入另一个组件
- 逆袭之旅DAY17.东软实训.Oracle.存储过程
- 大型监控网络系统如何规划ip地址?
- 河北地质大学硕士专业介绍:计算机类
- 人工机器:jetsonnano推理时出现 Segmentation fault(core dumped)
- 在网上看到和篇关于sql server 2005的性能优化篇,觉得写得很好。
- sqlitestudio和mysql_SQLiteStudio优雅调试Android手机数据库Sqlite(推荐)
- mysql 账号安全_MySQL账号安全设置
- mysql添加序列触发器_在Oracle中创建自增序列之触发器
- MAC下 安装sqlmap教程
- 将高德坐标拾取工具放入Element UI 对话框
- 捷宇高拍仪XY530 网页集成总结
- 矩阵相乘取共轭_共轭矩阵
- 内存数据库及技术选型
- 正则表达式(判断中文,判断英文字母、下划线、数字)
- HBuiilderX代码美化插件format(即js-beautify)配置文件
- Django Model 定义语法
- android apk对遥控器支持,Android中关于APK对遥控器支持的修改
- 为什么只看重结果_不要只看重结果 过程也是美丽的