ホームページ >コンピューターのチュートリアル >コンピュータ知識 >MATLAB 不定積分
等価無限小置換
∵ln(1 x)~x
∴ln[e^sinx 3√(1-cosx)]=ln[1 e^sinx 3√(1-cosx)-1]~e^sinx 3√(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
1. クワッド関数は数値積分を計算するために使用され、関数式にはシンボリック量を含めることはできません。
2. 被積分関数の式は、被積分関数変数に関してベクトル化された形式で記述する必要があります (つまり、点演算を使用する必要があります)。
###参照コード:### ##R=1;シムスL;
rr = 0 : 0.1 : 1;
for ii = 1 : 長さ(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);
###終わり###
プロット(rr, J)または、2 階の Fengxiao 1 からコードの一部を借用して、次のように書くこともできます:
##R=1;
シムスL;
rr = 0 : 0.1 : 1;
for ii = 1 : 長さ(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)' ベクトル化(f)]);
fun = @(l) arrayfun(@(L)eval(f),l);
J(ii) =quadl(fun,0,r);
###終わり###プロット(rr, J)
上記のコードは実行できますが、被積分関数に問題があります。SOA の最初の項の逆余弦の値は複素数である可能性があります (r がわずかに小さい場合、acos のパラメーターが大きくなるため) 1)より、よくご確認の上、再度質問してください。
以上がMATLAB 不定積分の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。