简介

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

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

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

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

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

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)

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

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

Sympy解方程-求极限-微分-积分-矩阵运算的更多相关文章

  1. SymPy解方程的实现

    https://www.cnblogs.com/zgyc/p/6277562.html SymPy完全是用Python写的,并不需要外部的库 原理: 单纯用语言内置的运算与变量解决的是,由值求结果.如 ...

  2. [置顶] hdu 4418 高斯消元解方程求期望

    题意:  一个人在一条线段来回走(遇到线段端点就转变方向),现在他从起点出发,并有一个初始方向, 每次都可以走1, 2, 3 ..... m步,都有对应着一个概率.问你他走到终点的概率 思路: 方向问 ...

  3. 解方程求PH值,POJ(2006)

    题目链接:http://poj.org/problem?id=2006 解题报告: 题意看了半天,没看懂,再加上化学没学好,更加让我头痛. 假设1L溶解了x摩尔的酸:ka=m*x*nx/ori-x; ...

  4. 5.5Python数据处理篇之Sympy系列(五)---解方程

    目录 目录 前言 (一)求解多元一次方程-solve() 1.说明: 2.源代码: 3.输出: (二)解线性方程组-linsolve() 1.说明: 2.源代码: 3.输出: (三)解非线性方程组-n ...

  5. python 解方程

    [怪毛匠子=整理] SymPy 库 安装 sudo pip install sympy x = Symbol('x') 解方程 solve([2 * x - y - 3, 3 * x + y - 7] ...

  6. 用Python解方程

    一元一次方程 例题1: 这是北师大版小学六年级上册课本95页的一道解方程练习题: 大家可以先口算一下,这道题里面的x的值为200 接下来我们用python来实现,代码如下,每一句代码后面都写有解释语: ...

  7. 有限差分法(Finite Difference Method)解方程:边界和内部结点的控制方程

    FDM解常微分方程 问题描述 \[\frac{d^2\phi}{dx^2}=S_{\phi} \tag{1} \] 这是二阶常微分方程(second-order Ordinary Differenti ...

  8. vijos P1915 解方程 加强版

    背景 B酱为NOIP 2014出了一道有趣的题目, 可是在NOIP现场, B酱发现数据规模给错了, 他很伤心, 哭得很可怜..... 为了安慰可怜的B酱, vijos刻意挂出来了真实的题目! 描述 已 ...

  9. HDU 4793 Collision --解方程

    题意: 给一个圆盘,圆心为(0,0),半径为Rm, 然后给一个圆形区域,圆心同此圆盘,半径为R(R>Rm),一枚硬币(圆形),圆心为(x,y),半径为r,一定在圆形区域外面,速度向量为(vx,v ...

随机推荐

  1. Web测试转App测试不看不知道

    Web测试 Web通常指的是互联网应用系统,比如税务电子化征管档案系统.金融数据平台.餐饮商家管理后台等等,其实质是C/S的程序. C是Client--客户端,S是Server--服务器. Web中的 ...

  2. 数据结构C++实现邻接矩阵存储图

    定义邻接矩阵存储的图类.[实验要求] 1. 创建一个邻接矩阵存储的图: 2. 返回图中指定边的权值: 3. 查找图中某顶点的第一个邻接顶点.某顶点关于另一个顶点的下一个邻接顶点序号: 4. 图的深度优 ...

  3. 2018-04-19:innodb和myisam区别

    福哥答案2020-04-19:

  4. C#LeetCode刷题之#453-最小移动次数使数组元素相等(Minimum Moves to Equal Array Elements)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3877 访问. 给定一个长度为 n 的非空整数数组,找到让数组所有 ...

  5. C#LeetCode刷题之#766-托普利茨矩阵(Toeplitz Matrix)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3748 访问. 如果一个矩阵的每一方向由左上到右下的对角线上具有相 ...

  6. 关于java中jdk的环境变量配置

    关于java中jdk的环境变量配置 烦死人,在网上找了很长时间.最终找到了一个方法!现在将其总结帮助后来人. 方法/步骤   1 下载好jdk,并按照提示一步步安装,最后记下jdk所在的安装位置,这里 ...

  7. 《MySQL必知必会》简介、使用

    2.MySQL简介 2.1 什么是MySQL 我们在前一-章中介绍了数据库和SQL.正如所述,数据的所有存储. 检索.管理和处理实际上是由数据库软件一 DBMS (数据库管理系统) 完成的. MySQ ...

  8. Nmap在实战中的高级用法(详解)

    @ 目录 Nmap在实战中的高级用法(详解) Nmap简单的扫描方式: 一.Nmap高级选项 1.查看本地路由与接口 2.指定网口与IP地址 3.定制探测包 二.Nmap扫描防火墙 1.SYN扫描 2 ...

  9. Scala中的isInstanceOf和asInstanceOf区别

    判断对象是否属于某个给定的类,可以用isInstanceOf方法:用asInstanceOf方法将引用转换为子类的引用. obj.isInstanceOf[T]就如同Java的obj instance ...

  10. J20航模遥控器开源项目系列教程(一)制作教程 | 基础版V1.0发布,从0到1

    我们的开源宗旨:自由 协调 开放 合作 共享 拥抱开源,丰富国内开源生态,开展多人运动,欢迎加入我们哈~ 和一群志同道合的人,做自己所热爱的事! 项目开源地址:https://github.com/C ...