python scipy求解非线性方程的方法(fsolve/root)


Posted in Python onNovember 12, 2018

使用scipy.optimize模块的root和fsolve函数进行数值求解线性及非线性方程,下面直接贴上代码,代码很简单

from scipy.integrate import odeint
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import root,fsolve
#plt.rc('text', usetex=True) #使用latex
## 使用scipy.optimize模块的root和fsolve函数进行数值求解方程

## 1、求解f(x)=2*sin(x)-x+1
rangex1 = np.linspace(-2,8)
rangey1_1,rangey1_2 = 2*np.sin(rangex1),rangex1-1
plt.figure(1)
plt.plot(rangex1,rangey1_1,'r',rangex1,rangey1_2,'b--')
plt.title('$2sin(x)$ and $x-1$')

def f1(x):
 return np.sin(x)*2-x+1

sol1_root = root(f1,[2])
sol1_fsolve = fsolve(f1,[2])
plt.scatter(sol1_fsolve,2*np.sin(sol1_fsolve),linewidths=9)
plt.show()

## 2、求解线性方程组{3X1+2X2=3;X1-2X2=5}
def f2(x):
 return np.array([3*x[0]+2*x[1]-3,x[0]-2*x[1]-5])

sol2_root = root(f2,[0,0])
sol2_fsolve = fsolve(f2,[0,0])
print(sol2_fsolve) # [2. -1.5]

a = np.array([[3,2],[1,-2]])
b = np.array([3,5])
x = np.linalg.solve(a,b)
print(x) # [2. -1.5]
## 3、求解非线性方程组
def f3(x):
 return np.array([2*x[0]**2+3*x[1]-3*x[2]**3-7,
     x[0]+4*x[1]**2+8*x[2]-10,
     x[0]-2*x[1]**3-2*x[2]**2+1])

sol3_root = root(f3,[0,0,0])
sol3_fsolve = fsolve(f3,[0,0,0])
print(sol3_fsolve)

## 4、非线性方程
def f4(x):
 return np.array(np.sin(2*x-np.pi)*np.exp(-x/5)-np.sin(x))
init_guess =np.array([[0],[3],[6],[9]])
sol4_root = root(f4,init_guess)
sol4_fsolve = fsolve(f4,init_guess)
print(sol4_fsolve)
t = np.linspace(-2,12,2000)
y1 = np.sin(2*t-np.pi)*np.exp(-t/5)
y2 = np.sin(t)
plt.figure(2)
a , = plt.plot(t,y1,label='$sin(2x-\pi)e^{-x/5}$')
b , = plt.plot(t,y2,label='$sin(x)$')
plt.scatter(sol4_fsolve,np.sin(sol4_fsolve),linewidths=8)
plt.title('$sin(2x-\pi)e^{-x/5}$ and $sin(x)$')
plt.legend()

python scipy求解非线性方程的方法(fsolve/root)

python scipy求解非线性方程的方法(fsolve/root)

以上这篇python scipy求解非线性方程的方法(fsolve/root)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python手机号码归属地查询代码
May 04 Python
windows下Python实现将pdf文件转化为png格式图片的方法
Jul 21 Python
wxPython实现窗口用图片做背景
Apr 25 Python
对pandas中两种数据类型Series和DataFrame的区别详解
Nov 12 Python
python 调用钉钉机器人的方法
Feb 20 Python
python实现图片压缩代码实例
Aug 12 Python
找Python安装目录,设置环境路径以及在命令行运行python脚本实例
Mar 09 Python
浅谈python 调用open()打开文件时路径出错的原因
Jun 05 Python
python如何从键盘获取输入实例
Jun 18 Python
Selenium及python实现滚动操作多种方法
Jul 21 Python
详解Python中import机制
Sep 11 Python
Python 使用xlwt模块将多行多列数据循环写入excel文档的操作
Nov 10 Python
Django-Rest-Framework 权限管理源码浅析(小结)
Nov 12 #Python
使用python将时间转换为指定的格式方法
Nov 12 #Python
pandas 快速处理 date_time 日期格式方法
Nov 12 #Python
python内置数据类型之列表操作
Nov 12 #Python
python pandas读取csv后,获取列标签的方法
Nov 12 #Python
对pandas的行列名更改与数据选择详解
Nov 12 #Python
Python numpy.array()生成相同元素数组的示例
Nov 12 #Python
You might like
php一些公用函数的集合
2008/03/27 PHP
PHP对字符串的递增运算分析
2010/08/08 PHP
全面解读PHP的人气开发框架Laravel
2015/10/15 PHP
php多文件打包下载的实例代码
2017/07/12 PHP
JavaScript 保存数组到Cookie的代码
2010/04/14 Javascript
js修改原型的属性使用介绍
2014/01/26 Javascript
node.js中的querystring.unescape方法使用说明
2014/12/10 Javascript
浅谈Javascript中的Function与Object
2015/01/26 Javascript
基于jQuery实现拖拽图标到回收站并删除功能
2015/11/25 Javascript
JavaScript知识点总结(十一)之js中的Object类详解
2016/05/31 Javascript
JavaScript仿微博发布信息案例
2016/11/16 Javascript
jQuery实现弹出窗口弹出div层的实例代码
2017/01/09 Javascript
jQuery实现扑克正反面翻牌效果
2017/03/10 Javascript
深入探究node之Transform
2017/07/20 Javascript
完美解决手机浏览器顶部下拉出现网页源或刷新的问题
2017/11/30 Javascript
Nuxt.js实战详解
2018/01/18 Javascript
React Form组件的实现封装杂谈
2018/05/07 Javascript
vue-cli和v-charts实现可视化图表过程解析
2019/10/08 Javascript
[03:14]2014DOTA2西雅图国际邀请赛 EG战队巡礼
2014/07/07 DOTA
Python实现的简单万年历例子分享
2014/04/25 Python
自动化Nginx服务器的反向代理的配置方法
2015/06/28 Python
浅谈编码,解码,乱码的问题
2016/12/30 Python
浅谈Python中的zip()与*zip()函数详解
2018/02/24 Python
基于python神经卷积网络的人脸识别
2018/05/24 Python
Python 读取用户指令和格式化打印实现解析
2019/09/02 Python
Pycharm+Python+PyQt5使用详解
2019/09/25 Python
Python二元算术运算常用方法解析
2020/09/15 Python
如何用python爬取微博热搜数据并保存
2021/02/20 Python
海量信息软件测试笔试题
2015/08/08 面试题
实习求职信
2013/12/01 职场文书
感恩节活动方案
2014/01/27 职场文书
护士毕业生自荐信
2014/02/07 职场文书
基层党员四风问题自我剖析材料
2014/09/29 职场文书
小学四年级作文之写景
2019/08/23 职场文书
导游词之神仙居景区
2019/11/15 职场文书
Python机器学习三大件之一numpy
2021/05/10 Python