Tcl调用最大值

时间:2017-06-26 17:06:56

标签: tcl maxima

如何在tcl中从外部程序发送和接收数据?我试试这个:

set d exec maxima --batch-string='5+10;'
puts d;

但它不起作用。我需要从tcl调用Maxima(http://maxima.sourceforge.net/index.html)并返回tcl maxima结果。官方文档是空的或非常老,示例不起作用。

2 个答案:

答案 0 :(得分:2)

我猜你最好打电话给这样的话:

malloc

为了清楚起见,我已将批处理字符串拆分为自己的变量,请注意单引号实际上对Tcl没有任何意义;他们是一个贝壳主义者。 Tcl使用不同的语法。

答案 1 :(得分:1)

我已经编写了函数maxima_call来轻松调用Maxima。您需要在maxima_path变量中设置自己的Maxima程序路径。在Linux上,它可以是set maxima_path maxima

proc maxima_call {expression} {
  set maxima_path "M:\\Programs\\maxima-5.40.0\\bin\\maxima.bat"
  set keys ""
#  set keys "display2d:false\$"

  set result [split [exec ${maxima_path}  --batch-string=${keys}${expression}\;] \n]
  set result [lreplace $result 0 4]
  return [join $result \n]
}

puts [maxima_call "5+10"]

但是我不清楚你是怎么解析计算结果的。例如,我从Maxima获得了这个输出。

set expression "\[aa : 1, bb : 2, cc : 3\]; (aa + bb + cc)/(dd + ee)"
puts [maxima_call $expression]

>

(%i1) [aa:1,bb:2,cc:3]
(%o1)                              [1, 2, 3]
(%i2) (aa+bb+cc)/(dd+ee)
                                       6
(%o2)                               -------
                                    ee + dd