web-dev-qa-db-ja.com

Set :: write:<something>のTagPlusは保護されています

私がこの方程式を持っている場合:

x+y=27
xy=180

私はそれを使用して解決したい:

Solve[{x+y==27,xy==180},{x,y}]

ただし、これにより次のエラーが発生します。

  • Set :: write:x + yのTagPlusは保護されています。 >>
  • Solve :: svars:方程式は、すべての「解決」変数の解を与えるとは限りません。 >>

どうして?そして、どうすればこれを修正できますか?

3
Tyilo

あなたがただラインを走らせるなら

Solve[{x + y == 27, x y == 180}, {x, y}]

その後、すべてが正常に実行され、{{x -> 12, y -> 15}, {x -> 15, y -> 12}}が見つかります。

表示されるエラーは、どこかに次のようなステートメントがあるためです。

In[1]:= x + y = 27

During evaluation of In[1]:= Set::write: Tag Plus in x+y is Protected. >>

Out[1]= 27

ここで、x + yの-​​ headPlusであり、これは保護されたシンボルであり、新しい定義を単純に与えることはできません。どこかに奇妙な定義が隠れている可能性があります。その場合は、カーネルを再起動して再試行するのが最も簡単です。

物語の教訓は、=Set )は==Equal )と同じではないということです。

3
Simon