python - 在Python或Matlab中数值求解超越方程

标签 python matlab numeric

我有一个欧拉-伯努利方程,我正在尝试求解:

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/

相关文章:

python - 主页上的 Django UserCreationForm

python - 单词中的多个字符串

matlab - 在 matlab 中追踪包含背景图像的图形

matlab - MATLAB 中高效的多类加权多数表决实现

matlab - 如何根据每一行将矩阵转换为一堆对角矩阵?

python - 如何添加此 mayavi 3d 图的涟漪?

python - 如何跳过子文件夹中的现有文件并仅复制新文件

database - 数字 (12,2) 类型的 Postgresql 字符

scala - Scala 中的简单税收计算

python - 后台任务完成后如何刷新首页