2017-03-03 12 views
1

、私は次の式統合しています:Matlabは、任意の積分定数を提供するのはなぜですか?

罪(2 * X)/ 4 - MATLABで8 *罪(x)の

を、私は

syms x 
int(sin(2*x)/4 - 8*sin(x)) 

に入れて、それが

を返します。
17*cos(x/2)^2 - cos(x/2)^4 
Wolfram

、I入力

int(sin(2*x)/4 - 8*sin(x)) 

と、2つのソリューションを比較のために

8 cos(x) - 1/8 cos(2 x) + constant 

を返し、私はWolfram

int(sin(2*x)/4 - 8*sin(x)) == 17*cos(x/2)^2 - cos(x/2)^4 

に以下を入れて、MATLABのソリューションはヴォルフラムの葉のに対し、統合65/8の定数を与える示し積分定数は任意である。私は最終的な解決策に大きな違いがあるので、私はこれをキャッチしてうれしいですが、定数です。私の質問は、Matlabはなぜそれが恣意的なのか、一定の統合を提供する必要性を感じているのでしょうか?ちょっと危険だと思う。

+2

fwiw mathematicaは、8個のCos [x] - 1/8 Cos [2 x] 'を与えます。明示的な定数はありません。これは、ドキュメントを読むことが期待され、任意の定数内で一意ではない)。 – agentp

答えて

1

int documentationによれば、「intによって返された結果には統合定数は含まれていません」。しかし明らかに、いくつかはソリューション中に導入されました。だから私はより良い声明があると思います:MATLABは、WolframAlphaとは異なりMathematicaのように、新しい記号定数を見つけたらそれを新しい関数に導入しません。しかし、明らかに、解法に導入され、場合によっては隠された明確な任意の定数を解法アルゴリズムによって導入することができる。これは完全に有効です。不定積分では、初期データまたは端末データを含まない無限の有効解が得られるからです。

MuPAD documentation of int(MATLABの記号エンジン)によれば、不定積分は「テーブルルックアップまたはRisch積分」で取り組まれています。前もって起動するためにいくつかのフロントエンドの解析と単純化が行われていることは確かです。したがって、シンボリック・エンジンがダウンした意思決定木のどの枝であっても、最終的に定数が導入されたことを示す三角関数の力が得られました。これが標準的な練習であるかどうかはわかりません。しかし、このような定数を導入するためにアルゴリズムにいくらか余裕を持たせることが、象徴的な不定積分は非常に難しい作業であるため、頑健な解法には有益であるかもしれません。

"なぜMatlabは、結局のところ、いつも一定の統合を提供する必要性を感じているのですか?"それが可能なので、それを実行し、何らかの理由で根底にあるアルゴリズムが正しい行動コースであると判断したためです。また、解は恣意的なので完全に有効です。

「ちょっと危険です」私は同意しない。完全に理想的ではありませんが、適切なデータが導入され、ソリューションと一緒に使用されると、統合の結果は正確になります。そのような適切なデータが存在しない場合、問題は不十分であり、任意の解は任意の定数に対して有効である。

+0

あなたのことを知っているような音。それを "シャットオフ"する方法はないように聞こえる? – ThatsRightJack

+0

Matlabに17 * cos(x/2)^ 2 - cos(x/2)^に対して8 * cos(x) - 1/8 * cos(2 * x)+ 65/8を出力するにはどうすればよいですか? 4?私はそれが加えている統合の定数を見たいと思います。 – ThatsRightJack

+0

@ThatsRightJack遅れて申し訳ありません。週末にこれを忘れてしまった。シンボリックな不確定な統合の明らかな複雑さと、ドキュメントのオプションの欠如を考えると、私はそれがオフにできるものだとは思わない。それが現実さ。単純化については、積分後のマッサージを少し必要とするかもしれませんが、 'I = int(sin(2 * x)/ 4-8 * sin(x));'と 'rewrite(expand(simplify rewrite(I、 'exp')))、 'cos') 'は望ましい結果を与える。 – TroyHaskin

関連する問題