ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Sympy解方程-求极限-微分-积分-矩阵运算

2020-09-10 12:00:21  阅读:361  来源: 互联网

标签:10 cos print 矩阵 integrate sympy 解方程 Sympy 表达式


简介

Sympy是一个Python的科学计算库,用一套强大的符号计算体系完成诸如多项式求值、求极限、解方程、求积分、微分方程、级数展开、矩阵运算等等计算问题。虽然Matlab的类似科学计算能力也很强大,但是Python以其语法简单、易上手、异常丰富的三方库生态,个人认为可以更优雅地解决日常遇到的各种计算问题。

目录

1.解方程组solve()
2.求极限limit()
3.微分(导数)diff()
4.积分
  4-1.定积分integrate()
  4-2.求不定积分integrate(),dsolve()
5.序列sequence()
6.矩阵Matrix()
7.其他

0.准备工作

from sympy import *

1.解方程组solve()

 
# 申明未知数变量
x,y = symbols('x y')
# 定义方程组和要求解的未知数,并求解
# 传入: [函数表达式1,函数表达式12,...],[变量1,变量2,...]
result = solve([Eq(y,1-x),Eq(3*x+2*y,5)],[x,y])
print(result)
{x: 3, y: -2}

2.求极限limit()

 
n = Symbol('n')
print(limit(((n+3)/(n+2))**n, n, oo))
E

3.微分(导数)diff()

 
x = symbols('x')
f = x**2 + 2*x + 1 # 定义函数f(x)
f

\displaystyle x^{2} + 2 x + 1

diff(f,x,1)  # 函数f(x)对x求1次导

\displaystyle 2 x + 2

4.积分

4-1.定积分integrate()

 
x,t = symbols('x t')
# 传入: 函数表达式,(积分变量,积分下限,上限)
fx = integrate(sin(t)/(pi-t),(t,0,x))
s = integrate(fx,(x,0,pi))
print(s)
fx
2

\displaystyle \operatorname{Si}{\left(x - \pi \right)} + \operatorname{Si}{\left(\pi \right)}

4-2.求不定积分integrate(),dsolve()

 
x = Symbol('x')
# 传入: 函数表达式,积分变量
s = integrate(E**x + 2*x,x)
s

\displaystyle x^{2} + e^{x}

f = Function('f')
eq1 = Eq(Derivative(f(x),x),x*cos(x))
pprint(eq1)
y = dsolve(eq1,f(x))
pprint(y)
integrate(eq1)
d                  
──(f(x)) = x⋅cos(x)
dx                 
f(x) = C₁ + x⋅sin(x) + cos(x)

\displaystyle f{\left(x \right)} = x \sin{\left(x \right)} + \cos{\left(x \right)}

5.序列sequence()

s = sequence(x, (x, 1, 10))
print(list(s))
print(summation(s.formula, (x, s.start, s.stop)))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
55

6.矩阵Matrix()

 
M = Matrix([[1, 2], [3, 4], [0, 3]])
N = Matrix([2, 2])
M*N

\displaystyle \left[\begin{matrix}6\\14\\6\end{matrix}\right]

7.杂项

'''1.常用的sympy内置符号'''
I   # 1-1.虚数单位i
E   # 1-2.自然对数的底e
oo  # 1-3.无穷大oo
pi  # 1-4.圆周率pi
'''2.sympy的初等运算:加+减-乘*除/,次方开方,对数,阶乘,三角函数,表达式求值'''
# 2-1.次方开方
2**3      # eg:2的3次方
8**(1/3)  # eg:8开3次方
# 2-2.求对数log()
log(1000,10)  # eg:以10为底1000的对数
log(E)  # eg:自然对数
# 2-3.阶乘
factorial(4)
# 2-4.三角函数
sin(pi)  # 以sin函数为例
# 2-5.表达式与表达式求值
x,y = symbols('x y')
f = 2*x + y
f.evalf(subs={x:1,y:2})
f.subs({x:1,y:2})
# 2-6计算求和式summation()
n = Symbol('n',integer = True)
summation(2 * n,(n,1,100))
# 2-7.表达式等于
Eq(3*x+2*y,5)
# 2-8.处理有理数的Rational
r1 = Rational(1/10)
r2 = Rational(1/10)
r3 = Rational(1/10)
val = (r1 + r2 + r3) * 3
print(val.evalf())
print((1/10 + 1/10 + 1/10) * 3)  # 没有有理化会存在小错误
# 级数展开
cos(x).series(x, 0, 10)
'''3.其他'''
# 打印美化pprint()
pprint(E**x + 2*x)
# 转换位Latex公式
x,y,z = symbols('x y z')
print(latex(x**2+y/1+z))
# 扩展代数表达式
expand((x + 1) ** 2)
#  简化表达式
simplify((x**2-x-6)/(x**2-3*x))
# 比较表达式
a = cos(x)**2 - sin(x)**2
b = cos(2*x)
a.equals(b)
0.900000000000000
0.9000000000000001
       x
2⋅x + ℯ 
x^{2} + y + z
True

[参考]

1.更多实例:https://github.com/sympy/sympy/wiki/Quick-examples
2.官方github:https://github.com/sympy
3.官网:https://www.sympy.org/en/index.html

[至此完结] Andy:2020-09-10 Q597966823

标签:10,cos,print,矩阵,integrate,sympy,解方程,Sympy,表达式
来源: https://www.cnblogs.com/AndyWong/p/13644878.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有