python学习(十一)----scipy的用法

一、SciPy求函数积分

1、已知函数型求积分
一般情况
在这里插入图片描述

from scipy import integrate
import numpy as np
def f(x):
    return x + 1
v , err =integrate.quad(f, -1, 1)
print(format(v, ".2f")) # 保留两位小数

遇到未知的参数的函数
在这里插入图片描述

from scipy import integrate
import numpy as np
def f(x, a, b):
    return a * x + b
v , err =integrate.quad(f, -1, 1, args=(-1,1))
print(format(v, ".2f"))   # 保留两位小数

遇到有断点的函数
在这里插入图片描述

from scipy import integrate
import numpy as np
def f(x):
    return 1 / np.sqrt(abs(x))
v , err =integrate.quad(f, -1, 1, points=[0])
print(format(v, ".2f"))  # 保留两位小数

2、给出点集的积分
在这里插入图片描述

from scipy import integrate
import numpy as np
def f(x):
    return np.sqrt(x)
x = np.linspace(0, 2, 10)
y = f(x)
v =integrate.trapz(y,x)
print(format(v, ".2f"))   # 保留两位小数

3、多重积分
二重积分:
在这里插入图片描述

from scipy import integrate
import numpy as np
def f(x,y):
    return x*y
def h(x):
    return x
v, err = integrate.dblquad(f,1,2,1,h)
# 第二个参数开始分别对应积分从左到右的积分下限到下限
print(format(v, ".2f"))   # 保留两位小数

三重积分:
在这里插入图片描述
模板:

from scipy import integrate
import numpy as np
# 被积函数
def f(x,y,z):
    return   
def g(x):
    return 
def h(x):
    return
def r(x,y):
    return 
def q(x,y):
    return 
v, err = integrate.tplquad(f, a, b, g, h, q, r)
# 第二个参数开始分别对应积分从左到右的积分下限到下限
print(format(v, ".2f"))   # 保留两位小数

4,总结:

integrate.quad(f, a, b)   # 一重积分
integrate.trapz(f, a, b)    # 离散点积分
integrate.dblquad(f, a, b, c, d)     # 二重积分
integrate.tplquad(f, a, b, c, d)     # 三重积分

二、SciPy求函数导数

1、求F(x ) 求其在X0的导数即F′(X0)

from scipy.misc import derivative
def f(x):
    return x**5
# i 代表每次求导后代入导数的x0
for i in  range(5):
    print(derivative(f, i, n = 2))  # n 代表求的几阶导数

2、将求导式子打印出来
使用sympy模块里的diff和symbols函数。diff函数可以得到F(x )的导数表达式F′(x ),而sympy的symbols函数表示数学表达式里数学符号设定

from sympy import diff, symbols
t =symbols('x', real=True)
for i in range(1, 4):
    # 代表对t求i阶导数
    print(diff(t**5, t, i))
    # 代表当t=i时的导数值
    print(diff(t**5, t, i).subs(t, i), i)

3、使用numpy模块里的函数也可实现求函数的导数。

import numpy as np
# p代表构造的多项式,内部的列表代表多项式的系数
# 等于 x^5+2^4+3^2+5
p = np.poly1d([1, 2, 0, 3, 0,  5])
print(p)
# 第一种求导方式
for i in range(1, 4):
     print(np.polyder(p, i))        # 代表对p求i阶导
     print(np.polyder(p, i)(1.0))   # 表示对p求i阶导数后,自变量求1后的值
# 第二种求导方式
for i in range(1, 4):
    print(p.deriv(i))
    print(p.deriv(i)(1.0))

运行结果为:
在这里插入图片描述
更多求导方法见求导大全

三、求极限

实例代码如下:

import sympy
x = sympy.symbols('x')
def f(x):
    return (sympy.sin(x))/x
lim1 = sympy.limit(f(x), x, 0)
lim2 = sympy.limit(f(x), x, sympy.oo)
print(lim1)    # x->0时 f(x)的结果
print(lim2)    # x->oo时 f(x)的结果
  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值