2017-03-03 40 views
1

我整合下列表達式:爲什麼Matlab提供了一個任意常量的積分?

SIN(2 * X)/ 4 - 8 *的sin(x)

在Matlab中,我把

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

並返回

17*cos(x/2)^2 - cos(x/2)^4 

Wolfram,我輸入

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

,並返回

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]'(沒有明確的常量,因爲像matlab一樣,如果您需要閱讀文檔並理解它給您一個抗衍生物,並且antiderivatives是在任意常量內不是唯一的)。 – agentp

回答

1

根據int documentation,「int返回的結果不包含積分常量」。但很明顯,一些在解決方案中被引入。所以我想一個更好的陳述是:MATLAB不會爲解決方案引入任何新的符號常量(不像WolframAlpha意味着像Mathematica一樣)。

然而,明顯地,引入並可能隱藏在解中的確定的任意常數可以由解算法引入。這是完全有效的,因爲不定積分產生無限數量的有效解決方案sans初始或終端數據。

根據MuPAD documentation of int(MATLAB的符號引擎),通過「表查找或Risch集成」解決了不確定積分問題,我確信這是在事先進行一些前端解析和簡化以便引導之後。因此,無論決策樹的哪個分支符號引擎停止運行,都會產生三角函數的功能,這些功能表示在它們減少時引入常量。我不知道這是否是標準做法。但是我可以看到給算法提供一些餘地來引入這些常量對於一個強大的解決方法可能是有益的,因爲象徵性的不確定整合是一項非常困難的任務。

所以要試着回答這個問題:「爲什麼Matlab覺得需要提供一個不斷的整合,最終它是隨意的?」它是這樣做的,因爲它可以,並且基礎算法由於某種原因確定它是正確的操作過程。此外,該解決方案是完全有效的,因爲它是任意的。 「

」看起來有點危險。「我會不同意。雖然不完全理想,但一旦適當的數據被引入並與解決方案一起使用,整合的結果將是正確的。如果不存在這樣的適當數據,則該問題未被指定,並且任何解決方案對於任意常量都是有效的。

+0

聽起來像你知道你的東西。這聽起來像沒有辦法「關閉」? – ThatsRightJack

+0

如何獲得Matlab輸出8 * cos(x) - 1/8 * cos(2 * x)+ 65/8而不是17 * cos(x/2)^ 2 - cos(x/2)^ 4?我想看看它正在添加的常量集成。 – ThatsRightJack

+0

@ThatsRightJack對不起,週末忘了這件事。鑑於象徵性無限融合的明顯複雜性以及文檔中缺少選項,我懷疑這是可以關閉的東西。就是這樣。至於簡化,它可能需要一些按摩後整合,但是'I = int(sin(2 * x)/ 4-8 * sin(x));''和'rewrite(展開(簡化(重寫(I, 'exp'))),'cos')'給出了期望的結果。 – TroyHaskin

相關問題