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实现向QQ群成员自动发邮件的方法
Nov 19 Python
简单谈谈Python流程控制语句
Dec 04 Python
Python调用微信公众平台接口操作示例
Jul 08 Python
Python实现的生成格雷码功能示例
Jan 24 Python
Selenium元素的常用操作方法分析
Aug 10 Python
详解使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件
Aug 23 Python
python程序 创建多线程过程详解
Sep 23 Python
利用python在excel中画图的实现方法
Mar 17 Python
Python GUI编程学习笔记之tkinter中messagebox、filedialog控件用法详解
Mar 30 Python
python调用API接口实现登陆短信验证
May 10 Python
python进行二次方程式计算的实例讲解
Dec 06 Python
给numpy.array增加维度的超简单方法
Jun 02 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实现操作redis的封装类完整实例
2015/11/14 PHP
PHP调试的强悍利器之PHPDBG
2016/02/22 PHP
PHP MVC框架路由学习笔记
2016/03/02 PHP
PHP获取页面执行时间的方法(推荐)
2016/12/10 PHP
JavaScript面向对象程序设计三 原型模式(上)
2011/12/21 Javascript
两种方法实现文本框输入内容提示消失
2013/03/17 Javascript
浅析Js(Jquery)中,字符串与JSON格式互相转换的示例(直接运行实例)
2013/07/09 Javascript
使用Jquery获取带特殊符号的ID 标签的方法
2014/04/30 Javascript
JS 弹出层 定位至屏幕居中示例
2014/05/21 Javascript
javascript日期处理函数,性能优化批处理
2015/09/06 Javascript
js判断图片加载完成后获取图片实际宽高的方法
2016/02/25 Javascript
jQuery实现的网页换肤效果示例
2016/09/20 Javascript
详解jQuery的Cookie插件
2016/11/23 Javascript
使用jquery实现的循环连续可停顿滚动实例
2016/11/23 Javascript
js调用刷新界面的几种方式
2017/05/03 Javascript
mpvue写一个CPASS小程序的示例
2018/09/04 Javascript
Vue slot用法(小结)
2018/10/22 Javascript
JavaScript对象拷贝与赋值操作实例分析
2018/12/10 Javascript
微信公众号H5之微信分享常见错误和问题(小结)
2019/11/14 Javascript
11月编程语言排行榜 Python逆袭C#上升到第4
2017/11/15 Python
浅谈Scrapy网络爬虫框架的工作原理和数据采集
2019/02/07 Python
如何使用Flask-Migrate拓展数据库表结构
2019/07/24 Python
Python 转换文本编码实现解析
2019/08/27 Python
keras 特征图可视化实例(中间层)
2020/01/24 Python
Python编写万花尺图案实例
2021/01/03 Python
CSS3实现大小不一的粒子旋转加载动画
2016/04/21 HTML / CSS
浅谈基于HTML5的在线视频播放方案
2016/02/18 HTML / CSS
HTML5移动端手机网站开发流程
2016/04/25 HTML / CSS
日本最新流行服饰网购:Nissen
2016/07/24 全球购物
介绍一下Make? 为什么使用make
2013/12/08 面试题
教育科学研究生自荐信
2013/10/09 职场文书
民政局副局长民主生活会个人对照检查材料
2014/09/19 职场文书
工作检讨书怎么写
2015/01/23 职场文书
经济纠纷起诉状
2015/05/20 职场文书
InterProcessMutex实现zookeeper分布式锁原理
2022/03/21 Java/Android
【海涛dota】偶遇拉娜娅 质量局德鲁伊第一视角解说
2022/04/01 DOTA