是的,您正在从dsolve
呼叫回来一个形式为y(t)=<some series>
的等式。
dsol := dsolve({diff(y(t), t) = y(t)*t, y(1) = 1}, y(t), series, t = 1, order = 5);
2 2 3 5 4 / 5\
dsol := y(t) = 1 + (t - 1) + (t - 1) + - (t - 1) + -- (t - 1) + O\(t - 1)/
3 12
您还可以将重要的是右手边的多项式系列结构(即摆脱了大O的术语)。
convert(dsol, polynom);
2 2 3 5 4
y(t) = t + (t - 1) + - (t - 1) + -- (t - 1)
3 12
您还可以在该等式上评估所需表达式y(t)
。 (或者你可以只使用rhs
命令。对于方程组在多变量的情况下eval
方法是更强大,简单明了。)
eval(y(t), convert(dsol, polynom));
2 2 3 5 4
t + (t - 1) + - (t - 1) + -- (t - 1)
3 12
最后,你也可以从这个表达式产生操作。
Y := unapply(eval(y(t), convert(dsol, polynom)), t);
2 2 3 5 4
Y := t -> t + (t - 1) + - (t - 1) + -- (t - 1)
3 12
该运算符是一个过程,可以应用于任何你想要的点。
Y(3);
19
我把它上面的方法,其中分配给Y
的声明恰好包含所有的各个步骤。这是您需要执行的唯一一个声明,以获取我分配给Y
的运营商。如果您愿意,可以分别执行每个步骤,并将每个中间结果分配给某个名称。这取决于你是否希望他们出于任何其他目的。
restart:
dsol := dsolve({diff(y(t), t) = y(t)*t, y(1) = 1}, y(t), series, t = 1, order = 5):
peq := convert(dsol, polynom):
p := eval(y(t), peq):
Y := unapply(p, t):
Y(3);
19
这是绝对清楚,100%完美。非常感谢! – 2015-03-02 19:23:45