首页 >电脑教程 >电脑知识 >matlab不定积分

matlab不定积分

王林
王林转载
2024-01-22 17:42:061010浏览

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删除