数值分析 matlab 实验4

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(1) 解题过程如下:

(1)MATLAB中创建复化梯形公式和复化辛普森公式的 M 文件:1)复化梯形公式文件:

function s=T_fuhua(f,a,b,n)

h=(b-a)/n;

s=0;

for k=1:(n-1)

x=a+h*k;

s=s+feval(f,x);

end

s=h*(feval(f,a)+feval(f,b))/2+h*s;

2)复化辛普森公式文件:

function s=S_fuhua(f,a,b,n)

h=0;

h=(b-a)./(2*n);

s1=0;

-5-

s2=0;

for k=1:n-1

x=a+h*2*k;

s1=s1+feval(f,x);

end

for k=1:n

x=a+h*(2*k-1);

s2=s2+feval(f,x);

end

s=h*(feval(f,a)+feval(f,b)+s1*2+s2*4)/3;

在MATLAB中输入:

f=inline('x/(4+x^2)');a=0;b=1;

%inline 构造内联函数对象

for n=2:10

s(n-1)=T_fuhua(f,a,b,n);s(n-1)=vpa(s(n-1),10);

%调用复化梯形公式,生成任意精度的数值

end

exact=int('x/(4+x^2)',0,1);exact=vpa(exact,10)

%求出积分的精确值

输出结果:exact =

.1115717755

s =

Columns 1 through 6

0.1088 0.1104 0.1109 0.1111 0.1113 0.1114

Columns 7 through 9

0.1114 0.1114 0.1115

在MATLAB中输入以下函数用以画出计算误差与 n 之间的曲线:

r=abs(exact-s);

n=2:10;

plot(double(n),double(r(n-1)))

得到结果如图所示:

(2)在 MATLAB中输入以下程序代码:

f=inline('x/(4+x^2)');a=0;b=1;n=9;

%inline 构造内联函数对象

t=T_fuhua(f,a,b,n);t=vpa(t,10)

s=S_fuhua(f,a,b,n);s=vpa(s,10)

%调用复化梯形和复化辛普森公式,生成任意精度的数值

exact=int('x/(4+x^2)',0,1);exact=vpa(exact,10)

%求出积分的精确值

计算结果:t =

.1114379370

s =

.1115717991

exact =

.1115717755

E1=|t-exact|=0.0001338385

E2=|s-exact|=0.0000000236

所以,两种方法计算所得的绝对误差:E1>E2

(1)中的两个结果 s 与t,两个函数的计算量基本相同,但是精度却有很大

差别:与精确值exact =.1115717755比较,复化梯形公式的结果t =.1114379370 只有三位有

效数字,而复化辛普森公式的结果 s =.1115717991 却有七位有效数字。

由此例子可以知道,复化辛普森公式比复化梯形公式的代数精度高,更适合于科学计

算与应用。

(2)用求定积分的函数int求积分的值:

在命令窗口中键入如下的命令:

sym x

int(sqrt(x),1,9)

I=vpa(int (sqrt(x),1,9))

回车后输出积分结果为:

I =17.3333

编写求复合辛普森公式的m文件如下:

function Simpson2

x=1:1/2:9;

f= sqrt(x);

a=1,b=9;

%f(1)=1;

h=(b-a)/4;

s=f(1)+f(17);

for k=1:1:8

s=s+4*f(2*k);

end

for k=2:1:8

s=s+2*f(2*k-1);

end

s=(h/6)*s

运行上述程序:s=17.3332

(2)用求定积分的函数int求积分的值:

在命令窗口中键入如下的命令:

sym x

int(sqrt(4-sin(x).^2),0,pi/6)

I=vpa(int (sqrt(4-sin(x).^2),0,pi/6))

回车后输出积分结果为:

I =1.03576

编写求复合辛普森公式的m文件如下:

function Simpson3

x=0:pi/96:pi/6;

f=sqrt(4-sin(x).^2);

a=0,b=pi/6;

%f(1)=1;

h=(b-a)/6;

s=f(1)+f(17);

for k=1:1:8

s=s+4*f(2*k);

end

for k=2:1:8

s=s+2*f(2*k-1);

end

s=(h/6)*s

运行上述程序:s= 1.0358 误差为0.00004

分析:本题是求解定积分的问题,可以采用复化的辛普森公式求解。根据题中的条件可以计算出c,a的值。

解:用matlab求解才c,a如下:

a =(2R+H+h)/2 ,c=(H-h)/2. c=972.5, a=7782.5

用求定积分的函数int求积分值:

相关文档
最新文档