登录论坛

查看完整版本 : [求助]求个高手都下面程序每步解释一下!(急用)


pgxy2000
2008-12-25, 11:52
function result=tintergrate()
clear re_n re_2n;
n=1;
eps=0.00001;
x=linspace(0,1,n+1);
h=1/n;
y=x./(4+x.^2);
re_n=(y(1)+y(n+1))*h/2;
for i=2:n
re_n=re_n+y(i)*h;
end
xx=x(1:n)+h/2;
y=x./(4+x.^2);
re_2n=re_n/2;
for i=1:n
re_2n=re_2n+y(i)*h/2;
end
h=h/2;
n=1/h;
x=linspace(0,1,n+1);
while abs(re_2n-re_n)>eps
re_n=re_2n;
xx=x(1:n)+h;
y=x./(4+x.^2);
re_2n=re_n/2;
for i=1:n
re_2n=re_2n+y(i)*h/2;
end
h=h/2;
n=1/h+1;
x=linspace(0,1,n+1);
end
result=re_2n;
%the end

mathjiang
2008-12-25, 21:54
function result=tintergrate() %定义函数:函数名tintergrate,函数计算后输出结果为result,没有输入项。
clear re_n re_2n; % 清除workspace中的变量re_n,re_2n。
n=1;
eps=0.00001; % n,eps两个常数
x=linspace(0,1,n+1); %生成一个n+1维行向量,该向量元素是0开头、1结尾的等差数列。
h=1/n;
y=x./(4+x.^2); %计算向量x对应的函数值向量y
re_n=(y(1)+y(n+1))*h/2;
for i=2:n
re_n=re_n+y(i)*h; %for循环
end
xx=x(1:n)+h/2;
y=x./(4+x.^2);
re_2n=re_n/2;
for i=1:n
re_2n=re_2n+y(i)*h/2;
end
h=h/2;
n=1/h;
x=linspace(0,1,n+1);
while abs(re_2n-re_n)>eps %while循环
re_n=re_2n;
xx=x(1:n)+h;
y=x./(4+x.^2);
re_2n=re_n/2;
for i=1:n
re_2n=re_2n+y(i)*h/2;
end
h=h/2;
n=1/h+1;
x=linspace(0,1,n+1);
end
result=re_2n; %输出结果result.

mathjiang
2008-12-25, 21:57
该程序中的两处 xx 均应为 x。
计算结果为 0.1116。