发布
社区首页 >问答首页 >maxima-如何从php执行一些maxima脚本?

maxima-如何从php执行一些maxima脚本?
EN

Stack Overflow用户
提问于 2013-06-21 02:34:30
回答 4查看 2K关注 0票数 0

我是极大值和CAS的新手。我想知道这样做是否可行:

1) I有一个参数列表,例如a, b, c

2)中,有一些maxima脚本存储为字符串,涉及a, b, c,例如:

代码语言:javascript
代码运行次数:0
复制
do {
  a=random(20);
  b=random(20);
  c=random(20);
}while (!(a > b) || !(b > c))

这样,a, b, c被随机分配到所需的值并满足需求。

3)检索a, b, c在PHP中的值。

目的是为学生创建具有合理参数的随机问题。那么,如何执行maxima脚本并检索参数的值呢?适合我的目的吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-06-21 02:40:57

我真的不知道您的代码是如何工作的,但是如果您将maxima保存为php扩展,它就可以工作。将这一行代码放在php文件的开头

代码语言:javascript
代码运行次数:0
复制
      <?php
       require_once("extension/Maxima.php");

       ?>

对于回显示例

代码语言:javascript
代码运行次数:0
复制
              echo $A ;
票数 0
EN

Stack Overflow用户

发布于 2016-09-03 06:17:09

您可以将文件中的命令字符串传递给Maxima,这是命令行Maxima支持的。

如果您的操作系统是Linux/Unix/MacOS

在PHP中:

代码语言:javascript
代码运行次数:0
复制
exec('maxima -q -b file');

代码语言:javascript
代码运行次数:0
复制
system('maxima -q -b file');

如果您的操作系统是Win

代码语言:javascript
代码运行次数:0
复制
$maximaDir = 'D:/Program Files/Maxima-5.30.0'; // If your maxima is installed in elsewhere, please modified this location

exec($maximaDir.'/bin/maxima.bat -q -b "result.txt"');

在Maxima中,您可以使用stringout();在文件中获得结果,然后在PHP中将文件读取为字符串,您可以根据需要对字符串执行任何其他操作。

票数 1
EN

Stack Overflow用户

发布于 2013-06-21 06:24:45

代码语言:javascript
代码运行次数:0
复制
<?php

require_once($_SERVER['PM_BASE_CONFIG_PATH']);

class maxima_core {
  private $executable_command;
  protected $dbg_bool;
  protected $dbg_info;
  public function __construct($dbg=FALSE){
    $this->executable_command=constant('PM_MAXIMA_EXEC_CMD');
    $this->dbg_bool=$dbg;
    $this->dbg_info="";
  }
  protected function exec($query){// to include package that is loaded by init_command
    $descriptor = array(
      0 => array("pipe", "r"),  // stdin is a pipe that the child will read from
      1 => array("pipe", "w"),  // stdout is a pipe that the child will write to
      2 => array("file", "/tmp/error-log.txt", "a")//constant('PM_SERVER_LOG_DIR')."/maxima/error.log", "a") // stderr is a file to write to
    );
    $cwd=constant('PM_ACTIVITY_PLUGIN_URL')."/engine_solver";
    $MAXIMA_DIR = constant('PM_ACTIVITY_PLUGIN_DIR');
    $env=array();
    $init_command="display2d:false$" . "PM_ACTIVITY_PLUGIN_URL: \"" . $MAXIMA_DIR . "\"$";
    //'load("/home/gabriel/github/moodledata/stack/maximalocal.mac");';
    $exec_cmd=$this->executable_command." --quiet";
    // --userdir='".constant('PM_ACTIVITY_PLUGIN_DIR')."/engine_solver/maxima_userdir'";
    // change
    $result=NULL;
    $process=proc_open($exec_cmd,$descriptor,$pipes,$cwd,$env);
    if(is_resource($process)){
      if (!fwrite($pipes[0], $init_command)) {
        echo "<br />Could not write to the CAS process!<br />\n";
      } else {
        fwrite($pipes[0], $query);
        fwrite($pipes[0], "quit();");
        fclose($pipes[0]);
        $result=stream_get_contents($pipes[1]);
        fclose($pipes[1]);
        proc_close($process);
      }
    }
    return $result;
  }
  public function dbg_info(){
    return $this->dbg_info;
  }
}
?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17226875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档