【问题标题】:maxima: calling function with list as argument最大值:以列表为参数调用函数
【发布时间】:2015-07-02 20:55:21
【问题描述】:

我能做到:

(%i1) myFunc(x) := x^2 + 1;
      myList : [1,2,3];
      myFunc(myList);

(%o1) myFunc(x):=x^2+1
(%o2) [1,2,3]
(%o3) [2,5,10]

还有这个:

(%i1) kill(all);
      load("pdiff");
      myFunc(x) := ratdisrep(taylor(diff(q('dst),'dst,x),'dst,0,5));
      myFunc(1);
      myFunc(2);
      myFunc(3);
(%o1) myFunc(x):=ratdisrep(taylor(diff(q('dst),'dst,x),'dst,0,5))
(%o2) [1,2,3]
(%o3) (q[(6)](0)*dst^5)/120+(q[(5)](0)*dst^4)/24+(q[(4)](0)*dst^3)/6+(q[(3)](0)*dst^2)/2+q[(2)](0)*dst+q[(1)](0)
(%o4) (q[(7)](0)*dst^5)/120+(q[(6)](0)*dst^4)/24+(q[(5)](0)*dst^3)/6+(q[(4)](0)*dst^2)/2+q[(3)](0)*dst+q[(2)](0)
(%o5) (q[(8)](0)*dst^5)/120+(q[(7)](0)*dst^4)/24+(q[(6)](0)*dst^3)/6+(q[(5)](0)*dst^2)/2+q[(4)](0)*dst+q[(3)](0)

但我做不到:

(%i1) kill(all);
      load("pdiff");
      myFunc(x) := ratdisrep(taylor(diff(q('dst),'dst,x),'dst,0,5));
      myList : [1,2,3];
      myFunc(myList);

(%o1) myFunc(x):=ratdisrep(taylor(diff(q('dst),'dst,x),'dst,0,5))
(%o2) [1,2,3]
declare: argument must be a symbol; found "d"
 -- an error. To debug this try: debugmode(true);

为什么会发生这种情况,我该如何解决?

提前致谢!

【问题讨论】:

    标签: list function arguments maxima


    【解决方案1】:

    我不知道关于declare 的错误来自哪里——我在pdiff.lisp 中找不到任何对declare 的调用。当我复制您的第二个示例时,我得到的不是错误,而是:'diff(q(dst),dst,[1,2,3]),我认为这是意料之中的。

    我猜你想为myList 的每个元素创建一个带有myFunc 输出的列表。我的建议是简单地将myFunc 映射到myList。一些函数会自动映射列表;这是一个便利功能,并非所有功能都有。这是我在这种情况下得到的:

    (%i1) display2d : false $
    (%i2) load ("pdiff") $
    (%i3) myFunc(x) := ratdisrep(taylor(diff(q('dst),'dst,x),'dst,0,5)) $
    (%i4) myList : [1,2,3] $
    (%i5) map (myFunc, myList);
    (%o5) [((pderivop(q,6))(0)*dst^5)/120+((pderivop(q,5))(0)*dst^4)/24
                                         +((pderivop(q,4))(0)*dst^3)/6
                                         +((pderivop(q,3))(0)*dst^2)/2
                                         +(pderivop(q,2))(0)*dst
                                         +(pderivop(q,1))(0),
           ((pderivop(q,7))(0)*dst^5)/120+((pderivop(q,6))(0)*dst^4)/24
                                         +((pderivop(q,5))(0)*dst^3)/6
                                         +((pderivop(q,4))(0)*dst^2)/2
                                         +(pderivop(q,3))(0)*dst
                                         +(pderivop(q,2))(0),
           ((pderivop(q,8))(0)*dst^5)/120+((pderivop(q,7))(0)*dst^4)/24
                                         +((pderivop(q,6))(0)*dst^3)/6
                                         +((pderivop(q,5))(0)*dst^2)/2
                                         +(pderivop(q,4))(0)*dst
                                         +(pderivop(q,3))(0)]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-30
      • 2020-02-10
      • 1970-01-01
      • 1970-01-01
      • 2013-02-15
      • 1970-01-01
      • 1970-01-01
      • 2019-02-17
      相关资源
      最近更新 更多