python 经纬度计算距离公式_SymPy符号计算-让Python帮我们推公式

作者: 阿凯

Email: xingshunkai@qq.com

概要

像我这种粗心的小孩, 在推导一些复杂的公式(尤其是矩阵运算)的时候, 经常容易算错数, 一步推错,步步错。

万能的Python有什么方法可以帮助我们节省时间, 减少出错率呢? 有一个包叫做SymPy, 它可以帮我们自动的进行符号化计算. 所谓符号化计算的含义是指, 带入运算的不是某个具体的数值, 而是抽象的数学符号, 并且还可以帮我们将最终得到的结果进行归并简化(例如sin cos函数的合并).

这篇文章会用案例的方式, 给大家展示一下sympy的常用的功能.

安装工具包

sudo pip3 install sympy

导入工具包

import sympy as sym
from sympy import sin,cos

求解二元一次方程组

x,y = sym.symbols('x, y')
sym.solve([x + y - 1,x - y -3],[x,y])

输出日志:

{x: 2, y: -1}

测试不定积分

x = sym.symbols('x')
a = sym.Integral(cos(x))
# 积分之后的结果
a.doit()

输出日志:

# 显示等式
sym.Eq(a, a.doit())

输出日志:

测试定积分

e = sym.Integral(cos(x), (x, 0, sym.pi/2))
e

输出日志:

# 计算得到结果
e.doit()

输出日志:

求极限

n = sym.Symbol('n')
s = ((n+3)/(n+2))**n#无穷为两个小写o
sym.limit(s, x, sym.oo)

输出日志:

print(sym.limit(s, x, sym.oo))
((n + 3)/(n + 2))**n

测试三角函数合并

sympy支持latex表达式

theta = symbols('theta')
a = cos(theta) * cos(theta) - sin(theta)*sin(theta)
Eq(a)

输出日志:

三角函数简化

可以调用simplify 函数进行结果的简化, 简直是太好用了!!!!

sym.simplify(a)

输出日志:

x = sym.symbols('x')
f = sym.simplify('x/x+1')
f

输出日志:

多元表达式

x, y = sym.symbols('x y')
f = (x + 2)**2 + 5*y
sym.Eq(f)

输出日志:

传入数值

f.evalf(subs = {x:1,y:2})

输出日志:

拓展Latex格式

https://docs.sympy.org/0.7.2/modules/galgebra/latex_ex/latex_ex.html

例如想要显示

delta_t = sym.symbols('delta_t')

测试行列式求解

dt = sym.symbols('delta_t')
# 定义矩阵T
T = sym.Matrix([[1, 0, 0, 0], [1, dt, dt**2, dt**3], [0, 1, 0, 0],[0, 1, 2*dt, 3*dt**2]])
T

输出日志:

# 计算行列式
sym.det(T)

输出日志:

# 矩阵求逆
T_inverse = T.inv()
# 逆矩阵
T_inverse

输出日志:

运动学公式自动推导

下面演示使用sympy自动推导运动学公式

定义一些符号

# 定义符号
theta_1, theta_2,theta_3, l_2, l_3 = sym.symbols('theta_1, theta_2, theta_3, l_2, l_3')
theta_1

输出日志:

下面是机械臂DH空间变换用到的矩阵

def RZ(theta):'''绕Z轴旋转'''return sym.Matrix([[cos(theta), -sin(theta), 0, 0], [sin(theta), cos(theta), 0, 0], [0, 0, 1, 0],[0, 0, 0, 1]])def RX(gamma):'''绕X轴旋转'''return sym.Matrix([[1, 0, 0, 0],[0, cos(gamma), -sin(gamma), 0],[0, sin(gamma), cos(gamma), 0],[0, 0, 0, 1]])def DX(l):'''绕X轴平移'''return sym.Matrix([[1, 0, 0, l], [0, 1, 0, 0], [0, 0, 1, 0],[0, 0, 0, 1]])def DZ(l):'''绕Z轴'''return sym.Matrix([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, l],[0, 0, 0, 1]])

按照变换顺序, 依次相乘,得到总的变换矩阵

T04 = RZ(theta_1)*RX(-sym.pi/2)*RZ(theta_2)*DX(l_2)*RZ(theta_3)*DX(l_3)

公式简化, 最终得到了三自由度机械臂, 正向运动学的结果

T04 = sym.simplify(T04)
T04

输出日志:

导出Latex

运算得到的结果可以直接插到论文里面, 不用自己再手敲一遍latex.

直接导出结果的latex字符

sym.print_latex(T_inverse)

输出日志:

left[begin{matrix}1 & 0 & 0 & 00 & 0 & 1 & 0- frac{3}{delta_{t}^{2}} & frac{3}{delta_{t}^{2}} & - frac{2}{delta_{t}} & - frac{1}{delta_{t}}frac{2}{delta_{t}^{3}} & - frac{2}{delta_{t}^{3}} & frac{1}{delta_{t}^{2}} & frac{1}{delta_{t}^{2}}end{matrix}right]

可以copy, 插入到markdown正文中

$$
这里插入刚才导出的字符串
$$

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

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

相关文章

支持国产处理器仿真的全数字实时仿真平台SkyEye与可信编译器L2C的核心翻译步骤

1、核心翻译步骤示例 本节我们以第2节提到的Lustre语言的主要特性为线索来解释L2C在翻译过程中的关键节点是如何处理的, 并以图 1的实例来解释Lustre程序是如何被一步步地翻译到Clight语言的. 1.1 数据流并发性 Lustre程序具有数据流并发性, 而Clight程序却是串行执行的.因此…

python导入不在同一路径的函数_Python小课堂|模块

Python3 模块在前面的几个章节中我们脚本上是用 python 解释器来编程,如果你从 Python 解释器退出再进入,那么你定义的所有的方法和变量就都消失了。为此 Python 提供了一个办法,把这些定义存放在文件中,为一些脚本或者交互式的…

全数字实时仿真软件SkyEye与可信编译器L2C的核心翻译步骤的设计与实现

有关翻译正确性验证的重点疑难问题及其设计实现方案 在L2C可信编译器的设计与实现中, 对于实线所对应的翻译过程 (CompCert编译器除外) 均借助于Coq证明了正确性 (语义保持性), 然后得出LustreSGen所产生的LustreS代码到Clight代码整个翻译过程的正确性.从LustreS到Clight的任…

idea 分支管理插件_Git的分支管理常用命令

文章目录分支管理git stashgitmerge与git rebasegit merge --squashcherry-pick分支管理命令作用git branch查看当前分支git checkout/git switch 分支名称切换分支git merge 分支名称将指定分支合并到当前分支git branch -d 分支名称删除指定分支git diff 分支名称1 分支名称2…

安卓蓝牙键盘切换输入法_采用国产机械轴,三种连接模式轻松切换,TT G521上手体验...

之前我用过三模游戏鼠标,也用过三模薄膜键盘,但是三模机械键盘,还是第一次使用。机械键盘,相信大家都知道,现在已经很普及了,估计当时把机械键盘重新带回到玩家当中的大神,也没有想到它会这么火…

国产自主可控的嵌入式仿真软件SkyEye和同步数据流语言高阶运算消去的可信翻译

同步数据流语言高阶运算消去的可信翻译 同步数据流语言(例如Lustre,Signal等)广泛应用于工业界的核心安全级控制系统,如航空、核电等高安全等级的关键领域,与语言相关的软件的安全性也越来越受到人们的关注,特别是一些基础软件,如操作系统、编译器等.确认这些软件的安全可靠非…

pq 中m函数判断嵌套_压轴题的热点,二次函数与几何的结合,谁会谁吃香

对于整个中考数学来说,二次函数的重要性,我想不用老师多说,大家肯定心里有数。二次函数作为初中数学的重要内容,命题老师很喜欢把它与其他几何图形进行结合,形成综合性更强的试题。不可否认,二次函数与几何…

完全自主可控的安全关键领域仿真测试软件SkyEye可替代SCADE

基于全数字实时仿真平台 SkyEye 产品性质 :全数字实时仿真平台(软件测试和仿真工具) 对标产品 :美国风河公司的Simics,可替代SCADE SkyEye,中文全称天目全数字实时仿真软件,是基于可视化建模…

请求接受json tp5_关于jq jsonp跨域请求错误处理bug

前言:昨天,同事修改项目升级插件时遇到了一个ajax 报错,如下:$.ajax({type : "get",async:false,timeout:3000,url : "http://10.10.10.26:808/servlet/updateLog?line1",dataType : "jsonp",//数…

ModelCoder国产化解决方案已逐步代替国外软件Matlab/Simulink

ModelCoder介绍 在安全关键领域,基于模型的软件工程或者软件开发已逐渐进入了我国的装备研制过程中。使用Simulink或者SCADE等嵌入式软件建模工具对算法或者控制逻辑进行可视化建模,然后生成高可靠的二进制代码逐渐成为了安全关键领域的主流开发方式。 …

两用物项许可证办理流程_一指通 | 出口许可证办理流程

什么是出口许可证?出口许可证,是指商务部授权发证机关依法对实行数量限制出口货物签发的准予出口的许可证件。出口许可证监管证件代码为“4”。加工贸易出口“出口许可证”管理的货物,监管证件代码为“x”。边境小额贸易出口“出口许可证”管…

SkyEye实现工业安全关键领域基础软件国产替代

随着科技的发展,系统工程的设计体量逐渐庞大起来,尤其是对于轨道交通、航空航天、核电站等安全关键领域中,如何在复杂度逐年变大的同时保证其安全性和可靠性,是近年来各大公司需要研究的课题。最近比较火热的基于模型的系统工程&a…

2寸的照片长宽各是多少_贵州公务员考试照片尺寸要求是多少

中公教育在贵州公务员考试中对于照片要求与2寸照片的林小差不多,简单来说就是长宽最小像素为160px和130px、最佳效果为260px*320px;即使考生们已有照片未达到公务员照片的相关要求,考生们可以通过图片处理系统进行等比例裁剪达到照片尺寸要求…

自主可控的全数字实时仿真软件SkyEye支持PowerPC指令级仿真

随着科技的发展,系统工程的设计体量逐渐庞大起来,尤其是对于轨道交通、航空航天、核电站等安全关键领域中,如何在复杂度逐年变大的同时保证其安全性和可靠性,是近年来各大公司需要研究的课题。最近比较火热的基于模型的系统工程&a…

opencv 叠加两张图_OpenCV基础篇之图片叠加

OpenCV基础篇之图片叠加程序及分析/** FileName : blend.cpp* Author : xiahouzuoxin 163.com* Version : v1.0* Date : Mon 28 Jul 2014 08:47:59 PM CST* Brief :** Copyright (C) MICL,USTB*/#include #include #include using namespace std;using namespace cv;in…

中国自主可控的全数字实时仿真软件SkyEye支持龙芯CPU指令级仿真

传统的系统开发过程,都是由工程师根据项目需求书来编写代码完成系统的开发,但随着功能的完善和版本迭代,系统中庞大的代码量很难确保正确无误,给后期测试和仿真带来了很大的压力和成本,在航空航天、卫星系统、核电等安…

进入实现类快捷键_实测30个自带快捷键,原来键盘也这么好用!

文 / 一周进步 水韬推荐过很多软件快捷键的文章,每次推荐大家都会惊叹,原来自以为熟练掌握的软件,还可以有这么多便捷的操作。活到老,学到老。软件操作是如此,其实在我们使用最多的Windows系统里,在键盘里…

SkyEye——汽车电子系统仿真测试工具

随着汽车电子的发展,电子控制单元(ECU)大量应用到现代汽车上,车内网络变的越来越复杂。 在新车型的研发阶段使用专业的仿真工具SkyEye及其配套产品进行车内芯片实时仿真测试,验证车内电子系统的可靠行和安全性成为必要…

怎么做笔记标签贴_小红书笔记互动到底该怎么做?

小红书很多博主再发完笔记后,喜欢到一些互赞群里去跟别人相互关注点赞收藏评论。这个就是我今天要和大家说的。小红书笔记在一些互赞藏群里自己上关键词车,这样是会被判违规的,什么违规呢?那就是人工干预后台数据。小红书有这样一…

全数字实时仿真平台SkyEye与SystemC集成进行时序仿真

SkyEye与SystemC集成进行时序仿真 仿真过程是正确实现设计的关键环节,用来验证设计者的设计思想是否正确,及在设计实现过程中各种分布参数引入后,其设计的功能是否依然正确无误。时序仿真使用布局布线后器件给出的模块和连线的延时信息&…