2016-07-25 62 views
0

我有一個問題的整合時,偏移,因爲這項工作的許多功能,但我想要繪製正弦的積分(我使用MATLAB 2010)當一個麻煩:MATLAB密謀罪

clear all 
close all 
clc 

x = linspace(-10, 10, 100); 

f = @(x) sin(x); 

I = arrayfun(@(x) quad(f, 0, x), x); 
plot(x, f(x),'r', x, I, 'b') 

我期望有一個-cos(x),但是我會得到一個偏移量爲1的東西,爲什麼會發生這種情況?如何解決這個問題?

+0

您使用'0'作爲降低整合的限制。所以定積分('I')應該在* x * ='0'處爲'0',就是這樣。你發現什麼抵消? –

+1

我不認爲你的代碼做你認爲它的作用。 – edwinksl

+0

是的,我發現我的錯誤,我的下限是任意的。沒有偏移,結果是預期的。但是,我想,例如,如果我有f(x)= sin(x),繪製f(x),當我整合f(x)時得到的積分常數等於0 – dpalma

回答

4

Fundamental Theorem of Calculus說,一個nice function˚FX)的不定積分等於函數的反導˚FX),這是獨一無二的達到一個加法常數。此外,一個定積分具有以下形式:

Fundamental Theorem of Calculus

在這種形式中,積分常數將抵消,並且積分將正好等於所希望的原函數僅如果下界評價消失。但是,-cos(0)不會消失,其值爲-1。因此,爲了計算所需的抗衍生物Fx),下限評估應該被添加到右側。

plot(x, f(x),'r', x, I+ (-cos(0)), 'b'); 

這相當於爲ODE a la ode45的解決方案分配一個初始值。

0

根據Matlab的文檔,q = quad(fun,a,b)

正交是用於查找函數的曲線圖下面的面積的數值方法,即,計算一個定積分。

積分罪(X)等於-cos(x)的

sin(x)定積分從x = pix = 0
-cos(pi) - (-cos(0)) = 2

由於quad計算定積分,我看不到任何問題。

同:
figure;plot(-cos(x) - (-cos(0)))

+0

是的,你是對的,我正在用數值例子進行測試,結果很有意義。我正在做一個作業,要求繪製一個函數和函數的積分,但這是沒有意義的,因爲積分取決於積分間隔,​​所以......我猜根本沒有問題,因爲我的下限是任意的,在這種情況下,0 – dpalma

+0

謝謝你提醒我關於確定和不確定積分的記憶。 – Rotem

1

你想做些什麼可以使用以下來實現:

x = linspace(-10, 10, 100); 

syms y; 
f = sin(y)  %function 

I =int(f,y) %integration of f 
plot(x, subs(f,y,x),'r', x, subs(I,y,x), 'b') 

輸出: -

output

+0

我認爲你的意思是「積分」,它是符號「int」的數字版本。 – TroyHaskin

+1

確實。不過,我會注意到,作爲現代集成商,R2012a中增加了「積分」。在OP的R2010版本中,我認爲'quad'仍然是默認設置。 – TroyHaskin