为什么 MAPLE 不计算方程中的积分和导数?

Why is MAPLE not evaluating integrals and derivative inside my equations?

我正在使用 MAPLE 2019 并尝试插入彼此相关的不同方程,以便通过插入、积分和导数计算来评估其中一个,直到我得到一个只有自变量出现的紧凑的简短形式。

Here my screenshot

如您所见,积分和导数没有进一步计算。 我的目标是评估 R 作为所有自变量或成本函数的函数。

您的 Maple 文档表明您对 表达式 运算符 之间的区别一头雾水 (a.k.a。程序).

该文档还令人困惑,因为某些语句的执行顺序不正确。看起来好像您返回并重新执行了先前的语句。 (例如,看起来您在第 2 次之后重新执行了第 1 次,在第 4 次之后重新执行了第 3 次。)这对您没有帮助,尤其是在对表达式和运算符存在根本误解的情况下。

让我们快速回顾一下表达式和运算符。

一个表达式(例如exp(...))已经是一个函数调用,不能直接作为另一个函数调用应用。这是一个表达式,分配给名称 R1:

R1 := exp(-lambda1*t);

您不能只是 R1 应用于某些参数,在功能上。那是 而不是 使用替代值来替换 t 来评估该表达式的方法。您无法有效地执行以下操作,

R1(ts);

         exp(-lambda1*t)(ts)

可以对表达式做的是用它的一个符号(名称,如t)的新值来计算它。你可以这样做,

eval(R1, t=ts);

            exp(-lambda1 ts)

diff命令可用于表达式,例如,

f1 := diff(R1, t);

      f1 := -lambda1 exp(-lambda1 t)

您还可以在新的 t 值处评估该新表达式(对于导数)。例如,

eval(f1, t=ts);

        -lambda1 exp(-lambda1 ts)

现在我们来讨论运算符。运算符是一种使用漂亮的箭头符号打印(并可以输入)的简单过程。

R1 := t -> exp(-lambda1*t);

          R1 := t -> exp(-lambda1 t)

一个运算符可以应用于一个或多个参数,使用圆括号表示该函数调用。在此示例中,传递的参数 ts 被替换为运算符的参数 t.

R1(ts);

            exp(-lambda1 ts)

D 命令可以产生一个新的运算符,执行时计算导数。

f1 := D(R1);

     f1 := t -> -lambda1 exp(-lambda1 t)

f1(ts);

        -lambda1 exp(-lambda1 ts)

现在让我们考虑几种方法来处理您的示例。有几个,我只展示几个。关键是无论您处理的是表达式还是运算符,都要保持直截了当。

我不会包括下面的输出。但是一些实现它的方法将有漂亮的打印输出,您可能会发现这些输出对于查看数学上发生的事情更有用。

我建议您尝试并理解以下所有以 1D(纯文本)Maple 表示法编写的代码,然后再尝试使用(排版)2D 输入来完成其中任何一个,如您的屏幕截图所示。

以下都是用表达式完成的。它使用活动命令 diffevalint(立即计算)。

restart;
R := R__1 + R__S*P__2;
R__1 := exp(-lambda__1*t);
f__1 := diff(R__1, t);
R__2 := exp(-lambda__2*t);
eval(f__1,t=t__s);
eval(R__2,t=t-t__s);
P__2 := int(eval(f__1,t=t__s)*eval(R__2,t=t-t__s),t__s=0..t);
R;

下面也是用表达式来完成的。但它使用惰性命令 DiffEvalInt,以便您可以在使用 value 命令之前查看输出中发生的情况。

restart;
R := R__1 + R__S*P__2;
R__1 := exp(-lambda__1*t);
f__1 := Diff(R__1, t);
R__2 := exp(-lambda__2*t);
Eval(f__1,t=t__s);
Eval(R__2,t=t-t__s);
P__2 := int(Eval(f__1,t=t__s)*Eval(R__2,t=t-t__s),t__s=0..t);
R;
value(R);

以下全面使用运算符。

restart;
R := t -> R__1(t) + R__S*P__2(t);
R__1 := t -> exp(-lambda__1*t);
f__1 := D(R__1);
R__2 := t -> exp(-lambda__2*t);
f__1(t__s);
R__2(t-t__s);
P__2 :=  t -> int(f__1(t__s)*R__2(t-t__s),t__s=0..t);
R(t);

以下仅对 R__1f__R__2 使用运算符。

restart;
R := R__1(t) + R__S*P__2;
R__1 := t -> exp(-lambda__1*t);
f__1 := D(R__1);
R__2 := t -> exp(-lambda__2*t);
f__1(t__s);
R__2(t-t__s);
P__2 :=  int(f__1(t__s)*R__2(t-t__s),t__s=0..t);
R;

还有其他几种可能的变体。您可能需要阅读编程指南(尤其是第 3 章和第 6.9 节)。