资源描述
复化积分法(复化梯形求积,复化Simpson公式,变步长求积法)MATLAB编程实验报告
一、 问题描述:
编写函数实现复化积分法。
二、 实验步骤(过程):
(1) 复化求积法
(1) 复化梯形求积:用复化梯形求积公式求解
function [f]=Tn(a,b,n,y)
syms t;
h=(b-a)/n;
f=0;
for k=1:n+1
x(k)=a+(k-1)*h
z(k)=subs(y,t,x(k));
end
for i=2:n
f=f+z(i);
end
q=subs(y,t,a);
if y==sin(t)/t&&a==0
q=1;
end
p=subs(y,t,b);
T=h/2*(q+p+2*f);
T=vpa(T,7)
clc,clear;
syms t;
a=0;b=1;
y=sin(t)/t;
n=8;
Tn(a,b,n,y);
(2) 复化Simpson公式:用复化Simpson公式求解
function [f]=simpson(a,b,n,y)
syms t;
h=(b-a)/n;
f=0;l=0;
for k=1:n+1
x(k)=a+(k-1)*h
w(k)=0.5*h+x(k)
z(k)=subs(y,t,x(k));
end
for i=2:n
f=f+z(i);
end
for i=1:n
l=l+w(i);
end
q=subs(y,t,a);
if y==sin(t)/t&&a==0
q=1;
end
p=subs(y,t,b);
T=h/2*(q+p+2*f);
T=vpa(T,7)
clc,clear;
syms t;
a=1;b=2;
y=exp(1/t);
n=5;
simpson(a,b,n,y);
(3) 变步长求积法:以书本例4.5为例
function [f]=TN(a,b,y,R0)
syms t;
T=[];
f=0;
q=subs(y,t,a);
if y==sin(t)/t&&a==0
q=1;
end
p=subs(y,t,b);
T(1)=(b-a)/2*(q+p);
i=2;
n=i-1;
h=(b-a)/n;
z1=a+h/2;
z2=subs(y,t,z1);
T(2)=T(1)/2+h/2*z2;
while ((T(i)-T(i-1))/3)>R0
i=i+1
n=i-1;
n=2^(n-1)
h=(b-a)/n;
f=0;
for k=1:n
x(k)=a+h*(k-1);
w(k)=x(k)+h/2;
z(k)=subs(y,t,w(k));
f=f+z(k);
end
T(i)=T(i-1)/2+h/2*f
if ((T(i)-T(i-1))/3)<=R0
break;
end
end
tl=T(i)
clc,clear;
format long;
syms t;
y=sin(t)/t;
a=0;b=1;
R0=0.5*10^(-3);
TN(a,b,y,R0);
结论如下:
三、 结论:
复化梯形求积:
复化Simpson公式
变步长求积法
展开阅读全文