昨日、オープンソースのコンピューター代数システムである Sage をいじり始めました。Sage は Python を使用して、複数のオープンソース パッケージを 1 つのコーディング インターフェイスにバインドします。
残念ながら、Sage だけでなく、Python も同様に新しいものでした。私は今日の大部分を両方の学習に費やしました。何と言えばいい?かつてのオタク、ずっとオタク...
問題が発生したのは、多次元でベクトル システムを調べ始めたときです。
以下に示すように、変数 x、y、z をカプセル化するために var('w') を使用しようとしています。これにより、f(x,y,z) の代わりに f(w) と言うことができます。複数の数式がある場合に非常に便利です。問題は、w を初めて使用した後、「w」にリセットされることです。
wを「x、y、z」に継続的に再割り当てする以外に、定数を設定する方法はありますか? Python の Web ページの仕様によると、そのようには見えません。
PSとして、この問題に対する私の解決策は、不器用に思えます。私は学生ではありませんが、現在利用可能なテクノロジーに驚いている 40 代のオタクです。だから私には、助けを求めるTAも教授も仲間の学生もいません。
私の解決策...
1) 別の変数を定義します:
v=var('v')
v=(x,y,z)
2) 関数 f(x)、g(x)、h(x) を実行するたびに、値 w=v を再割り当てします。
ありがとう、レオ
** *コード* ** *
x=var('x')
y=var('y')
z=var('z')
w=var('w')
w=(x,y,z); print(w) #prints out 'x,y,z'
f(w) = ((2*x - y + 0*z)==0); print(w) #prints out 'w'
g(w) = ((-x + 2*y - z)==-1); print(w) #prints out 'w'
h(w) = ((0*x - 3*y + 4*z)==4); print(w) #prints out 'w'
solve((f(w), g(w), h(w)), w)) #returns errors since it needs to be
#solved in x,y,z, not w