程序:龙贝格积分:
syms f x;
f=input('请输入积分函数f=');
A=input('请输入积分区间[a,b]=');
e=input('请输入误差限e=');
x=A(1);
fa=eval(f);
x=A(2);
fb=eval(f);
T(1)=(A(2)-A(1))*(fa+fb)/2;
m=1;
x=(A(1)+A(2));
t=T(1)/2+(A(2)-A(1))*eval(f)/2;
while abs(t-T(1))>e
t=T(1);
new=0;
for i=1:(2^m)
x=A(1)+(2*i-1)*(A(2)-A(1))/(2^(m+1));
new=new+eval(f);
end
T(m+1)=T(m)/2+(A(2)-A(1))*new/(2^(m+1));
for i=m:(-1):1
L(m,i)=T(i);
end
for p=m:(-1):1
T(p)=((4^(m+1-p))*T(p+1)-T(p))/(4^(m+1-p)-1);
end
m=m+1;
end
fprintf('数值积分结果为T(1)=%.8f\n',T(1));
fprintf('经过了%d次迭代\n',m);
用龙贝格积分法计算积分的近似值:
1.1请输入积分函数f=x^3
请输入积分区间[a,b]=[6,100]
请输入误差限e=1000
数值积分结果为T(1)=25000289.75465907
经过了15次迭代
1.2请输入积分函数f=x^3
请输入积分区间[a,b]=[6,100]
请输入误差限e=500
数值积分结果为T(1)=24999982.87732918
经过了16次迭代
2.1请输入积分函数f=sin(x)/x
请输入积分区间[a,b]=[0.1e-010,1]
请输入误差限e=0.1e-004
数值积分结果为T(1)=0.94607740
经过了12次迭代
2.2请输入积分函数f=sin(x)/x
请输入积分区间[a,b]=[0.1e-010,1]
请输入误差限e=0.1e-005
数值积分结果为T(1)=0.94608236
经过了15次迭代
3.1请输入积分函数f=sin(x^2)
请输入积分区间[a,b]=[0 1]
请输入误差限e=0.0001
数值积分结果为T(1)=0.31031986
经过了11次迭代
3.2请输入积分函数f=sin(x^2)
请输入积分区间[a,b]=[0,1]
请输入误差限e=0.1e-005
数值积分结果为T(1)=0.31026911
经过了17次迭代
龙贝格积分法计算积分近似值
850

被折叠的 条评论
为什么被折叠?



