この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)