从Maple的解决方案中拯救解决方案

时间:2012-07-01 02:12:16

标签: maple equation-solving

我有类似

的东西

solutions := solve ( {eqn1=0, eqn2=0, eqn3=0, eqn4=0, ... } )

返回的内容如下:

solutions := {Ax = -.2312688085, Ay = -7.770329620, Bx = -19.76873119, ....}

如何访问和保存每个解决方案?
是“Ax:=解决方案[1];”,等等,这是唯一的方法吗?

虽然解决方案[1]在上面的例子中没有访问-.2312688085,但是有一种字符串“Ax = -.2312688085”,所以我最终得到了“Ax:= Ax = -.2312688085”

1 个答案:

答案 0 :(得分:2)

在评估涉及这些名称的其他表达式时,eval命令允许您使用解决方案,就像分配了Ax,Ay等一样。无需实际进行分配即可获得此效果(其好处是您可以在这些变量中创建其他方程式而无需取消分配名称)。

另一种方法是使用assign命令实际将返回的数值赋值给那些变量名。但这使得后续尝试使用这些符号变量名称更加尴尬 - 您必须首先取消分配它们。你可能不想陷入一种不必分配/取消分配的尴尬模式。

我认为使用eval会更容易。但是你可以尝试两种方式,然后使用你喜欢的方式。

一些例子可能有所帮助:

restart:

eq1 := Ax + Ay + 8.001598428:
eq2 := Bx + 20.08373119:
eq3 := By + Ay + 8.085329620:
eq4 := By + 0.315:

solutions := solve([eq1=0, eq2=0, eq3=0, eq4=0]);

    {Ax = -0.2312688080, Ay = -7.770329620, Bx = -20.08373119, 
     By = -0.3150000000}

eval(Ax, solutions);

                     -0.2312688080

eval(Ax^2 + sin(By), solutions);

                     -0.2563312096

eq5 := cos(Bx) + sin(Ax);   # still convenient

                   cos(Bx) + sin(Ax)

restart:

eq1 := Ax + Ay + 8.001598428:
eq2 := Bx + 20.08373119:
eq3 := By + Ay + 8.085329620:
eq4 := By + 0.315:

solutions := solve([eq1=0, eq2=0, eq3=0, eq4=0]);

  {Ax = -0.2312688080, Ay = -7.770329620, Bx = -20.08373119, 
   By = -0.3150000000}

assign(solutions);

Ax;

                     -0.2312688080

Ax^2 + sin(By);

                     -0.2563312096

eq5 := cos(Bx) + sin(Ax); # oops

                      0.1010869460

unassign('Ax'):
unassign('Bx'):

eq5 := cos(Bx) + sin(Ax);

                   cos(Bx) + sin(Ax)