使用python_sympy库解决材料力学问题 (2) 今天下午本想好好写写材料力学,学到梁的挠曲线近似微分方程这一节,解方程、联立方程组求解写得我吐血,于是我就想着用sympy来解决,话不多说,先看题 题: 简支梁受力如图所示,
,
,
均为已知,求加力点的B的挠度和支承A,C处的转角
解: 由题
由挠曲线的近似微分方程:AB段
BC段
求解微分方程 AB段:
BC段:
初始条件A、C点处挠度为0,B点出两点的挠度和转角相等 带入初始条件联立求解方程组:
求解出C1 C2 D1 D2后带回原式 可以得出:
终于敲完公式了。。。。 下面我们看看怎么写代码 首先我们要明白我们要做什么,总结下来三点,一个是微分方程组的求解,二是联立方程组求解 ,三是带回原方程 一、微分方程求解 首先导入库并定义符号变量
创建微分方程等式
用dsolve函数求解微分方程
接下是很重要的一步,那就是如何将方中的右边的式子取出,这个问题我们用args属性来取出,先来看看里面有什么东西
可以看到里面是一个组,第二个素就是我们想要的式子,我们取出并作变量替换,注意这里变量替换的技巧
求出一阶微分方程
带入一个初始条件
求解另一个微分方程,注意这里p.S 函数的细节
二、联立方程组求解 根据B点建立方程组
利用linsolve 函数联立求解,得到c1,c2,D1,D2的结果
返回的是一个sympy.sets.sets.FiniteSet 对象,我们把它转成列表
得到一个列表嵌套组,用subs函数带回原方程,得到答案
对求解c1.c2.D1.D2的过程封装成一个函数
这个封装函数的代码极其简易,代码的健壮性、复用性、可读性几乎为0,大家不要学我,我是为了偷个懒,正确的做法是创建一个类,一个一个方法去封装,下次有时间我再补上。 创作不易,喜欢的小伙伴请点个赞再走吧 (*^_^*)
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/36094.html