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 25 Python
使用Anaconda3建立虚拟独立的python2.7环境方法
Jun 11 Python
Python面向对象之接口、抽象类与多态详解
Aug 27 Python
python调用百度语音识别api
Aug 30 Python
python读取几个G的csv文件方法
Jan 07 Python
Python Celery多队列配置代码实例
Nov 22 Python
Python连接字符串过程详解
Jan 06 Python
Python数据可视化处理库PyEcharts柱状图,饼图,线性图,词云图常用实例详解
Feb 10 Python
理解Django 中Call Stack机制的小Demo
Sep 01 Python
如何使用Django Admin管理后台导入CSV
Nov 06 Python
Django-simple-captcha验证码包使用方法详解
Nov 28 Python
总结python多进程multiprocessing的相关知识
Jun 29 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开发环境配置记录
2011/01/14 PHP
Nginx+php配置文件及原理解析
2020/12/09 PHP
Avengerls vs KG BO3 第三场2.18
2021/03/10 DOTA
把textarea中字符串里含有的回车换行替换成<br>的javascript代码
2007/04/20 Javascript
用jquery设置按钮的disabled属性的实现代码
2010/11/28 Javascript
javascript开发技术大全-第1章javascript概述
2011/07/03 Javascript
jsTree 基于JQuery的排序节点 Bug
2011/07/26 Javascript
精心挑选的15款优秀jQuery 本特效插件和教程
2012/08/06 Javascript
jquery实现图片左右间隔滚动特效(可自动播放)
2013/05/08 Javascript
jquery 中的each()跳出循环的语句
2014/05/23 Javascript
js中的如何定位固定层的位置
2014/06/15 Javascript
javascript等号运算符使用详解
2015/04/16 Javascript
Bootstrap轮播加上css3动画,炫酷到底!
2015/12/22 Javascript
jquery实现tab键进行选择后enter键触发click行为
2017/03/29 jQuery
微信小程序开发的基本流程步骤
2019/01/31 Javascript
微信小程序云开发之使用云数据库
2019/05/17 Javascript
微信小程序点击item使之滚动到屏幕中间位置
2020/03/25 Javascript
vue实现导航菜单和编辑文本的示例代码
2020/07/04 Javascript
python 数据加密代码
2008/12/24 Python
Python实现方便使用的级联进度信息实例
2015/05/05 Python
Python爬虫:通过关键字爬取百度图片
2017/02/17 Python
解决Pycharm中import时无法识别自己写的程序方法
2018/05/18 Python
Python aiohttp百万并发极限测试实例分析
2019/10/26 Python
如何在python中实现随机选择
2019/11/02 Python
Python计算机视觉里的IOU计算实例
2020/01/17 Python
Tensorflow 卷积的梯度反向传播过程
2020/02/10 Python
pytorch加载语音类自定义数据集的方法教程
2020/11/10 Python
教师年终个人自我评价
2013/10/04 职场文书
学习新党章思想汇报
2014/01/09 职场文书
一年级数学教学反思
2014/02/01 职场文书
社区交通安全实施方案
2014/03/22 职场文书
五一劳动节活动记录
2014/03/23 职场文书
2015年家长学校工作总结
2015/04/22 职场文书
忠诚与背叛观后感
2015/06/04 职场文书
Python实战之实现简易的学生选课系统
2021/05/25 Python
Windows Server 2012配置DNS服务器的方法
2022/04/29 Servers