高等数学基础概念的Python开发实现

news/2024/5/2 14:04:09/文章来源:https://blog.csdn.net/li_gf/article/details/128088842

一般的数学算式math函数库就可以解决了,如果是涉及到高等数学极限,微积分等知识,就需要用到sympy科学计算库,它是专门用来解决数学的运算问题的。

Sympy是一个符号计算的Python库。它的目标是成为一个全功能的计算机代数系统,同时保持代码简洁、易于理解和扩展。它完全由Python写成,不依赖于外部库。SymPy支持符号计算、高精度计算、模式匹配、绘图、解方程、微积分、组合数学、离散 数学、几何学、概率与统计、物理学等方面的功能。

官方文档:SymPy 1.11 documentation

安装 sympy
# 第一种
pip install sympy
# 第二种 推荐,镜像下载更快
pip install sympy -i Simple Index

使用 jupyter 显示效果更好。Project Jupyter | Home

导入库的方式为 from sympy import *

常见的数学符号在sympy中的表示方式:

数学符号sympy表达数学符号sympy表达
sinxsin(x)arccosxacos(x)
cosxcos(x)arcsinxasin(x)
tanxtan(x)imaginary number iI(大写i)
e^{x}exp(x) 或者 E**x\proptooo(两个o)
y^{x}y**xlinxlog(x)
\frac{x}{y}x/y\pipi

基本数学方法

from sympy import *       # 导入sympy 全部函数
#数学表达式,用到symbols() 声明数学符号
x, y = symbols('x, y')    # symbols() 声明了两个符号x, y。否则就会报 x 未定义错误
expr = x + 2*y            # 定义了表达式:x + 2y
expr               # x + 2*y
#可以对表达式进行简单的四则运算
expr = expr + x + 1       # 表达式可以进行基本运算
expr              # 2*x + 2*y + 1
expr = expr * x + 2       # 相当于:(2*x + 2*y + 1) * x + 2
expr              # x*(2*x + 2*y + 1), 并没有进行展开计算
#表达式展开成最终形式,用到 expand() 函数
expanded_expr = expand(expr)
expanded_expr     # 2*x**2 + 2*x*y + x,表达式以最终能够展开的形式显示
#平方根
sqrt(8)                # 2\sqrt{2}
#如果想求8的算数平方根的具体的值,就需要用的 math 类
import math
math.sqrt(8)       # 2.82842712474619
#简化表达式,用到simplify()函数
expr = (3*x**2+9)/3
expr     # p^{2}+3
#分解因式,用到 factor() 函数
expr = factor(expanded_expr)       #expanded_expr = 2*x**2 + 2*x*y + x
expr             # 𝑥(2𝑥+2𝑦+1)
#解方程,用到solve(equation, symbol),equation为等式或者表达式,symbol声明的符号即变量
x = Symbol("x")
expression = x**2+3*x-4    # 即方程x^{2} + 3x - 4 = 0,x为变量
solve(expression, x)      # 方程的解有两个:[-4,1]
solve(x**2 - 2, x)     # x^{2}的解为: [-\sqrt{2},\sqrt{2}] 
#替代变量为具体值,用到expression.subs(symbol, constant),equation为等式或者表达式,symbol为要替换的变量,constant具体的数值
expression = x**2+3*x-4  
expression.subs(x, 3)  #将表达式expression中的x的值替换为3,结果为:14

高等数学方法

#求极限,用到limit(expr, symbol, value),expr表达式,symbol变量,value变量的值
limit(x**2, x, 5)      # x^{2}在点5处的极限值为 25
limit(x**3, x, oo)    # x^{3}在点正\propto处的极限值为 \propto
limit(1/x, x, 0)        # 1/x 从正方向逼近0时的极限值为 \propto
limit(1/x, x, 0, dir="-")    #1/x 从负方向逼近0时的极限值为 -\propto
limit(1/x, x, 0, dir='+-')    #1/x 从正负方向逼近0时的极限值为 \propto
limit(sin(x)/x, x, 0)    #计算 limit_{x \to 0} \frac{sin(x)}{x}的极限值为1
#计算阶乘,用到factorial()
factorial(5)      #计算5的阶乘,即5×4×3×2×1=120
#求一阶导数,用到diff(expr),计算表达式的导数
x = Symbol('x')      #声明变量
expression = x**3 + x**2 + 9*x     #要求导的表达式x^{3}+x^{2}+9x+1
diff(expression)     #求导结果:3x^{2}+2x+9
diff(sin(x))    #求导结果:cos(x)
diff(x**3*y*z,x)   #表达式x^{3}yz对x求导,结果为:3x^{2}yz
expr = x**4+x**3+x+1
expr.diff(x)    #导数为:4x^{3}+3x^{2}+14x^{3}+3x^{2}+1
#求高阶导数
expr=sin(x)    
expr.diff(x,4)      #求sin(x)的4阶导数,为:sin(x)
expr=x**5 + x**4
expr.diff(x,3)        #求x^{5}+x^{4}的3阶导数,为:12x(5x+2)
#求不定积分,用到Integrate(expr),求表达式的不定积分,即计算∫ expr dx 
expr = 3*x**2 + 2*x + 9          # 表达式3x^{2}+2x+9
integrate(3 * x ** 2 + 2 * x + 9)   #积分为:x^{3}+x^{2}+9x
integrate(x*y, x)    #表达式xy对x进行积分,结果为x^{2}y/2
integrate(sin(x**2), (x, -oo, oo))  #计算\int_{-\infty }^{\infty } sin(x^{2})dx积分,结果为\sqrt{2\pi }/2
#求定积分,用到Integrate(expr, (x, a,b )),求表达式的定积分,即计算\int_{a}^{b} exprdx
integrate(log(x), (x, 1, a))   #log(x)对x从1到a求积分,结果为alog(a)-a+1
#二重积分,用到integrate(expr,x,y),对表达式expr进行对x,y的二重积分。
# 计算 \int_{y^{2}}^{y+2}\int_{-1}^{2}xydxdy,即计算 xy在抛物线 y^{2} = x 与直线 y=x−2 所围成的区域上的二重积分
expr=x*y      # 表达式
integrate(expr,(x, y**2,y+2),(y,-1,2))     # y区间[-1,2],x区间[y**2, y+2],结果: 45/8
附图如下:

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_228550.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于非支配排序遗传算法的多目标水光互补优化调度附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

产品经理必备的能力有哪些?

从一名普通的产品经理到一名优秀的产品经理要经历什么?哪些又是产品经理必备的能力?产品经理对能力的需求也不尽相同,在不同的团队合作模式下,还必须懂得各种能力。 一、业务分析能力 数据分析能力该是什么样的呢 1、有数据意识…

SCP命令在不同远程服务器之间发送文件(指定端口)

最近想把数据集放在另一个服务器上,但是如果先下载到本地然后再上传过去,则需要浪费好久时间。 特总结下如何快捷的通过命令完成不同远程服务器之间的文件传输,以及遇到的问题。 SCP命令 Linux scp 命令用于 Linux 之间复制文件和目录。1 s…

JavaCV音视频开发宝典:rtsp转推到rtp(非TS流方式),及使用TS流发送解决sdp缺失问题

《JavaCV音视频开发宝典》专栏目录导航 《JavaCV音视频开发宝典》专栏介绍和目录 前言 在之前的文章中,由于忘记介绍使用的rtp推流方式都是TS流方式,RTP方式推流没讲,本章作为之前文章(JavaCV音视频开发宝典:rtsp拉流并使用转码方式转推到rtp)的补充。 注意:本文不需要…

Java+JSP+MySQL基于SSM的在线投票系统-计算机毕业设计

项目介绍 随着社会的发展,人们在处理一些问题的时候不同意见越来越多,这源于人们对思想的解放和对社会的认识。所以在处理同一问题上,为了征求不同人的意见在线投票系统诞生了。 基于SSM的在线投票系统以钦州学院为背景,运用在校…

论文投稿指南——中文核心期刊推荐(计算机技术)

>>>深度学习Tricks&#xff0c;第一时间送达<<< &#x1f680; 写在前面 &#x1f431;‍&#x1f3cd; 本期开始&#xff0c;小海带会定期推荐各专业领域的中文核心期刊及论文投稿网址&#xff0c;供大家参考交流 ~ 《中文核心期刊要目总览》是学术界对某…

微信开发者工具 / 反编译工具CrackMinApp 下载安装

微信开发者工具 / 反编译工具CrackMinApp 下载安装 文章目录微信开发者工具 / 反编译工具CrackMinApp 下载安装前言一、微信开发者工具下载安装二、反编译工具CrackMinApp安装三、导入反编译后的文件四、友情提示总结前言 微信开发者工具介绍&#xff1a;微信提供的微信小程序…

一篇个人陈述应该包括这三个内容

大家好呀&#xff0c;申请季正如火如荼地进行着&#xff0c;不知道大家都忙碌得怎么样了呢&#xff1f;今天我们来聊聊个人陈述Personal statement,的撰写&#xff0c;包括一篇个人陈述应该包括哪些部分。 申请时&#xff0c;除了学习成绩等“硬背景”&#xff0c;个人陈述(PS…

[SpringMVC]第三篇:作用域传参

四大域: PageContext对象(不常用) 作用域范围:当前jsp页面内有效 request对象(经常用) 作用域范围:一次请求内。 作用: 解决了一次请求内的资源的数据共享问题 session对象(登录,会话时会用) 作用域范围:一次会话内有效。 说明:浏览器不关闭,并且后台的session不失效&#xff…

内容、文档和流程数字化如何支持精益原则

内容、文档和流程数字化如何支持精益原则 无论您身处哪个行业&#xff0c;想要在业务中取得真正的成功就必须把客户放在所有决策的中心位置&#xff0c;以便您能够给客户提供最佳服务。同时公司以最高效的方式向前发展也很重要。幸运的是&#xff0c;有一种方法可以确保两者兼而…

Java企业微信对接

最近项目中要对接企业微信&#xff0c;实现通讯录数据同步&#xff0c;即在企业端添加编辑删除用户&#xff0c;部门数据要同步到微信端&#xff0c;同时微信端添加编辑删除用户&#xff0c;部门数据要同步到企业端&#xff0c;实现数据同步功能&#xff0c;需要调用企业微信AP…

五款朴实无华却又能极大提升办公效率的软件

最近后台收到好多小伙伴的私信&#xff0c;今天继续推荐五款小工具&#xff0c;都是免费使用的&#xff0c;大家可以去试试看。 1.光追动画制作——Luxion KeyShot Luxion KeyShot是一款互动性的光线追踪与全域光渲染3D渲染与动画制作软件&#xff0c;内置丰富多样的材质&…

mybatis实战:三、mybatis多表查询的映射

依照上一期的继续 1.UserMapper.xml 除了直接对应基本数据类类型、表的实体类&#xff0c;还可能用到多表查询。 <select id"selectRolesByUserId" resultType"tk.mybatis.simple.model.SysRole">select r.id, r.role_name roleName, r.enabled, r…

Typora导出Word

1.Typora导出Word配置 1.访问GitHub&#xff1a; https://github.com/jgm/pandoc/releases/tag/2.11.3.2https://github.com/jgm/pandoc/releases/tag/2.11.3.2 2.下载对应的文件 3.到本地安装Typora目录下解压 4.配置环境变量 我的电脑–属性–高级系统设置–高级–环境变量…

Linux零基础入门(二)Linux基础命令

Linux零基础入门&#xff08;二&#xff09;Linux基础命令前言Linux基础命令一 Linux的目录结构1 Linux路径的描述方式二 Linux命令入门1 Linux命令基础格式2 ls命令3 HOME目录和工作目录4 ls命令的参数ls 命令的 -a选项ls命令的 -l选项ls命令选项的组合使用ls选项和参数的组合…

搭建Docker+SRS服务器实现推流拉流的效果

最初的一个想法&#xff0c;是针对当前的网络电视去的&#xff0c;很多网络电视买回家&#xff0c;还要充很多会员&#xff0c;甚至跌入连环坑。我想给妈妈买一台电视&#xff0c;想把我自己收集的电影电视剧做成一个影视库&#xff0c;通过搭建家庭影院服务器&#xff0c;然后…

Fiddler抓包工具是最强大最好用的 Web 调试工具之一

Fiddler是最强大最好用的Web调试工具之一&#xff0c;它能记录所有客户端和服务器的http和https请求&#xff0c;允许你监视&#xff0c;设置断点&#xff0c;甚至修改输入输出数据. 使用Fiddler无论对开发还是测试来说&#xff0c;都有很大的帮助。 目录 Fiddler的基本介绍 …

Java+JSP+MySQL基于SSM的医院挂号就诊系统-计算机毕业设计

项目介绍 随着计算机科技的快速发展&#xff0c;很多地方都实现了自动化管理&#xff0c;医院也不例外。在大多数医院&#xff0c;无论是挂号处&#xff0c;还是取药的窗口&#xff0c;都会看到有很长的队伍&#xff0c;很显然这样会让患者就医的过程中浪费太多的时间。其次&a…

Kamiya丨Kamiya艾美捷AREG酶联免疫吸附试验原理

Kamiya艾美捷AREG酶联免疫吸附试验预期用途&#xff1a; 该试剂盒是一种用于体外定量测量大鼠AREG的夹心酶免疫测定法血清、血浆和其他生物流体。仅供研究使用。不用于诊断程序。 存储&#xff1a; 所有试剂应按照小瓶上的标签保存。校准器、检测试剂A、检测试剂B和96孔带板应…

【正点原子FPGA连载】第二十四章 双路高速DA实验 摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0

1&#xff09;实验平台&#xff1a;正点原子MPSoC开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id692450874670 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第二十四章 双路…