0

我是 CAS 和maxima的新手。我想知道执行以下操作是否可行:

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

2)在PHP中,我有一些以字符串形式存储的最大值脚本,包括a, b, c,例如:

do {
  a=random(20);
  b=random(20);
  c=random(20);
}while (!(a > b) || !(b > c))

这样a, b, c随机化为期望值并满足要求。

3)检索a, b, cPHP 中的值。

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

4

4 回答 4

1

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

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

在 PHP 中:

exec('maxima -q -b file');

或者

system('maxima -q -b file');

如果您的操作系统是Win

$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 中将文件作为字符串读取,您可以根据需要对字符串进行任何其他操作。

于 2016-09-03T06:17:09.457 回答
0

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

      <?php
       require_once("extension/Maxima.php");

       ?>

对于回声示例

              echo $A ;
于 2013-06-21T02:40:57.140 回答
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;
  }
}
?>
于 2013-06-21T06:24:45.057 回答
0

如果目标是使用 Maxima 创建由 Web 服务器提出的家庭作业问题,我认为已经有项目可以做到这一点。我认为其中一个名为 LON-CAPA——网络搜索应该会找到它。在 Maxima 网站的相关项目页面上可能还提到了一些其他项目。[1]

[1] http://maxima.sf.net/relatedprojects.html

于 2013-06-25T23:04:58.947 回答