2017-01-25 116 views
0

私はこの問題に直面しています。別の変数に応じて式を派生したい使用して、彼らは)道、より長く複雑だ:Mathematicaで派生するときに "一般:: :: ivar:...は有効な変数ではありません"

y := x^2 + x + 1; 
z := sqrt[y]; 
D[z, y] 
General::ivar: 1+x+x^2 is not a valid variable. 

私は私のような変数を展開する場合、私は問題を解決することができました。この

D[sqrt[1 + x + x^2], x] 

が、長い表現のためにそれが実行可能ないないようです。この問題を解決する簡単な方法はありますか?

ありがとうございます。

+1

Mathematicaに 'sqrt'を理解させたい場合は' Sqrt'を使います。さらに、 'D [z、y]'では、 'y'を第2引数にするのか' x'にするのかは完全にはっきりしていません。 –

+0

申し訳ありませんが、私はSqrtを修正しましたが、まだそのエラーメッセージが表示されます。私が望むのは、yに関するzの導関数の表現です。つまり、1 /(2 * sqrt(y))です。 – matteeeo

+1

しかし、 ':='(SetDelayed)を使って 'y'を定義しています。つまり、プログラムの後ろで' y'を求めるときに 'x^2 + x + 1'に置き換えられます。 Mathematicaは 'D []'の第2引数としてそれを好きではない。 'D [Sqrt [q]、q]'を試してください。ここで 'q 'はまだワークスペースに値を持っていないシンボルです。 –

答えて

0

あなたの表記は一貫していません。 D[z, y]D[z, x]に置き換えると、目的の回答が得られます。

y := x^2 + x + 1; 
z := Sqrt[y]; 
D[z, x] 
+0

ええ、私はD [z、x]を望んでいません、私はD [z、y]が欲しいです。 Sqrtは単なる例であり、私が使用している実際の式はずっと長くなっています。そのため、例として使用しましたが、それらはまだ他の関数として定義されています。 – matteeeo

+0

@matteeeoあなたは 'z' w.r.t' x^2 + x + 1'をw.r.t 'x'と区別したいと言っていましたか? – zhk

+0

私のスクリプトでは、いくつかの座標変換を扱っているので、それらは他の座標の関数として順次定義されています。私はそれらを組み合わせる必要があるので、ある場合にはD [y、x]が必要であり、他の場合にはD [z、x]が必要であり、他はD [z、y]が必要です。私の質問は、yが既にx^2 + x + 1として定義されているときに、D [z、y]を得る方法は? – matteeeo

関連する問題