数值方法Matlab实验作业Word格式文档下载.docx

上传人:b****4 文档编号:16411772 上传时间:2022-11-23 格式:DOCX 页数:15 大小:154.37KB
下载 相关 举报
数值方法Matlab实验作业Word格式文档下载.docx_第1页
第1页 / 共15页
数值方法Matlab实验作业Word格式文档下载.docx_第2页
第2页 / 共15页
数值方法Matlab实验作业Word格式文档下载.docx_第3页
第3页 / 共15页
数值方法Matlab实验作业Word格式文档下载.docx_第4页
第4页 / 共15页
数值方法Matlab实验作业Word格式文档下载.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

数值方法Matlab实验作业Word格式文档下载.docx

《数值方法Matlab实验作业Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数值方法Matlab实验作业Word格式文档下载.docx(15页珍藏版)》请在冰豆网上搜索。

数值方法Matlab实验作业Word格式文档下载.docx

001

上机练习(3)

(1)编写一个M文件利用for循环求1!

+2!

+3!

…+20!

的值。

Test31.m

s=0;

t=1;

fori=1:

20

t=t*i;

s=s+t;

end

s

s=

2.5613e+018

(2)编写一个M文件用while循环求1~200之间的整数之和。

Test32.m

i=0;

while(i<

200)

i=i+1;

s=s+i;

20100

(3)编写一个M文件,画出下列分段函数所表示的曲面。

Test33.m

x1=-3:

0.01:

-1;

y1=2*x1.^2+1;

x2=-1:

1;

y2=0*x2;

x3=1:

3;

y3=-x3.^3;

x=[x1x2x3];

y=[y1y2y3];

plot(x,y);

gridon;

上机练习(4)

对于非线性方程

1.编写M–File函数用二分法求出其在区间[0,0.5]和[2.5,3]内的根,要求函数的最大循环次次为1000次,两个精度均为10-4。

要求打印出最后的根及误差以及循环次数。

F1.m

functiony=f1(x)

y=(x-pi/2)^2-sin(x)-1;

BM.m

functionBM(a,b,eps,n)

n

e=abs(a-b)/2;

x=(a+b)/2;

ife<

eps|abs(f1(x))<

eps

break;

end

iff1(a)*f1(x)>

a=x;

else

b=x;

fprintf('

x=%f误差e=%ff(x)=%f循环%d次\n'

x,e,f1(x),i);

BM(0,0.5,0.0001,1000)

x=0.394287误差e=0.000244f(x)=0.000024循环11次

BM(2.5,3,0.0001,1000)

x=2.747314误差e=0.000244f(x)=0.000053循环11次

2.编写M–File函数用迭代法求出其根,精度为10-4,最大循环次次为1000次,要求打印出最后的根及误差以及循环次数。

F2.m

functiony=f2(x)

y=sqrt(sin(x)+1)+pi/2;

itera.m

functionitera(x0,eps,n)

x=f2(x0);

e=abs(x-x0);

x0=x;

x=%f误差e=%f循环%d次\n'

x,e,i);

itera(0,0.0001,1000)

x=2.747284误差e=0.000051循环11次

3.编写M–File函数用牛顿法求出其根,精度为10-4,最大循环次次为1000次,要求打印出最后的根及误差以及循环次数。

F3.m

functiony=f3(x)

y=2*x-pi-cos(x);

newton.m

functionnewton(x0,eps,n)

x=x0-f1(x0)/f3(x0);

newton(0,0.0001,1000)

x=0.394294误差e=0.000000循环4次

上机练习(5)

对于线性方程组:

1.用LU分解法来求解方程组的根。

学会应用MATLAB中的LU函数。

A=[10-1-2;

-110-2;

-1-15];

B=[7.2;

8.3;

4.2];

[LU]=lu(A);

y=L\B;

x=U\y;

L,U,x

L=

1.000000

-0.10001.00000

-0.1000-0.11111.0000

U=

10.0000-1.0000-2.0000

09.9000-2.2000

004.5556

x=

1.1000

1.2000

1.3000

myLU.m

functionmyLU(A,B)

[m,n]=size(A);

n=length(B);

L=eye(n,n);

U=zeros(n,n);

U(1,1:

n)=A(1,1:

n);

L(2:

n,1)=A(2:

n,1)/U(1,1);

fork=2:

U(k,k:

n)=A(k,k:

n)-L(k,1:

k-1)*U(1:

k-1,k:

L(k+1:

n,k)=(A(k+1:

n,k)-L(k+1:

n,1:

k-1,k))/U(k,k);

L,U

y=zeros(n,1);

y

(1)=B

(1);

y(k)=B(k)-L(k,1:

k-1)*y(1:

k-1);

x=zeros(n,1);

x(n)=y(n)/U(n,n);

fork=n-1:

-1:

1

x(k)=(y(k)-U(k,k+1:

n)*x(k+1:

n))/U(k,k);

fprintf('

x(%d)=%f\n'

i,x(i));

myLU(A,B)

%L,U结果同上

x

(1)=1.100000

x

(2)=1.200000

x(3)=1.300000

2.自己编程用高斯-赛德尔迭代法来求方程组的根,要求

Gauss_Seidel.m

functionGauss_Seidel(a,b,eps)

[mmnn]=size(a);

[ppqq]=size(b);

ifmm~=pp|mm~=nn|qq~=1

error('

输入的方程参数有误!

'

);

x(1:

mm)=0;

while

(1)

y=x;

i=i+1;

%d-->

'

i);

forj=1:

mm

x(j)=b(j)/a(j,j)-a(j,:

)*x'

/a(j,j)+x(j);

x%d=%f'

j,x(j));

\n'

ifmax(abs(y-x))<

Gauss_Seidel(A,B,0.001)

1-->

x1=2.500000x2=2.090909x3=1.227273

2-->

x1=2.977273x2=2.028926x3=1.004132

3-->

x1=3.009814x2=1.996807x3=0.995891

4-->

x1=2.999830x2=1.999688x3=1.000163

5-->

x1=2.999842x2=2.000072x3=1.000061

上机练习(6)

任意给定一组数据(n+1)个点;

(如下数据仅供参考)

(1)用Lagrange插值法得到n次多项式曲线1;

Lag_func.m

functionlag_func(x,xi,yi)

fork=1:

length(x)

fori=1:

length(xi)

fz=x(k)-xi;

fm=xi(i)-xi;

fz(i)=1;

fm(i)=1;

f(i)=prod(fz)/prod(fm);

y(k)=yi*f'

;

plot(xi,yi,'

*'

x,y);

legend('

原始数据'

'

Lagrange插值'

xi=1:

10;

yi=[33.73.94.25.76.67.16.74.53];

x=1:

0.1:

Lag_func(x,xi,yi)

(2)用最小二乘法进行[n/2]次多项式曲线拟合得到曲线2;

Leastfit.m

functionLeastfit(x,xi,yi)

c=floor(length(xi)/2);

[p,s]=polyfit(xi,yi,c);

y=polyval(p,x);

拟合曲线'

leastfit(x,xi,yi)

上机练习(7)

1、分别利用matlab函数trapz,quad,quad8,以及编写的自动变步长迭代积分程序求解如下积分(教材P185第1题和第3题),要求精度为10-4。

trapz函数:

x=0:

y1=x./(4+x.*x);

y2=1./(1+sin(x).^2);

k1=trapz(x,y1);

k2=trapz(x,y2);

k1=%f\nk2=%f\n'

k1,k2);

k1=0.111571

k2=0.809350

quad函数与quad8函数:

a=0;

b=1;

k1=quad('

x./(4+x.*x)'

a,b);

k2=quad('

1./(1+sin(x).^2)'

k1=0.111572

k2=0.809353

k81=quad8('

k82=quad8('

自动变步长迭代积分程序:

jf_func.m

functionz=jf_func(f,a,b,e,max)

n=1;

i=1;

x=[ab];

t1=(b-a)*sum(subs(f,x))/2;

x=a+(2*(1:

n)-1)*(b-a)/2/n;

h=sum((b-a)/n*subs(f,x));

t2=(t1+h)/2;

e0=abs(t2-t1);

t1=t2;

n=n*2;

ifi>

max|e0<

e

z=t2;

f1='

x/(4+x*x)'

f2='

1/(1+sin(x)^2)'

k1=jf_func(f1,0,1,0.0001,1000);

k2=jf_func(f2,0,1,0.0001,1000);

k1=0.111561

k2=0.809327

2、利用matlab函数ode23和ode45求解P217习题9-1第3题(用画图比较)。

func.m

functions=func(x,y)

s=x+y;

ode1.m

[x1,y1]=ode23('

func'

[0,1],1);

x=0:

z=2*exp(x)-x-1;

plot(x1,y1,['

r'

],x,z)

ode2.m

[x2,y2]=ode45('

plot(x2,y2,['

ode1

ode2

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 学科竞赛

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1