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

news2024/11/27 16:40:01

一般的数学算式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.coloradmin.cn/o/51606.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

你的团队是王者还是青铜(上)

(图片来源:https://unsplash.com/photos/RxOrX1iW15A) 4月18日早上9点30分,团队跟着大屏计时器整齐地喊出倒计时,“五、四、三、二、一”,Tech Lead 强哥和 PO 小楠相对看了一眼,一起按下了eart…

双端 Diff 算法原理解析及 snabbdom 简单实现

一、准备工作 先找个放猪的容器canvas,这里宽设置了1200&#xff0c;高设置了600 <canvas width"1200" height"600" id"canvas">当前浏览器不支持canvas元素</canvas> 然后获取它进行操作 const canvas document.getElementById(…

让人头皮发麻的Android 性能优化版块,这样简单就学会了?

对现如今的Android 开发们来讲&#xff0c;不管是在面试还是日常工作当中&#xff0c;性能优化 都是一个绕不开的难题。 以下这些场景&#xff0c;大家或多或少都有遇到过&#xff1a; 1. 当你很努力地优化了应用的性能后&#xff0c;用户依然不断抱怨应用卡顿、启动速度慢等…

005. 组合总和 II

1.题目链接&#xff1a; 40. 组合总和 II 2.解题思路&#xff1a; 树层&#xff1a;同层遍历 树枝&#xff1a;递归遍历 2.1.题目要求&#xff1a; 给定一个数组 candidates 和一个目标数 target &#xff0c;找出 candidates 中所有可以使数字和为 target 的组合。 candi…

6.终于了解volatile的原理和使用方法了

1.volatile能保证可见性 先说个案例&#xff1a; 有两个线程A和B&#xff0c;有一个公共的 boolean flag 标记位&#xff0c;最开始赋值为 true&#xff1b;B线程循环&#xff0c;根据这个flag来进行执行或者退出&#xff1b;这时线程A把flag改成false这个时候希望线程B看到变…

python安全工具开发笔记(三)——python 多线程

一、Python线程和进程 进程 进程是程序的一次执行。每个进程都有自己的地址空间、内存、数据栈及其它记录其运行轨迹的辅助数据。 线程 所有的线程运行在同一个进程当中&#xff0c;共享相同的运行环境。线程有开始顺序执行和结束三个部分。 帮助理解&#xff1a; 1、计算…

vs2019+Qt 使用 Qlabel 在界面上显示图像及显示失真问题

在使用 Qt 设计界面时&#xff0c;通常会涉及到在界面上显示图片的问题&#xff0c;而要在界面上显示图片需要使用控件 Qlabel 和 函数 QImage &#xff0c;下面对控件和函数逐一做出介绍&#xff01;&#xff01;&#xff01; 一、Qlabel 常见成员方法 1、setText(const QSt…

全国批发市场情况萧条,进销存系统或是业务转机

如今批发市场情况大不如前&#xff0c;越发惨淡&#xff0c;令人不禁扼腕叹息。让我们深入批发行业&#xff0c;撇开大环境因素&#xff0c;来究竟发现什么是导致批发市场的萧条现状的原因。 1、物流快速发展&#xff0c;失去地域优势 在90年代初&#xff0c;各地交通不便&…

idea相关配置-----java

导入项目 打开项目src的上一层目录即可 导入之后如果可以正常运行就不用看下面操作了&#xff0c; 如果不能运行可以参考下面内容 配置 1.jdk配置 2.添加项目jar包&#xff0c;然后应用 配置完成了 常用快捷键 快捷代码 sout 输出 forr 创建倒序 for循环 fori 创建 for循环…

国外Windows主机的特点

虚拟主机是一项为用户提供在线系统的服务&#xff0c;用于存储信息、图像、视频或其他可以通过互联网轻松访问的文件。而Windows虚拟主机是其中的一个类别&#xff0c;使用这款主机的用户需要和其他共享一个服务器——包括物理服务器和软件应用程序。目前&#xff0c;大多数应用…

Cesium For Unity3d 最新实践流程-2022-12-01

目录 Cesium-Unity3d 最新实践流程 一、前言 二、实践 1、Unity 安装 2、Cesium for Unity 下载 3、打开项目 4、编辑、运行项目 4、效果 Cesium For Unity3d 最新实践流程 一、前言 2022年11月30日晚11点30分&#xff0c;Cesium for Unity 开源插件预览版发布&#…

7.axios的基本使用

Axios是专注于网络数据请求的库&#xff0c;比jQuery更轻量&#xff0c;项目地址 下载解压后在dist中可以找到axios.js&#xff0c;在html文件中引用它就好了 目录 1 GET请求 2 POST请求 3 axios() 1 GET请求 服务是两个数相加 返回的res对象有六个属性&#xff0c;你…

【Python】基础语法1(常量与表达式、变量和类型、注释、输入输出、运算符)

文章目录1、常量与表达式2. 变量和类型2.1 变量是什么2.2 变量的语法2.3 变量的类型2.3.1整数2.3.2 浮点数2.3.3 字符串2.3.4 布尔2.3.5 其他2.4 变量类型的意义2.5 动态类型特性3. 注释3.1 注释的语法3.2 注释的规范4. 输入输出4.1 通过控制台输出4.2 通过控制台输入5. 运算符…

java - 数据结构,时间复杂度和空间复杂度

一、算法效率 算法效率分析分为两种&#xff1a;第一种是时间效率&#xff0c;第二种是空间效率。 时间效率被称为时间复杂度&#xff0c;而空间效率被称作空间复杂度。 时间复杂度主要衡量的是一个算法的运行速度&#xff0c;而空间复杂度主要衡量一个算法所需要的额外空间&am…

子不语发生工商变更:注册资本增至3000万元,预计全年净利润下滑

近日&#xff0c;浙江子不语电子商务有限公司&#xff08;下称“子不语”&#xff09;发生工商变更&#xff0c;其中注册资本由2600万元增至3000万元。据天眼查信息显示&#xff0c;子不语的全资股东为ZIBUYU INTERNATIONAL LIMITED&#xff0c;法定代表人为华丙如。 据了解&am…

【前端验证】验证自动化脚本的最后一块拼图补全——gen_tb

我们的目标是┏ (゜ω゜)=☞芯片前端全栈工程师~喵! 前言 在完成了 【芯片前端】可能是定向验证的巅峰之作——auto_testbench_尼德兰的喵的博客-CSDN博客 【python脚本】用于生成简单握手接口与自测环境的gen_uvm_agent脚本_尼德兰的喵的博客-CSDN博客 两个工具之后,对于…

[附源码]计算机毕业设计springboot体育器材及场地管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Unity数字孪生UI设计——导入视频

Unity导入mp4或URL链接 1、准备视频 Uinty3D常用视频格式: mov、.mpg、.mpeg、.mp4、.avi .asf 如果都不识别,试试转换成ogv格式 转换完成之后,将视频素材文件拖入Uinty Assets文件夹内 2、创建UI及添加组件 1、右键Assets文件夹或任意文件夹→Create→Render Texture纹理渲…

七、Sleuth分布式链路请求跟踪

SpringCloud Sleuth分布式链路请求跟踪 概述 为什么会出现这个技术&#xff1f;需要解决哪些问题&#xff1f; 问题 在微服务框架中&#xff0c;一个由客户端发起的请求在后端系统中会经过多个不同的服务节点调用来协同产生最后的请求结果&#xff0c;每一个前端请求都会形…

[附源码]计算机毕业设计springboot面向高校活动聚App

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…