我有一个欧拉-伯努利方程,我正在尝试求解:
q(x) = a*x + b + w(x)
欧拉-伯努利方程:
E * I * diff(w(x), x, x, x, x) = q(x)
我真的不知道这是否是超越的,但我有 E、I、a、b 并且也知道我的积分限制(0 到 H)。我有 E、I、a、b 和 H 的数字。
如何获得 x 从 0 到 H 变化的 w(x),x 点?
最佳答案
如果你想象征性地解决它,你可以,例如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))
结果是:
-x x
─────────── ───────────
4 ___ 4 ___ 4 ___ 4 ___
╲╱ E ⋅╲╱ J ╲╱ E ⋅╲╱ J ⎛ x ⎞ ⎛ x ⎞
w(x) = C₁⋅ℯ + C₂⋅ℯ + C₃⋅sin⎜───────────⎟ + C₄⋅cos⎜───────────⎟ - a⋅x - b
⎜4 ___ 4 ___⎟ ⎜4 ___ 4 ___⎟
⎝╲╱ E ⋅╲╱ J ⎠ ⎝╲╱ E ⋅╲╱ J ⎠
如果给出有关边界条件的额外信息,您甚至可以进一步简化。无论如何,您都需要它们,因为您仍然有 4 个未知系数。
关于python - 在Python或Matlab中数值求解超越方程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27950143/