Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Linux shell中求解线性系统?_Linux_Shell_Linear Algebra_Equations - Fatal编程技术网

如何在Linux shell中求解线性系统?

如何在Linux shell中求解线性系统?,linux,shell,linear-algebra,equations,Linux,Shell,Linear Algebra,Equations,有人知道Linux命令从标准输入读取线性方程组,并将解(如果存在)写入标准输出吗 我想这样做: generate_system | solve_system 您可能可以使用package编写自己的此类命令。这是一个老问题,但在我搜索这个问题时出现了,所以我在这里添加了一个答案 我使用了maxima的solve函数。将输入/输出与maxima进行争论有点困难,但可以做到 以逗号分隔的列表形式准备方程组——例如,EQs=“C[1]+C[2]=1,C[1]-C[2]=2”。我想要一个未知数量变量的解

有人知道Linux命令从标准输入读取线性方程组,并将解(如果存在)写入标准输出吗

我想这样做:

generate_system | solve_system

您可能可以使用package编写自己的此类命令。

这是一个老问题,但在我搜索这个问题时出现了,所以我在这里添加了一个答案

我使用了
maxima
solve
函数。将输入/输出与
maxima
进行争论有点困难,但可以做到

  • 以逗号分隔的列表形式准备方程组——例如,
    EQs=“C[1]+C[2]=1,C[1]-C[2]=2”
    。我想要一个未知数量变量的解决方案,所以我使用了
    C[n]
    ,但您可以使用变量名
  • 准备一份您希望为--EQ\u VARS=“C[1],C[2]”求解的变量列表
  • Maxima将回显所有输入,使用换行,并以
    [C[1]=…,C[2]=…]
    的形式返回解决方案。我们需要解决所有这些问题
  • 综合起来,这就成了

    OUT_VALS=( \
        $(maxima --very-quiet \
            --batch-string="display2d:false\$linel:9999\$print(map(rhs,float(solve([$EQs],[$EQ_VARS]))[1]))\$" \
            | tail -n 1 \
            | tr -c '0-9-.e' ' ') )
    
    将解决方案值放入数组
    $OUT\u VALS

    请注意,只有在问题得到正确约束的情况下,这才能正确处理最大输出——如果您没有或有多个解决方案,输出将无法正确解析