2023年6月29日发(作者:)
Python数值计算Python数值计算数值计算指有效使⽤数字计算机求数学问题近似解的⽅法与过程,以及由相关理论构成的学科。数值计算主要研究如何利⽤计算机更好的解决各种数学问题,包括连续系统离散化和离散形⽅程的求解,并考虑误差、收敛性和稳定性等问题。在科研过程中,我们需要使⽤⼤量使⽤数值计算来帮助研究的顺利进⾏,本⽂将重点介绍如何使⽤Sympy库进⾏常⽤的数值计算。sympy介绍sympy是python的⼀个科学计算库,⽤强⼤的符号计算体系完成诸如多项式求值,求极限,求导,擅长求积分,解微分⽅程,级数展开,矩阵运算等功能。sympy内置符号1. ⾃然对数:sympy.E2. ⽆穷⼤:3. 圆周率π:4. 虚数单位i: sympyimport numpy as npprint(((sympy.E*))) # 2.94sympy内置函数1. 正弦函数(num)2. 对数函数(num)3. 求平⽅根函数(num)4. n次⽅根函数(num,n)5. 求阶乘ial(num)6.
∑求和ion7. 求导(func,x,n)8. 求积分ate(func,(x,a,b))sympy实战求解函数基础案例⼀:import sympyimport numpy as npx = ('x') #
定义⼀个符号,表⽰变量fx = 2*x + 1 #
定义函数表达式(subs={x:2}) #
使⽤evalf函数以传⼊变量的值,对函数表达式进⾏求解# output:5.00基础案例⼆:import sympyimport numpy as npx,y = s('x y') #
同时定义多个符号以表⽰变量f = 2*x + y
(subs={x:2}) # output:2.0x+(subs={x:2,y:1}) # output:5.0#
定义符号的⽅法也可使⽤⽅法from import x,yf2 = 2*x + yprint(f2) # output:2*x + y求极限import sympyx = ('x')f1 = (x**2+2*x-1)/xprint((f1,x,1)) # output:2f2 = (x)/xprint((f2,x,0)) # output:1f3 = (x)/xprint((f3,x,)) # output:0求导数#
为了⽅便观察,我们也可以直接导⼊sympy中的特定函数from sympy import diff,asin,sqrt,sinfrom import x,y #
这也是⼀种定义变量的⽅法f1 = diff(asin(sqrt(sin(x))))print(f1) # output:cos(x)/(2*sqrt(1 - sin(x))*sqrt(sin(x)))#
求⾼阶导数def func(x): #
定义x的函数 return x**3print(diff(func(x),x,2)) # output:6*xprint(diff(func(x),x,2).subs(x,2)) # output:12
在x=2处求导#
多元函数求偏导def func(x,y): #
定义x,y的函数 return x**3+x**2*yprint(diff(func(x,y),x,2)) # output:2*(3*x + y)解⽅程import sympyx = ('x')#
解⽅程:x^2-1 = (x**2 - 1,x) # output:[-1, 1]f = x**2-1print((f,x)) #
也可以将先对⽅程进⾏定义,再进⾏计算#
解⽅程组x,y = s('x y')f1 = x + y - 1f2 = x - y -([f1,f2],[x,y]) # output:{x: 2, y: -1}求积分求定积分import sympyx = ('x')f = 2 * x#
传⼊函数表达式和积分变量、积分下限、上限ate(f,(x,0,1)) # output:1求多重积分∫0∫02tdtdximport sympyt,x = s('t x')f = 2 * tg = ate(f,(t,0,x)) #
分两次积分print(ate(g,(x,0,3))) # output:91/21∫0∫0xydxdy3xF(x,y)=import sympyx, y = s('x y')print(ate(x*y, (x, 0, 1), (y, 0, 1/2))) # 0.0000求不定积分
∫(ex+2x)dximport sympyx = ('x')f = sympy.E ** x + 2 * xprint(ate(f,x)) # output:x**2 + exp(x)求曲线积分
F(x,y)=(x2∗y,y3)沿直线从原点到点(1,1)的积分from sympy import *def curv_integrate(f,c,x,t): g = [] (f[0].subs(x[0],c[0]).subs(x[1],c[1])) (f[1].subs(x[0],c[0]).subs(x[1],c[1])) (diff(c[0],t)) (diff(c[1],t)) (g[0]*g[2]+g[1]*g[3]) return integrate(g[4], t)x = []f = []c = [](Symbol('x'))(Symbol('y'))t = Symbol('t');(x[0]**2*x[1]) #
此处的x[0]为表达式中x,x[1]为表达式中(x[1]**3)
#print(f) # f为积分式(t)(t)#print(c) # c为积分路径,从[0,0]积分到[c[0],c[1]]g = curv_integrate(f,c,x,t) # output:t**4/2print((t,1)-(t,0))
发布者:admin,转转请注明出处:http://www.yc00.com/web/1687976521a62744.html
评论列表(0条)