为什么 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 输入来完成其中任何一个,如您的屏幕截图所示。
以下都是用表达式完成的。它使用活动命令 diff
、eval
和 int
(立即计算)。
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;
下面也是用表达式来完成的。但它使用惰性命令 Diff
、Eval
和 Int
,以便您可以在使用 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__1
、f__
和 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 节)。
我正在使用 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 输入来完成其中任何一个,如您的屏幕截图所示。
以下都是用表达式完成的。它使用活动命令 diff
、eval
和 int
(立即计算)。
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;
下面也是用表达式来完成的。但它使用惰性命令 Diff
、Eval
和 Int
,以便您可以在使用 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__1
、f__
和 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 节)。