sympy是什么?Sympy是一个数学符号库(sym代表了symbol,符号),包括了积分,微分方程等各种数学运算方法,为python提供了强大的数学运算支持。对于图像来说,虽然都是做离散的计算,操作最多的还是numpy里的数组,但实际上,这个库包含了积分微分,三角等最基本的数学运算,可以说是工科最基本的,用起来媲美matlab。

--摘自网络

什么是基于符号的计算(符号求解)?

在高数学习中,甚至在工作中,都会面临计算基本微积分的问题。可能你会想,只要写个程序,运用极限法思想,全部都用双精度浮点数就能八九不离十的解出来。但是请看下面:

>>> import sympy, math

>>> math.sqrt(2) ** 2

2.0000000000000004

>>> sympy.sqrt(2) ** 2

2x**2表示

,sqrt(x)表示

为什么用sympy的计算结果貌似要比math单纯浮点计算后误差小很多,或者说基本没有?

>>> x = sympy.Symbol('x')

>>> sympy.sqrt(x) ** 2

x

>>> sympy.sqrt(8)

2*sqrt(2)

因为sympy的计算本质是符号计算,也就是它先计算

,sympy先将其化简为

,在代入求值。

sympy安装

sudo pip install sympy 或者 sudo pip3 install sympy

如果你用anaconda则 conda install sympy

Let's get started!

首先我们从sympy包中导入所有内建函数

from __future__ import division

#如果你用的python2,请加上上面这句话导入python3的除法

#将Python2的除法操作符“/”从整数除法改为普通除法

from sympy import *

x = Symbol('x')

y = Symbol('y')

z = Symbol('z')

a = Symbol('a')

b = Symbol('b')

c = Symbol('c')

# 等同于 x, y, z, a, b, c = symbols('x, y, z, a, b, c')

# 建议用下面这种表达,因为一个一个导入符号实在是太麻烦了。

f = (2/3)*x**2 + (1/3)*x**2 + x + x + 1

simplify表达式化简

f.simplify()

print(f)

结果:

x**2 + 2*x + 1

对,就是这么简单。

expand表达式展开

>>> f = (x+1)**2

>>> print(expand(f))

x**2 + 2*x + 1

solve方程自动求解

f1 = 2*x - y + z - 10

f2 = 3*x + 2*y - z - 16

f3 = x + 6*y - z - 28

print(solve([f1, f2, f3]))

结果:

{x: 46/11, z: 74/11, y: 56/11}

limit求极限

首先,limit可以作为普通的代入化简求值方法。比如

代入,得到

f = (x+1)**2 + 1

print(limit(f, x, a-1))

结果:a**2 + 1

>>> f = sin(x)/x

>>> print(limit(f, x, 0)) # 输入三个值,函数,自变量,自变量取值

1

从负方向逼近,dir可以取'+' 或者 '-'

>>> print(limit(f, x, 0, dir='-'))

1

f = cos(x)

dx = Symbol('dx')

>>> print(limit(f, x, a)) # 这个的意思是函数f,自变量x用a代入

cos(a)

>>> print(limit(f, x, a-dx))# f的自变量x用a-dx代入

cos(a - dx)

>>> print(limit((limit(f,x,a)-limit(f,x,a-dx))/dx, dx, 0))

-sin(a) #这就是答案

>>> n = Symbol('n')

>>> print(limit(((n+3)/(n+2))**n, n, oo))

E

无穷用oo表示,负无穷用-oo

diff求导

diff(你的函数,自变量,求导的次数)

>>> diff(sin(2*x), x)

2*cos(2*x)

>>> sin(2*x).diff(x)

2*cos(2*x)

>>> diff(sin(2*x), x, 2)

-4*sin(2*x)

>>> diff(sin(2*x), x, 3)

-8*cos(2*x)

>>> diff(sin(x*y), x,2,y,3)

x*(x**2*y**2*cos(x*y) + 6*x*y*sin(x*y) - 6*cos(x*y))

dsolve()计算微分方程

>>> x = symbols("x", real=True) # 定义符号x 为实数

>>>eq1 = dsolve(f(x).diff(x) + f(x)**2 + f(x), f(x))

>>>eq1

f(x) == -C1/(C1 - exp(x))

如果设置hint参数为“best”,就能得到更简

单的显函数表达式

>>> eq2 = dsolve(f(x).diff(x) + f(x)**2 + f(x), f(x), hint="best")

>>> eq2

f(x) == -C1/(C1 - exp(x))

intergrate积分计算

1. 定积分

>>> f = x**2 + 1

>>> integrate(f, (x, -1, 1))

8/3

>>> integrate(exp(x), (x, -oo, 0))

1

2. 不定积分

>>> f = 3*x**2 + 1

>>> integrate(f, x)

x**3 + x

3. 双重定积分

>>> f = (4/3)*x + 2*y

>>> integrate(f, (x, 0, 1), (y, -3, 4))

21/2

4. 双重不定积分

>>> f = (4/3)*x + 2*y

>>> integrate(f, (x, 0, 1), (y, -x, x))

x

有一份很详细的文档,内容完备,如果你想深入了解,不妨下载下来:

python怎么算二元一次方程_用python解决高数所有计算题--sympy求解极限、积分、微分、二元一次方程等...相关推荐

  1. python怎么算二元一次方程_使用 Python 解数学方程

    说到数学题,相信大家都不陌生,从小学到大学都跟数学打交道. 其中初中的方程组,高中的二次曲线,大学的微积分最为头疼,这个项目就使用python 来解决方程组问题,微积分问题,矩阵化简. SymPy库 ...

  2. python将数值代入方程_使用 Python 解数学方程

    说到数学题,相信大家都不陌生,从小学到大学都跟数学打交道. 其中初中的方程组,高中的二次曲线,大学的微积分最为头疼,这个项目就使用python 来解决方程组问题,微积分问题,矩阵化简. SymPy库 ...

  3. python输出一个月日历表_关于python一个月总结

    今天是6月16了,我在上个月19号的时候敲下了人生中的第一行python的hello world代码.碰巧今天周末,明天又开始忙碌的上(mo)班(yu).趁着现在对这个月的学习做一个总结,也是理清思路 ...

  4. 学python需要记得的单词_学习Python必背的初级单词有哪些?

    今天小编要跟大家分享一些学习Python必须认识的英文单词,同时也是学习编程都必须会的单词,下面来和小编一起学习一下吧! application 应用程式 应用.应用程序 application fr ...

  5. python在人工智能应用锁_解读! Python在人工智能中的作用

    人工智能是一种未来性的技术,目前正在致力于研究自己的一套工具.一系列的进展在过去的几年中发生了:无事故驾驶超过300000英里并在三个州合法行驶迎来了自动驾驶的一个里程碑:IBM Waston击败了J ...

  6. python内存管理和释放_《python解释器源码剖析》第17章--python的内存管理与垃圾回收...

    17.0 序 内存管理,对于python这样的动态语言是至关重要的一部分,它在很大程度上决定了python的执行效率,因为在python的运行中会创建和销毁大量的对象,这些都设计内存的管理.同理pyt ...

  7. python交互式和文件式_使用Python创建和自动化交互式仪表盘

    python交互式和文件式 In this tutorial, I will be creating an automated, interactive dashboard of Texas COVI ...

  8. python做审计底稿视频_最新Python教学视频,每天自学俩小时,让你offer拿到手软...

    2020最新Python零基础到精通资料教材,干货分享,新基础Python教材,看这里,这里有你想要的所有资源哦,最强笔记,教你怎么入门提升!让你对自己更加有信心,重点是资料都是免费的,免费!!! 如 ...

  9. python编程快速上手自动化_《Python编程快速上手 让繁琐工作自动化》完整版PDF...

    image.png <Python编程快速上手 让繁琐工作自动化>完整版PDF 提取码:7qm4 3.jpg 有关本书 累计销售超过10万册 零基础编程者的不二之选 基于Python3编写 ...

最新文章

  1. mysql innodb 设置,Mysql5.5 InnoDB存储引擎简单设置
  2. CC2540获取本机MAC地址
  3. 100%的程序员都想挑战的算法趣题!| 码书
  4. jQuery插件总动员
  5. 面试:a==1 a==2 a==3 是 true 还是 false?
  6. Android热修复之 - 收集崩溃信息上传服务器
  7. 物体识别_小鼠新物体识别Protocol
  8. 玩转oracle 11g(30):ora-03135和plsql乱码问题
  9. 心得 : 面向对象和面向过程的区别【分享】
  10. map平均准确率_第五篇 目标检测评价标准—MAP
  11. Georgia Tech - machine learning 学习笔记一
  12. Java的多线程机制系列:(四)不得不提的volatile及指令重排序(happen-before)
  13. 机器学习相关数学知识梳理
  14. html视频透明背景怎么设置,微信透明背景图怎么设置 微信透明动态背景图设置方法...
  15. USB redirection
  16. web前端面试高频考点——Vue面试题
  17. 3D打印机DIY之一------Prusa i3的材料清单和总体结构组装
  18. 我来告诉你,一个草根程序员如何逆袭,成功进入BAT!
  19. Python 语言如何对身份证真实性进行实名认证(阿里云身份证实名认证接口API)
  20. iOS APP打开微信小程序

热门文章

  1. 网络工程师模拟测试题
  2. RV32I控制转移指令的偏移量计算问题
  3. 16个用于数据科学和机器学习的顶级平台
  4. 赋能 打造应对不确定性的敏捷团队 pdf_协会成长课堂|《赋能》:打造应对不确定性的敏捷团队...
  5. ridge regression and lasso analysis-reproduced from csdn
  6. 种子是down.php,[原创作品][PHP]BT种子打包推送小神器~~
  7. 极客时间课程笔记:业务安全
  8. ArcGis制作三维地形图教程
  9. 谷歌科学家:目标优化不好使?今天聊聊泛化这件事儿
  10. 账单分期和最低还款之间的差距你绝对想不到,以广发卡为例子,看看自动分期的好处。