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

 更新时间:2018年11月12日 14:02:36   作者:落叶_小唱  
今天小编就为大家分享一篇python scipy求解非线性方程的方法(fsolve/root),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

使用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嵌入C/C++进行开发详解

    Python嵌入C/C++进行开发详解

    在本篇文章里小编给大家分享了关于Python嵌入C/C++进行开发的相关知识点内容,有兴趣的朋友们可以参考下。
    2020-06-06
  • Tensorflow的常用矩阵生成方式

    Tensorflow的常用矩阵生成方式

    今天小编就为大家分享一篇Tensorflow的常用矩阵生成方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • tensorflow2.0教程之Keras快速入门

    tensorflow2.0教程之Keras快速入门

    这篇文章主要介绍了tensorflow2.0教程之Keras快速入门,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • 解决os.path.isdir() 判断文件夹却返回false的问题

    解决os.path.isdir() 判断文件夹却返回false的问题

    今天小编就为大家分享一篇解决os.path.isdir() 判断文件夹却返回false的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • 使用Pandas实现高效读取筛选csv数据

    使用Pandas实现高效读取筛选csv数据

    在数据分析和数据科学领域中,Pandas 是 Python 中最常用的库之一,本文将介绍如何使用 Pandas 来读取和处理 CSV 格式的数据文件,希望对大家有所帮助
    2024-04-04
  • python库geopandas读取写入空间数据及绘图实例探索

    python库geopandas读取写入空间数据及绘图实例探索

    这篇文章主要为大家介绍了python库geopandas读取写入空间数据及绘图实例探索,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪<BR>
    2024-02-02
  • Python免费验证码识别之ddddocr识别OCR自动库实现

    Python免费验证码识别之ddddocr识别OCR自动库实现

    在Python爬虫过程中,有些网站需要验证码通过后方可进入网页,目的很简单,就是区分是人阅读访问还是机器爬虫,下面这篇文章主要给大家介绍了关于Python免费验证码识别之ddddocr识别OCR自动库实现的相关资料,需要的朋友可以参考下
    2022-02-02
  • python中的classmethod与staticmethod

    python中的classmethod与staticmethod

    这篇文章主要介绍了python中的classmethod与staticmethod,
    2022-01-01
  • python列表字典排序的实现示例

    python列表字典排序的实现示例

    在Python中,对列表字典进行排序是一项常见的任务,本文主要介绍了python列表字典排序的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • 怎么使用python绘制3D瀑布图

    怎么使用python绘制3D瀑布图

    这篇文章主要介绍了怎么使用python绘制3D瀑布图的相关资料,瀑布图是由麦肯锡顾问公司所独创的图表类型,因为形似瀑布流水而称之为瀑布图(Waterfall Plot),文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-09-09

最新评论