首页 > 编程语言 >Python SciPy库

Python SciPy库

时间:2024-04-06 23:32:02浏览次数:32  
标签:None 01 Python fsolve 00 scipy print SciPy

SciPy库为Python提供了科学计算的基本算法

基本操作

求解非线性方程(组)

scipy.optimize模块的fsolve和root可求非线性方程(组)的解

fsolve或root求解非线性方程组时,先把非线性方程组写成 F(x)=0 这样的形式,其中,x为向量,F(x)为向量函数

scipy.optimize.fsolve

(funcx0args()fprime=Nonefull_output=0col_deriv=0xtol=1.49012e08maxfev=0

band=Noneepsfcn=Nonefactor=100diag=None)

scipy.optimize.root

(funx0args()method='hybr'jac=Nonetol=Nonecallback=Noneoptions=None)

其中,fun为函数,x0为猜测值

例1

from scipy.optimize import fsolve, root

fx = lambda x: x ** 980 - 5.01 * x ** 979 + 7.398 * x ** 978 \
               - 3.388 * x ** 977 - x ** 3 + 5.01 * x ** 2 - 7.398 * x + 3.388
x1 = fsolve(fx, 1.5, maxfev=4000)  # 函数调用4000次
x2 = root(fx, 1.5)
print(x1, '\n')
print(x2)
'''
输出:
[1.21] 

 message: The solution converged.
 success: True
  status: 1
     fun: [-1.235e+69]
       x: [ 1.210e+00]
    nfev: 319
    fjac: [[-1.000e+00]]
       r: [ 2.542e+80]
     qtf: [ 2.002e+72]
'''

例2

rom scipy.optimize import fsolve, root

fx = lambda x: [x[0] ** 2 + x[1] ** 2 - 1, x[0] - x[1]]
s1 = fsolve(fx, [1, 1])
s2 = root(fx, [1, 1])
print(s1, '\n')
print('s2=', s2)
'''
[0.70710678 0.70710678] 
 
s2=  message: The solution converged.
 success: True
  status: 1
     fun: [ 4.441e-16  0.000e+00]
       x: [ 7.071e-01  7.071e-01]
    nfev: 9
    fjac: [[-8.165e-01 -5.773e-01]
           [ 5.773e-01 -8.165e-01]]
       r: [-1.732e+00 -5.774e-01  1.633e+00]
     qtf: [-3.646e-10  2.578e-10]
'''

积分

scipy.integrate模块提供了多种积分模式,主要是对给定函数或离散点的数值积分

例3

from scipy.integrate import quad


def fun46(x, a, b):
    return a * x ** 2 + b * x


I1 = quad(fun46, 0, 1, args=(2, 1))  # 0, 1是积分上下限;args=(2, 1)是参数a,b的值
I2 = quad(fun46, 0, 1, args=(2, 10))
print('I1=', I1)
print('I2=', I2)
'''
I1= (1.1666666666666665, 1.2952601953960159e-14)
I2= (5.666666666666667, 6.291263806209221e-14)
'''

最小二乘解


调用形式:

from scipy.optimize import least_squares

least_square(fun,x0)

其中fun是定义向量函数 的匿名函数的返回值,x0为x的初始值

最大模特征值及对应的特征向量

例4

from scipy.sparse.linalg import eigs
import numpy as np

a = np.array([[1, 2, 3], [2, 1, 3], [3, 3, 6]], dtype=float) 
b, c = np.linalg.eig(a)
d, e = eigs(a, 1)
print('特征值为', b)  
print('特征向量为', c)
print('最大模特征值为:', d)
print('对应的特征向量为:\n', e)
'''
特征值为 [ 9.0000000e+00 -1.0000000e+00  1.8525281e-16]
特征向量为 [[-4.08248290e-01 -7.07106781e-01 -5.77350269e-01]
 [-4.08248290e-01  7.07106781e-01 -5.77350269e-01]
 [-8.16496581e-01 -2.70689541e-16  5.77350269e-01]]
最大模特征值为: [9.+0.j]
对应的特征向量为:
 [[0.40824829+0.j]
 [0.40824829+0.j]
 [0.81649658+0.j]]
'''

标签:None,01,Python,fsolve,00,scipy,print,SciPy
From: https://blog.csdn.net/weixin_73042028/article/details/137259703

相关文章

  • 环境配置——已解决ModuleNotFoundError: No module named ‘cv2’(python)
    一、报错代码在网上搜到不少用Python处理图形的代码,于是复制别人的代码直接运行却报错,得到的结果却是:已解决ModuleNotFoundError:Nomodulenamed‘cv2’。(当时心里瞬间凉了一大截,最后顺利解决了,顺便记录一下希望可以帮助到更多遇到这个bug不会解决的小伙伴),代码如下:impor......
  • 环境配置——python代码打包超详细教程
    在Python开发的过程中我们经常会需要将自己的代码打包成一个可执行文件,方便将代码分享给其他人使用,下面这篇文章主要给大家介绍了关于python代码打包的相关资料,需要的朋友可以参考下一、前言网上的文章对小白都不太友好呀,讲得都比较高大上,本文章就用最简单的方式来教会......
  • 自学Python day 9
    #定义一个list列表my_list=[["gi","ik","ww"],["222"]]print(my_list)#复合列表的取出方法print(my_list[0][2])#下标索引my_list=["A","B","C"]print(my_list[2])print(my_list[-3])#通过下标索引不能超......
  • Python列表
    列表列表是Python中最基本的数据结构。列表中的每个元素都分配一个数字------即当前数据的位置,或索引,第一个索引是0,第二个索引是1,以此类推。列表是Python中内置有序、可变序列,列表的所有元素放在一对中括号“[]”中,并使用逗号分隔开;当列表元素增加或删除时,列表对象自动进行扩展......
  • 【Python基础】集合
    文章目录@[toc]什么是集合集合的特点元素不重复性示例无序性示例集合操作增加元素add()方法删除元素clear()方法pop()方法remove()方法交集intersection()方法&符号isdisjoint()方法并集union()方法|符号差集difference()方法-符号对称差集symmetric_difference(......
  • Python实战:Python人脸识别
    1.引言人脸识别是一种计算机视觉技术,它可以帮助我们识别和验证人脸。随着技术的不断进步,人脸识别已经广泛应用于安全监控、智能门禁、身份验证等场景。通过Python实现一个人脸识别项目,我们可以加深对编程语言的理解,同时也能够体会到编程带来的便利。2.环境准备在开始......
  • Python 基于列表实现的通讯录管理系统(有完整源码)
    目录通讯录管理系统PersonInformation类ContactList类menu函数main函数程序的运行流程完整代码运行示例通讯录管理系统这是一个基于文本的界面程序,用户可以通过命令行与之交互,它使用了CSV文件来存储和读取联系人信息,这使得数据可以持久化保存。此外,程序还提供了一......
  • 【Python基础】Python简介
    Python简介python源程序的基本概念python源程序是一个文本文件,可以在任意文本编辑器做python开发python程序扩展名通常是.pyprint("hellopython")print("初识python")print()函数简介:通过解释器的方式,将内容输入到console中认识错误(BUG)编写的程序不......
  • 【Python基础】条件语句
    条件语句开发中应用的场景未成年人禁止入内请您配合二次安检程序中的判断a=1a=2方形圆角条......
  • Python实战:使用Python进行Faces聚类
    1.引言Faces聚类是一种基于人脸图像的聚类算法,它可以将相似的人脸图像分组在一起,从而实现对大规模人脸图像库的分类和识别。通过Python实现Faces聚类,我们可以加深对编程语言的理解,同时也能够体会到编程带来的便利。2.环境准备在开始编写Faces聚类系统之前,我们需......