计算方法实验9.docx
《计算方法实验9.docx》由会员分享,可在线阅读,更多相关《计算方法实验9.docx(12页珍藏版)》请在冰豆网上搜索。
![计算方法实验9.docx](https://file1.bdocx.com/fileroot1/2023-1/8/c277abae-f760-4ad7-935e-58f652493bd5/c277abae-f760-4ad7-935e-58f652493bd51.gif)
计算方法实验9
实验九
一、编程并在计算机上调试修改运行
P13717、18.
二、阅读理解下列程序,并在计算机上运行.
1.newdd.m%x为初值,w为精度,n为最大迭代次数
function[a,k]=newdd(x,w,n)
a=[];a
(1)=x;
fork=1:
n
ifdf(x)==0
disp('分母为零')
end
y=x-f(x)/df(x);a(k+1)=y;
ifabs(y-x)>w
x=y;
else
break
end
end
ifk==n
disp('迭代失败')
end
functiony=f(x)
y=x*exp(x)-1;
functiony=df(x)%导函数
y=(1+x)*exp(x);
2.ftx17.m%a,b是积分上下限,n等分数
functionT=ftx17(a,b,n)
h=(b-a)/n;x=a:
h:
b;
T=h*(f(a)+2*sum(f(x(2:
n)))+f(b))/2;
functiony=f(x)%子函数
y=1+sin(4*x).*exp(-x);
3.fsim17.m(复化Simpson求积公式)%a,b是积分上下限,n等分数
functions=fsim17(a,b,n)
h=(b-a)/(2*n);
x1=a:
2*h:
b;x2=a+h:
2*h:
b-h;
y1=f(x1);y2=f(x2);
s=h*(2*sum(y1)-f(a)-f(b)+4*sum(y2))/3;
functiony=f(x)%子函数y=1+sin(4*x).*exp(-x);
4.tx17.m(变步长梯形法)%a,b是积分上下限,w精度
function[T2,k]=tx17(a,b,w)
h=b-a;T2=h*(f(a)+f(b))/2;T1=0;k=0;
whileabs(T2-T1)>w
s=0;x=a+h/2;T1=T2;
whilex
s=s+f(x);x=x+h;
end
T2=(T1+h*s)/2;
h=h/2;k=k+1;
end
functiony=f(x)%子函数
y=1+sin(4*x)*exp(-x);
一、
第17题
(1)function[a,k]=newdd(x,w,n)
a=[];a
(1)=x;
fork=1:
n
ifdf(x)==0
disp('分母为零')
end
y=x-f(x)/df(x);a(k+1)=y;
ifabs(y-x)>w
x=y;
else
break
end
end
ifk==n
disp('迭代失败')
end
functiony=f(x)
y=exp(x)-4*cos(x);
functiony=df(x)
y=exp(x)+4*sin(x);
>>[a,k]=newdd(pi/4,1e-4,10)
a=
0.78540.91190.90480.9048
k=
3
(2)
function[a,k]=xianjie(x0,x,w,n)
a=[];a
(1)=x;
fork=1:
n
iff(x)-f(x0)==0
disp('分母为零')
end
y=x-f(x)*(x-x0)/(f(x)-f(x0));a(k+1)=y;
ifabs(y-x)>w
x=y;
else
break
end
end
ifk==n
disp('迭代失败')
end
functiony=f(x)
y=exp(x)-4*cos(x);
>>[a,k]=xianjie(pi/4,pi/2,1e-4,10)
a=
1.57080.87700.90640.90470.9048
k=
4
>>[a,k]=xianjie(pi/4,pi/3,1e-4,10)
a=
1.04720.89740.90520.90480.9048
k=
4
>>[a,k]=xianjie(pi/4,pi,1e-4,10)
a=
3.14160.83930.90860.90460.90480.9048
k=
5
(3)
function[a,k]=kuaisuxianjie(x0,x,w,n)
a=[];a
(1)=x0;
fork=1:
n
iff(x)-f(x0)==0
disp('分母为零')
end
y=x-f(x)*(x-x0)/(f(x)-f(x0));a(k+1)=y;
ifabs(y-x)>w
x0=a(k);
x=y;
else
break
end
end
ifk==n
disp('迭代失败')
end
functiony=f(x)
y=exp(x)-4*cos(x);
>>[a,k]=kuaisuxianjie(pi/4,pi/2,1e-4,100)
a=
0.78540.87700.90640.90480.9048
k=
4
>>[a,k]=kuaisuxianjie(pi/4,pi,1e-4,100)
a=
0.78540.83930.90860.90470.90480.9048
k=
5
第18题
(1)function[a,k]=newdd(x,w,n)
a=[];a
(1)=x;
fork=1:
n
ifdf(x)==0
disp('分母为零')
end
y=x-f(x)/df(x);a(k+1)=y;
ifabs(y-x)>w
x=y;
else
break
end
end
ifk==n
disp('迭代失败')
end
functiony=f(x)
y=x^3+2*x^2+10*x-20;
functiony=df(x)
y=3*x^2+4*x+10;
>>[a,k]=newdd(2,1e-6,10)
a=
2.00001.46671.37151.36881.36881.3688
k=
5
>>[a,k]=newdd(0.5,1e-6,10)
a=
0.50001.62751.38691.36891.36881.3688
k=
5
>>[a,k]=newdd(5,1e-6,10)
a=
Columns1through6
5.00003.04761.90171.44041.37031.3688
Column7
1.3688
k=
6
(2)
function[a,k]=xianjie(x0,x,w,n)
a=[];a
(1)=x;
fork=1:
n
iff(x)-f(x0)==0
disp('分母为零')
end
y=x-f(x)*(x-x0)/(f(x)-f(x0));a(k+1)=y;
ifabs(y-x)>w
x=y;
else
break
end
end
ifk==n
disp('迭代失败')
end
functiony=f(x)
y=x^3+2*x^2+10*x-20;
>>[a,k]=xianjie(0.5,1,1e-6,10)
迭代失败
a=
Columns1through6
1.00001.47461.34011.37671.36661.3694
Columns7through11
1.36861.36891.36881.36881.3688
k=
10
>>[a,k]=xianjie(0.5,1,1e-6,100)
a=
Columns1through6
1.00001.47461.34011.37671.36661.3694
Columns7through12
1.36861.36891.36881.36881.36881.3688
Column13
1.3688
k=
12
>>[a,k]=xianjie(2,1,1e-6,100)
a=
Columns1through6
1.00001.30431.35791.36701.36851.3688
Columns7through10
1.36881.36881.36881.3688
k=
9
(3)
function[a,k]=kuaisuxianjie(x0,x,w,n)
a=[];a
(1)=x0;
fork=1:
n
iff(x)-f(x0)==0
disp('分母为零')
end
y=x-f(x)*(x-x0)/(f(x)-f(x0));a(k+1)=y;
ifabs(y-x)>w
x0=a(k);
x=y;
else
break
end
end
ifk==n
disp('迭代失败')
end
functiony=f(x)
y=x^3+2*x^2+10*x-20;
>>[a,k]=kuaisuxianjie(16,1119,1e-6,100)
a=
Columns1through6
16.000015.996310.35987.97645.66344.0780
Columns7through12
2.87492.06461.59591.40931.37141.3688
Columns13through14
1.36881.3688
k=
13
>>[a,k]=kuaisuxianjie(16,11,1e-6,100)
a=
Columns1through6
16.00008.30476.80654.65583.36762.3702
Columns7through12
1.76151.46351.37891.36911.36881.3688
k=
11
>>[a,k]=kuaisuxianjie(1,11,1e-6,100)
a=
Columns1through6
1.00001.04191.40671.36511.36881.3688
Column7
1.3688
k=
6
二、
1、
>>[a,k]=newdd(0.5,1e-4,10)
a=
0.50000.57100.56720.5671
k=
3
>>[a,k]=newdd(1.5,1e-1,10)
a=
1.50000.98930.67890.57660.5672
k=
4
>>[a,k]=newdd(2,1e-1,10)
a=
2.00001.37840.90480.64220.5715
k=
4
2、
>>ftx17(0,1,8)
ans=
1.3021
>>ftx17(0,1,16)
ans=
1.3067
>>ftx17(0,1,4)
ans=
1.2836
3、
>>fsim17(0,1,4)
ans=
1.3083
>>fsim17(0,1,8)
ans=
1.3083
4、
>>[T2,k]=tx17(0,1,1e-5)
T2=
1.3082
k=
9
>>[T2,k]=tx17(0,1,1e-3)
T2=
1.3082
k=
6
>>[T2,k]=tx17(0,1,1e-8)
T2=
1.3083
k=
14