如何解决求解符号方程中自变量的函数的系数
使用 Octave 的 symbolic 包,我像这样定义了 t 的符号函数:
>> syms a b c d t real;
>> f = poly2sym([a b c],t) + d * exp(t)
f = (sym)
2 t
a⋅t + b⋅t + c + d⋅ℯ
我还有另一个已知系数的函数:
>> g = poly2sym([2 3 5],t) + 7 * exp(t)
g = (sym)
2 t
2⋅t + 3⋅t + 7⋅ℯ + 5
我想对系数 f == g
求解 a,b,c,d
,这样方程对于 t
的所有值都成立。也就是说,我只想将两个方程中的 t^2
的系数和 exp(t)
的系数等相等。我正在寻找这个解决方案:
a = 2
b = 3
c = 5
d = 7
当我尝试使用 solve
求解方程时,我得到的是:
>> solve(f == g,a,d)
ans = (sym)
t 2 t
-b⋅t - c - d⋅ℯ + 2⋅t + 3⋅t + 7⋅ℯ + 5
───────────────────────────────────────
2
t
它根据 a
求解 b,d,t
。这是可以理解的,因为本质上变量 b,c
和 t
之间没有区别。但我想知道是否有一种方法可以以某种方式分离 项(使用它们的符号形式与变量 t
对应)并求解所得的线性方程组 a,d
。
注意:我在这里写的函数是一个最小的例子。我真正想做的是使用未定系数的方法求解线性常微分方程。例如,我定义了类似 y = a*exp(-t) + b*t*exp(-t)
的东西,并求解 diff(y,t,t) + diff(y,t) + y == t*exp(-t)
。但我相信用更简单的函数解决问题会引导我走向正确的方向。
解决方法
我找到了一种非常缓慢和肮脏的方法来完成工作。不过,[3,7,11]
中的系数必须是线性的。
我们的想法是遵循以下步骤:
- 以
a,b,...
形式写出方程(等于零) - 使用
f - g
分隔术语 - 使用
expand()
将等式中的项作为符号向量 - 现在我们有了向量中的项,我们可以找到那些与 t 函数相同的项并将它们的系数相加。我检查的方法是检查两个词的除法是否有
children()
作为符号变量 - 对于每一项,找出具有相同函数
t
的其他项,将所有这些系数相加,将得到的方程保存在一个向量中 - 将创建的方程的向量传递给
t
这段代码解决了我在问题末尾的注释中写的方程式:
solve()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。