Maxima:评估嵌入 diff() 名词的函数 f(x)
Maxima: evaluate a function f(x) embedding diff() nouns
我按照 these 说明生成泰勒级数:
f(x) := ''(ratdisrep(taylor(qExct('x),'x,0,5)));
qExct 是一个未定义的函数: 我想对作为平滑函数的任何 qExct 执行特定计算。
知道了这一点,如何将变量 x
设置为某个值(例如 1)?
如果我这样做:
f(1);
然后 maxima returns 我出现以下错误 :
diff: variable must not be a number; found: 1
如果我这样做 :
f(D);
然后它将 D
视为一个变量,并将所有出现的变量 x
替换为变量 D
。特别是,它使用 d/dD 而不是 d/dx 来区分。但是,我想要的是仅在 x^n 项中用数字 1
替换变量 x
并保持导数不变......
我该怎么做?
diff
表达式中的变量在 Maxim 中并非处处都被识别为虚拟(正式)变量,因此当您尝试计算 f(1)
时,Maxima 将 1 代入 diff
表达式并导致错误。我认为这是一个错误;我会做一个关于它的错误报告。
作为解决方法,您可以使用 Maxima 附带的附加包 pdiff
(位置导数)。该表示法与 Maxima 默认使用的 dy/dx 表示法略有不同。
(%i1) load (pdiff) $
(%i2) f(x) := ''(ratdisrep(taylor(qExct('x),'x,0,2)));
2
qExct (0) x
""(2)
(%o2) f(x) := ---------------- + qExct (0) x + qExct(0)
2 ""(1)
(%i3) f(h);
2
qExct (0) h
(2)
(%o3) -------------- + qExct (0) h + qExct(0)
2 (1)
(%i4) ev (%, qExct=sin);
(%o4) h
(%i5) ev (%o3, h=1);
qExct (0)
(2)
(%o5) ----------- + qExct (0) + qExct(0)
2 (1)
我认为 f(x) := ...
显示中的虚假 ""
是轻微的显示错误;我想你可以忽略它们。
在您的 Maxima 安装中 share/pdiff/pdiff-doc.pdf
中有 pdiff
的文档。
这是另一个解决方案,它使用 at
而不是 pdiff
。
(%i1) f(x) := ''(ratdisrep(taylor(qExct('x),'x,0,2)));
!
2 !
2 d !
x (--- (qExct(x))! )
2 !
dx ! !
!x = 0 d !
(%o1) f(x) := ------------------------- + x (-- (qExct(x))! ) + qExct(0)
2 dx !
!x = 0
(%i2) at(f(x), x=1);
!
! !
2 ! !
d ! !
--- (qExct(x))! !
2 ! !
dx ! ! !
!x = 0! ! !
!x = 1 d ! !
(%o2) -------------------------- + -- (qExct(x))! ! + qExct(0)
2 dx ! !
!x = 0!
!x = 1
(%i3) %, qExct=sin;
!
! !
2 ! !
d ! !
--- (sin(x))! !
2 ! !
dx ! ! !
!x = 0! ! !
!x = 1 d ! !
(%o3) ------------------------ + -- (sin(x))! !
2 dx ! !
!x = 0!
!x = 1
(%i4) %, nouns;
(%o4) 1
请注意 f(1)
是通过 at(f(x), x=1)
求值的。
嵌套的 at
表达式很麻烦;我已经修复它(在 Maxima 的源代码中),这样就不会再发生了。
我按照 these 说明生成泰勒级数:
f(x) := ''(ratdisrep(taylor(qExct('x),'x,0,5)));
qExct 是一个未定义的函数: 我想对作为平滑函数的任何 qExct 执行特定计算。
知道了这一点,如何将变量 x
设置为某个值(例如 1)?
如果我这样做:
f(1);
然后 maxima returns 我出现以下错误 :
diff: variable must not be a number; found: 1
如果我这样做 :
f(D);
然后它将 D
视为一个变量,并将所有出现的变量 x
替换为变量 D
。特别是,它使用 d/dD 而不是 d/dx 来区分。但是,我想要的是仅在 x^n 项中用数字 1
替换变量 x
并保持导数不变......
我该怎么做?
diff
表达式中的变量在 Maxim 中并非处处都被识别为虚拟(正式)变量,因此当您尝试计算 f(1)
时,Maxima 将 1 代入 diff
表达式并导致错误。我认为这是一个错误;我会做一个关于它的错误报告。
作为解决方法,您可以使用 Maxima 附带的附加包 pdiff
(位置导数)。该表示法与 Maxima 默认使用的 dy/dx 表示法略有不同。
(%i1) load (pdiff) $
(%i2) f(x) := ''(ratdisrep(taylor(qExct('x),'x,0,2)));
2
qExct (0) x
""(2)
(%o2) f(x) := ---------------- + qExct (0) x + qExct(0)
2 ""(1)
(%i3) f(h);
2
qExct (0) h
(2)
(%o3) -------------- + qExct (0) h + qExct(0)
2 (1)
(%i4) ev (%, qExct=sin);
(%o4) h
(%i5) ev (%o3, h=1);
qExct (0)
(2)
(%o5) ----------- + qExct (0) + qExct(0)
2 (1)
我认为 f(x) := ...
显示中的虚假 ""
是轻微的显示错误;我想你可以忽略它们。
在您的 Maxima 安装中 share/pdiff/pdiff-doc.pdf
中有 pdiff
的文档。
这是另一个解决方案,它使用 at
而不是 pdiff
。
(%i1) f(x) := ''(ratdisrep(taylor(qExct('x),'x,0,2)));
!
2 !
2 d !
x (--- (qExct(x))! )
2 !
dx ! !
!x = 0 d !
(%o1) f(x) := ------------------------- + x (-- (qExct(x))! ) + qExct(0)
2 dx !
!x = 0
(%i2) at(f(x), x=1);
!
! !
2 ! !
d ! !
--- (qExct(x))! !
2 ! !
dx ! ! !
!x = 0! ! !
!x = 1 d ! !
(%o2) -------------------------- + -- (qExct(x))! ! + qExct(0)
2 dx ! !
!x = 0!
!x = 1
(%i3) %, qExct=sin;
!
! !
2 ! !
d ! !
--- (sin(x))! !
2 ! !
dx ! ! !
!x = 0! ! !
!x = 1 d ! !
(%o3) ------------------------ + -- (sin(x))! !
2 dx ! !
!x = 0!
!x = 1
(%i4) %, nouns;
(%o4) 1
请注意 f(1)
是通过 at(f(x), x=1)
求值的。
嵌套的 at
表达式很麻烦;我已经修复它(在 Maxima 的源代码中),这样就不会再发生了。