用python或Matlab数值求解超越方程

2024-06-15 21:05:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Euler-Bernoulli方程,我要解的是:

q(x) = a*x + b + w(x)

欧拉-伯努利方程:

^{pr2}$

我不知道这是否是超验的,但我有E,I,a,b,也知道我的积分极限(0到H)。我有E,I,a,b和H的数字

如何得到w(x),x从0到H的变化点?在


Tags: 数字方程eulerbernoullipr2
2条回答

让我使用Matlab中的符号工具箱添加一个解决方案:

syms q x w(x) a b E I
q = a*x+b+w(x);
sol = dsolve(E*I*diff(diff(diff(diff(w)))) == q)
sol_part = subs(sol,[E I],[2e5 100]) % etc.

您可以将边界条件作为单独的方程添加到dsolve命令中,从而形成一个方程组。在

如果你想象征性地解决它,你可以用sympy

from __future__ import division
from sympy import *
x = symbols('x')
w = symbols('w', cls=Function)
a,b,E,J =  symbols('a b E J')
equ = E*J*diff(w(x),x,4) - a*x -b - w(x)
dsolve(equ, w(x))
# This generates a function that is too generic and too big to copy-paste
# Let's make some assumptions
J = Symbol('J', real=True, positive=True)
E = Symbol('E', real=True, positive=True)
equ = E*J*diff(w(x),x,4) - a*x -b - w(x)
dsolve(equ, w(x))

结果是:

^{pr2}$

考虑到边界条件的额外信息,你甚至可以进一步简化。在任何情况下你都需要它们,因为你还有4个未知系数。在

相关问题 更多 >