首頁  >  文章  >  電腦教學  >  matlab不定積分

matlab不定積分

王林
王林轉載
2024-01-22 17:42:06956瀏覽

matlab不定積分

matlab不定積分

等價無窮小替換

∵ln(1 x)~x

#∴ln[e^sinx ³√(1-cosx)]=ln[1 e^sinx ³√(1-cosx)-1]~e^sinx ³√(1-cosx)-1

∵arctanx~x

#∴arctan[2³√(1-cosx)]~2³√(1-cosx)

∴原式=(1/2)lim(x→0) [e^sinx ³√(1-cosx)-1]/³√(1-cosx)

=(1/2){lim(x→0) [e^sinx-1]/³√(1-cosx) lim(x→0)³√(1-cosx)/³√(1- cosx)}

=1/2 (1/2)lim(x→0) [e^sinx-1]/³√(1-cosx)

再用等價無窮小替換

∵e^x-1~x

#∴e^sinx-1~sinx~x

1-cosx~x²/2

∴原式=1/2 (1/2)lim(x→0) [e^sinx-1]/³√(1-cosx)

=1/2 (1/2)lim(x→0) x/³√(x²/2)

=1/2 (1/2)lim(x→0) ³√(2x)

=1/2

試用matlab如下數值積分其中R r為常數

題主的做法主要存在兩點問題:

1、quad函數用於計算數值積分,函數表達式中不能包含符號量;

2、被積函數的表達式應該寫成關於被積變數的向量化的形式(也就是應該用點運算)。

參考程式碼:

R=1;

syms L;

rr = 0 : 0.1 : 1;

for ii = 1 : length(rr)

r = rr(ii);

f = @(l)(acos((1 l*l-r*r)/(2*l)) r*r*acos((r*r l*l-1)/(2*r*l) )-0.5*sqrt(4*r*r-(1 r*r-l*l)^2))*2*l/(pi*r^4);

fun = @(L) arrayfun(f,L);

J(ii) = quadl(fun,0,r);

end

plot(rr, J)

或也可以藉用樓上 楓簫1 的部分程式碼,寫成:

R=1;

syms L;

rr = 0 : 0.1 : 1;

for ii = 1 : length(rr)

r = rr(ii);

SOA=R^2*acos((R^2 L^2-r^2)/(2*R*L)) r^2*acos((r^2 L^2-R^2) /(2*r*L))-...

0.5*sqrt(4*R^2*r^2-(R^2 r^2-L^2)^2);

PAB=SOA/(pi*r^2);

p=2*L/r^2;

f=PAB*p;

fun = eval(['@(L)' vectorize(f)]);

fun = @(l) arrayfun(@(L)eval(f),l);

J(ii) = quadl(fun,0,r);

end

plot(rr, J)

以上程式碼雖可以運行,但被積函數有問題-SOA的第一個反餘弦的值可能出現複數(因為在r稍小的情況下,acos的參數大於1),請題主再仔細檢查一下。

以上是matlab不定積分的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:docexcel.net。如有侵權,請聯絡admin@php.cn刪除