【发布时间】:2017-05-15 08:48:29
【问题描述】:
我有一个 MATLAB 脚本,它使用拉普拉斯变换求解非齐次一阶线性 IVP。 (对于本例,脚本设置为解决IVP,。)
syms x(t) s X;
a0 = -3;
x0 = 4;
rhs = t^2;
lhs = diff(x,t) + a0*x;
ode = lhs - rhs
Lx = X;
LDx = s*X - x0;
LHS = LDx + a0*Lx;
RHS = laplace(rhs,t,s);
IVP = LHS - RHS;
IVP = collect(IVP,X);
X = solve(IVP, X);
X = partfrac(X);
sol = ilaplace(X, s, t)
check1 = diff(sol,t) - 3*sol
check2 = vpa(subs(sol, t, 0))
如果我用“factor”代替“collect”,脚本几乎在 Octave 上工作,符号包链接到 SymPy,除了“solve”命令https://www.mathworks.com/help/symbolic/solve.html。
是否有任何 Octave(或 SymPy,如果它可以作为一种解决方法)命令可以用作 MATLAB 符号工具箱“求解”命令,这样我就可以使用带有脚本的拉普拉斯变换来求解 IVP,所以我不必须手动求解X,然后使用“ilaplace”?
提前感谢您提供的任何帮助。
【问题讨论】:
-
你所说的“几乎”作品是什么意思?顺便说一句,
collectseems 用于收集系数;我在符号包中发现了一个coeffs函数,它似乎是等效的(尽管,是的,factor在这种情况下似乎可以工作)。 -
基于我在运行此代码时遇到的错误 (
Python exception: AttributeError: MutableDenseMatrix has no attribute is_Relational),这可能是相关的:stackoverflow.com/questions/42802588/… -
非常感谢您的回复! coeffs 函数确实似乎是我感兴趣的!一个简单的矩阵乘法 [1;X] 再现了 MATLAB 的集合。我有一些复制上述 MATLAB 脚本的半成品脚本(至少大约),但我会在下面的“答案”中发布这些脚本。再次感谢您的回复!
标签: matlab octave sympy differential-equations