MATLAB语言及应用上机实习报告Word下载.docx

上传人:b****5 文档编号:21430062 上传时间:2023-01-30 格式:DOCX 页数:48 大小:690.01KB
下载 相关 举报
MATLAB语言及应用上机实习报告Word下载.docx_第1页
第1页 / 共48页
MATLAB语言及应用上机实习报告Word下载.docx_第2页
第2页 / 共48页
MATLAB语言及应用上机实习报告Word下载.docx_第3页
第3页 / 共48页
MATLAB语言及应用上机实习报告Word下载.docx_第4页
第4页 / 共48页
MATLAB语言及应用上机实习报告Word下载.docx_第5页
第5页 / 共48页
点击查看更多>>
下载资源
资源描述

MATLAB语言及应用上机实习报告Word下载.docx

《MATLAB语言及应用上机实习报告Word下载.docx》由会员分享,可在线阅读,更多相关《MATLAB语言及应用上机实习报告Word下载.docx(48页珍藏版)》请在冰豆网上搜索。

MATLAB语言及应用上机实习报告Word下载.docx

A+B

043

569

312

A*B

779

131921

131

norm(A)

9.5758

A^(-1)

-0.83330.33330.5000

-0.33330.3333-1.0000

0.8333-0.33330.5000

例1-8显示上例中矩阵A的第2行第3列元素,并对其进行修改.

A(2,3)

6

A(2,3)=1;

1

例1-9分别画出函数

在区间[-6

6

]上的图形。

x=(-6)*pi:

0.01:

6*pi;

y=(x.^2).*cos(x);

z=sin(x)./x;

plot(x,y);

figure,plot(x,z);

例1-10试求方程组

的解。

a=[1,2,1;

4,2,-6;

-1,0,2];

b=[2;

3;

4];

x=a\b

-30.0000

22.5000

-13.0000

例1-11试求矩阵方程

b=[1,2,3;

1,1,1];

x=b/a

3.0000-2.0000-6.0000

2.0000-1.5000-5.0000

例1-12建立同时计算

的函数。

即任给a,b,n三个数,返回y1,y2.

functionmianfunction()

disp(num2str(y1(1,2,3)))

disp(num2str(y2(1,2,3)))

functiony=y1(a,b,n)

y=(a+b)^n;

end

functiony=y2(a,b,n)

y=(a-b)^n;

end

运行显示:

mainfuction

27

-1

例1-13设

,试画出在[0,2]上的曲线段。

%加坐标网格

x=linspace(0,2);

y=1./((x-0.3).^2+0.01)+1./((x-0.9).^2+0.04)-6;

gridon;

例如:

对于例题1-13中所定义的f(x),求其零点c.

x=solve('

1/((x-0.3)^2+0.01)+1/((x-0.9)^2+0.04)-6=0'

'

x'

-0.131********960646637049059278162

1.2995496825848217892317327263734

0.61603416775739233856937893320409-0.22190336322056809485939175107611i

0.61603416775739233856937893320409+0.22190336322056809485939175107611i

求一元函数最小值(fminbnd命令)

由于fminbnd只能求一个最小值,通过观察函数可知极小值点为-∞和+∞

x=fminbnd(y,0,inf)

Inf

y=@(x)1/((x-0.3)^2+0.01)+1/((x-0.9)^2+0.04)-6;

[x,y]=fminbnd(y,0,inf)

-6

[x,y]=fminbnd(y,-inf,0)

%运行该命令时会报错,因为这里的x为NAN,这可能是因为fmindnd或optimget

函数的代码有bug导致

求例题1-13中所定义f(x)在[0,1]上的定积分

.

symsx;

int(1/((x-0.3)^2+0.01)+1/((x-0.9)^2+0.04)-6,0,2)

13*pi+atan(35641981496012/67550630868559)-12

例1-14求二重积分

及三重积分

symsxy;

int(int(x*y,x,1,2),y,0,1)

3/4

symsxyz;

int(int(int(x*exp(y)+z^2,x,0,1),y,0,1),z,0,1)

exp

(1)/2-1/6

例1-15已知

,设该曲线在区间[0,x]上所围曲边梯形面积为s,试求当s分别为5,10时的x的值。

symsxt;

y=sym(t^3-5*t^2+6*t+5);

s=int(y,t,0,x);

x1=solve(s==5,x)

x1=

x2=solve(s==10,x)

x2=

例1-16利用MATLAB命令求解无理数的近似值。

(1)用函数零点命令(fzero)求无理数

的近似值;

f=@(x)x-exp

(1);

fzero(f,2)

2.7183

(2)用定积分计算命令(trapz,quad,quadl)求无理数

的近似值。

(提示:

e=2.7182818284…,

=0.6931471806…)

x=1:

0.001:

2;

y=1./x;

trapz(x,y)

0.6931

例1-17求极限

symsxh;

limit((sin(x+h)-sin(x))/h,h,0)

cos(x)

例1-18:

,求

symsxyn;

f=sym(x^n*y+sin(y));

diff(f,x)

diff(f,y)

diff(diff(f,x),x)

diff(diff(f,y),y)

diff(diff(f,x),y)

例1-19:

►symsxyz%声明符号变量,注意变量间必须用空格分开

symsxyzt;

int(x*y/(1+x^2),x)

int(x*y/(1+x^2),y,0,t)

int(int(x*y/(1+x^2),y,0,x^(1/2)),x,0,1)

int(int(int(x+y+z,z,1-x-y),y,0,1-x),x,0,1)

级数求和(symsum)

%求级数

(ans=inf即

symsk;

f=@(k)1/k;

symsum(f,k,1,inf)

Inf

(ans=1)

f=@(k)1/(k*(k+1));

1

%求级数

(ans=3/2*a)

symska;

f=@(k)a/3^k;

symsum(f,k,0,inf)

(3*a)/2

泰勒展开(taylor)

►symsx

►fy=1/(1>

taylor(f,x,'

order'

8)

-x^7+x^6-x^4+x^3-x+1+x+x^2)

求fx对自变量x(默认)在x=0点(默认)泰勒展开前6项(默认)

f=@(x)1/(1+x+x^2);

taylor(f,x)

-x^4+x^3-x+1

求fx对自变量x(默认)在x=1点泰勒展开式前8项

taylor(f,x,1,'

(2*(x-1)^2)/9-x/3-(x-1)^3/9+(x-1)^4/27-(x-1)^6/81+(x-1)^7/81+2/3

方程求根(solve)

►fx=sym('

a*x^2+b*x+c'

);

%建立符号函数

方程fx=0的符号解

symsabcx;

y=a*x^2+b*x+c==0;

solve(y,x)

-(b+(b^2-4*a*c)^(1/2))/(2*a)

-(b-(b^2-4*a*c)^(1/2))/(2*a)

求方程fx=0关于变量b的符号解

solve(y,b)

-(a*x^2+c)/x

微分方程(组)求解(dsolve)

求方程y'

=5的通解,默认自变量为t

symsy(t);

dsolve(diff(y)==5)

C1+5*t

=x的通解,指定自变量为x

symsy(x);

dsolve(diff(y,x)==x)

x^2/2+C2

'

=1+y'

满足y(0)=1,y'

(0)=0的特解

dsolve('

D2y==1+Dy'

y(0)==1,'

Dy(0)==0'

exp(t)-t

求方程组

的通解,默认自变量为t

symsy(t)x(t);

z=dsolve('

Dx==x+y'

Dy==2*x'

);

z.x

C6*exp(2*t)-(C5*exp(-t))/2

z.y

C5*exp(-t)+C6*exp(2*t)

实验2MATLAB绘制二维、三维图形

例2-1在子图形窗口中画出

上正弦、余弦曲线。

x=linspace(0,2*pi);

y1=sin(x);

y2=cos(x);

subplot(2,1,1);

plot(x,y1);

subplot(2,1,2);

plot(x,y2);

例2-2画出

上正弦、余弦曲线并对线型加粗、点型加大,重新定置坐标系以及加注相关说明和注释。

plot(x,y1,'

LineWidth'

10);

title('

y=sinx'

xlabel('

ylabel('

y'

plot(x,y2,'

o'

MarkerSize'

3);

axis([-1,8,-2,2]);

y=cosx'

例2-3分别在两个图形窗口画出填充一正方形和极坐标方程

的图形。

a=0:

2*pi;

r=2*sin(2*a).*cos(2*a);

polar(a,r);

[x,y]=pol2cart(a,r);

例2-4在[-2.5,2.5]上画出函数

的直方图和阶梯图。

x=linspace(-2.5,2.5,100);

y=exp(-x.^2);

bar(x,y);

stairs(x,y);

例2-5采用不同形式(直角坐标、参数、极坐标),画出单位圆

ezplot('

x^2+y^2-1'

[-1,1]);

axisequal;

0.001*pi:

x=sin(a);

y=cos(a);

r=ones(1,2001);

例2-6画出螺旋线:

x=sin(t),y=cos(t),z=t,

上一段曲线。

t=linspace(0,10*pi,10000);

x=sin(t);

y=cos(t);

z=t;

plot3(x,y,z);

例2-7画出矩形域[-1,1]×

[-1,1]上旋转抛物面:

x=-1:

1;

[x,y]=meshgrid(x);

z=x.^2+y.^2;

a=surf(x,y,z);

set(a,'

edgecolor'

none'

例2-8在圆形域

上绘制旋转抛物面:

[x,y]=meshgrid(-1:

0.0001:

1);

axis([-1,1-1,10,1]);

axisoff;

gridoff;

例2-9画出

上的图形。

[x,y]=meshgrid(-7.5:

7.5);

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

axis([-7.5,7.5-7.5,7.5-0.5,1]);

例2-10有一组实验数据如下表所示,试绘图表示。

时间

123456789

数据1

12.5113.5415.6015.9220.6424.5330.2450.0036.34

数据2

9.8720.5432.2140.5048.3164.5172.3285.9889.77

数据3

10.118.1414.1710.1440.5039.4560.1170.1340.90

x=1:

9;

x1=1:

0.1:

y1=[12.51,13.54,15.60,15.92,20.64,24.53,30.24,50.00,36.34];

y2=[9.87,20.54,32.21,40.50,48.31,64.51,72.32,85.98,89.77];

y3=[10.11,8.14,14.17,10.14,40.50,39.45,60.11,70.13,40.90];

yy1=spline(x,y1,x1);

yy2=spline(x,y2,x1);

yy3=spline(x,y3,x1);

x,y2,'

*'

x,y3,'

+'

x1,yy1,x1,yy2,x1,yy3);

legend('

数据1'

数据2'

数据3'

set(legend,'

Position'

[0.3994047635545330.7634920668980430.1285714269216570.126190472784496]);

实验3MATLAB编程介绍与循环结构

例3-1:

求n(n=100)个奇数的和:

s=1+3+5+…+(2n-1).

n=100;

s=0;

fori=1:

2:

(2*n-1)

s=s+i;

disp(s);

10000

例3-2:

求正整数n的阶乘:

p=1×

…×

n=n!

,并求出n=20时的结果。

n=20;

p=1;

n

p=p*i;

disp(p);

2.4329e+18

例3-3:

根据麦克劳林公式可以得到e≈1+1+1/2!

+1/3!

+…+1/n!

,试求e的近似值。

n=1000000;

s=1;

a=1/factorial(i);

s=s+a;

formatlong;

2.718281828459046

例3-4:

对于数列

求其前n项和不超过1000时的n的值及和.

n=1000;

a=(i)^(1/2);

2.109745588748073e+04

例3-5:

根据e≈1+1+1/2!

求e的近似值,要求精确到10-8。

a=ones(1,1000000);

1000000;

a(i)=1/factorial(i);

s=s+a(i);

if(i>

=2)&

&

(abs(a(i-1)-a(i))<

10^(-8))

break;

2.718281828446759

实验4MATLAB选择结构与应用实验

例4-1:

求任意有限数组a=[a

(1),a

(2),…,a(n)]中数值最大的元素M以及所在位置k.

a=rand(1,n);

ifa

(1)>

a

(2)

m=a

(1);

b=2;

else

m=a

(2);

fori=2:

(n-1)

ifm<

a(i+1)

m=a(i+1);

b=i+1;

disp(['

第'

num2str(b),'

个元素最大,为:

num2str(m)]);

第25个元素最大,为:

0.99979

例4-2:

编写一个函数将百分制成绩转换为优(A),良(B),中(C),差(D)四等级.

n=10;

a=randi([0,100],1,n);

ifa(i)>

=90

disp(['

num2str(i),'

个学生的成绩是A'

]);

elseifa(i)>

=80

个学生的成绩是B'

=70

个学生的成绩是C'

else

个学生的成绩是D'

第1个学生的成绩是C

第2个学生的成绩是D

第3个学生的成绩是D

第4个学生的成绩是D

第5个学生的成绩是D

第6个学生的成绩是B

第7个学生的成绩是C

第8个学生的成绩是D

第9个学生的成绩是A

第10个学生的成绩是D

例4-3:

Fibonacci数组的元素满足Fibonacci规则:

{an}:

a1=a2=1,ak+2=ak+ak+1,k=1,2,3,.

求出该数组中第一个大于10000的元素

a

(1)=1;

a

(2)=1;

10000

a(i+2)=a(i)+a(i+1);

ifa(i+2)>

10000

end

Fibonacci数组中的第'

num2str(i+2),'

个元素第一个大于10000,元素的值为:

num2str(a(i+2))])

Fibonacci数组中的第21个元素第一个大于10000,元素的值为:

10946

例4-4:

动态显示数列极限

的逼近过程。

a=ones(1,n);

a(i)=(1+1/i)^i;

plot(i,a(i),'

holdon;

x=0;

20

axis([x,x+50,2,3]);

pause(0.1);

x=x+50;

问题1:

对于数列

为常数,可以证明该数列收敛,且

显然,这个结论提供了一个求平方根的

近似方法,试编制一个函数程序,对任意给定的正实数A,求出

的近似值(精确到10-5)。

n=10000000;

A=input('

请输入需要开方的数:

a(i+1)=(a(i)+A/a(i))/2;

ifabs(a(i+1)-a(i))<

10^(-5)

disp(a(i+1));

1000

31.622776601684315

问题2:

对于任意一个正整数,都可以判断其是质数还是合数,这一点在一些有关数论问题中是经常用到的。

但当一个正的奇数比较大时,手工来判断是否为质数往往不很容易。

现在要求编制一个函数程序,对任意一个正整数,判断出它是质数还是合数,若是质数,则返回值1;

若是合数,返回值0,同时给出两个因数;

若输入非正数,则返回值-1,并提示错误。

function[s,factor1,factor2]=prime

factor1=0;

factor2=0;

a=input('

请输入需要计算大于5的正整数(如果您输入有含有小数,将向下取整):

a=floor(a);

b=num2str(a);

N=length(b);

sd=str2num(b(N));

if(a<

=0)||(a==inf)||(isnan(a))

s=-1;

disp('

这不是一个正整数'

elseif(sd==0)||(sd==2)||(sd==4)||(sd==6)||(sd==8)

s=0;

factor1=2;

factor2=a/2;

因子分别为:

num2str(factor

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

当前位置:首页 > 幼儿教育 > 育儿知识

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

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