MATLAB语言及应用上机实习报告.docx
- 文档编号:8293783
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:48
- 大小:690.01KB
MATLAB语言及应用上机实习报告.docx
《MATLAB语言及应用上机实习报告.docx》由会员分享,可在线阅读,更多相关《MATLAB语言及应用上机实习报告.docx(48页珍藏版)》请在冰豆网上搜索。
MATLAB语言及应用上机实习报告
MATLAB软件与基础数学实验
指导老师:
报告人:
学号:
班级:
报告所有代码均采用MATLAB2016a编写,和之前版本不同,它首次支持实时编辑,以下内容在可能在命令行窗口、编辑器或实时编辑器中编写。
实验1MATLAB基本特性与基本运算
例1-1求[12+2×(7-4)]÷32的算术运算结果。
>>(12+2*(7-4))/3^2
ans=
2
例1-2计算5!
,并把运算结果赋给变量y
>>y=factorial(5)
y=
120
例1-2计算2开平方
2^(1/2)
ans=
1.4142
例1-4计算2开平方并赋值给变量x(不显示)
查看x的赋值情况
>>x=2^(1/2);
>>x
x=
1.4142
例1-5设
,计算
的值。
>>a=-24/180;b=75/180;
>>sin(abs(a)+abs(b))/(tan(abs(a+b)))
ans=
1.7951
例1-6设三角形三边长为
,求此三角形的面积。
>>a=4;b=3;c=2;p=(a+b+c)/2;
>>s=(p*(p-a)*(p-b)*(p-c))^(1/2)
s=
2.9047
例1-7设
,
,计算
,
。
>>A=[1,2,3;4,5,6;1,0,1];
>>B=[-1,2,0;1,1,3;2,1,1];
>>A+B
ans=
043
569
312
>>A*B
ans=
779
131921
131
>>norm(A)
ans=
9.5758
>>A^(-1)
ans=
-0.83330.33330.5000
-0.33330.3333-1.0000
0.8333-0.33330.5000
例1-8显示上例中矩阵A的第2行第3列元素,并对其进行修改.
>>A(2,3)
ans=
6
>>A(2,3)=1;
>>A(2,3)
ans=
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
x=
-30.0000
22.5000
-13.0000
例1-11试求矩阵方程
的解。
>>a=[1,2,1;4,2,-6;-1,0,2];
>>b=[1,2,3;1,1,1];
>>x=b/a
x=
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
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;
plot(x,y);
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')
x=
-0.131********960646637049059278162
1.2995496825848217892317327263734
0.61603416775739233856937893320409-0.22190336322056809485939175107611i
0.61603416775739233856937893320409+0.22190336322056809485939175107611i
例如:
求一元函数最小值(fminbnd命令)
由于fminbnd只能求一个最小值,通过观察函数可知极小值点为-∞和+∞
>>x=fminbnd(y,0,inf)
x=
Inf
>>y=@(x)1/((x-0.3)^2+0.01)+1/((x-0.9)^2+0.04)-6;
>>[x,y]=fminbnd(y,0,inf)
x=
Inf
y=
-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)
ans=
13*pi+atan(35641981496012/67550630868559)-12
例1-14求二重积分
及三重积分
。
>>symsxy;
>>int(int(x*y,x,1,2),y,0,1)
ans=
3/4
>>symsxyz;
>>int(int(int(x*exp(y)+z^2,x,0,1),y,0,1),z,0,1)
ans=
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)
ans=
2.7183
(2)用定积分计算命令(trapz,quad,quadl)求无理数
的近似值。
(提示:
e=2.7182818284…,
=0.6931471806…)
>>x=1:
0.001:
2;
>>y=1./x;
>>trapz(x,y)
ans=
0.6931
例1-17求极限
。
>>symsxh;
>>limit((sin(x+h)-sin(x))/h,h,0)
ans=
cos(x)
例1-18:
设
,求
symsxyn;f=sym(x^n*y+sin(y));diff(f,x)
ans=
diff(f,y)
ans=
diff(diff(f,x),x)
ans=
diff(diff(f,y),y)
ans=
diff(diff(f,x),y)
ans=
例1-19:
求
,
,
,
►symsxyz%声明符号变量,注意变量间必须用空格分开
symsxyzt;int(x*y/(1+x^2),x)
ans=
int(x*y/(1+x^2),y,0,t)
ans=
int(int(x*y/(1+x^2),y,0,x^(1/2)),x,0,1)
ans=
int(int(int(x+y+z,z,1-x-y),y,0,1-x),x,0,1)
ans=
级数求和(symsum)
%求级数
(ans=inf即
)
>>symsk;
>>f=@(k)1/k;
>>symsum(f,k,1,inf)
ans=
Inf
%求级数
(ans=1)
>>symsk;
>>f=@(k)1/(k*(k+1));
>>symsum(f,k,1,inf)
ans=
1
%求级数
(ans=3/2*a)
>>symska;
>>f=@(k)a/3^k;
>>symsum(f,k,0,inf)
ans=
(3*a)/2
泰勒展开(taylor)
►symsx
►fy=1/(1>>taylor(f,x,'order',8)
ans=
-x^7+x^6-x^4+x^3-x+1+x+x^2)
求fx对自变量x(默认)在x=0点(默认)泰勒展开前6项(默认)
>>symsx;
>>f=@(x)1/(1+x+x^2);
>>taylor(f,x)
ans=
-x^4+x^3-x+1
求fx对自变量x(默认)在x=1点泰勒展开式前8项
>>taylor(f,x,1,'order',8)
ans=
(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)
ans=
-(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)
ans=
-(a*x^2+c)/x
微分方程(组)求解(dsolve)
求方程y'=5的通解,默认自变量为t
>>symsy(t);
>>dsolve(diff(y)==5)
ans=
C1+5*t
求方程y'=x的通解,指定自变量为x
>>symsy(x);
>>dsolve(diff(y,x)==x)
ans=
x^2/2+C2
求方程y''=1+y'满足y(0)=1,y'(0)=0的特解
>>symsy(t);
>>dsolve('D2y==1+Dy',y(0)==1,'Dy(0)==0')
ans=
exp(t)-t
求方程组
的通解,默认自变量为t
>>symsy(t)x(t);
>>z=dsolve('Dx==x+y','Dy==2*x');
>>z.x
ans=
C6*exp(2*t)-(C5*exp(-t))/2
>>z.y
ans=
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画出
上正弦、余弦曲线并对线型加粗、点型加大,重新定置坐标系以及加注相关说明和注释。
x=linspace(0,2*pi);
y1=sin(x);
y2=cos(x);
subplot(2,1,1);
plot(x,y1,'LineWidth',10);
title('y=sinx');
xlabel('x');
ylabel('y');
subplot(2,1,2);
plot(x,y2,'o','MarkerSize',3);
axis([-1,8,-2,2]);
title('y=cosx');
xlabel('x');
ylabel('y');
例2-3分别在两个图形窗口画出填充一正方形和极坐标方程
的图形。
a=0:
0.001:
2*pi;
r=2*sin(2*a).*cos(2*a);
polar(a,r);
[x,y]=pol2cart(a,r);
plot(x,y);
例2-4在[-2.5,2.5]上画出函数
的直方图和阶梯图。
x=linspace(-2.5,2.5,100);
y=exp(-x.^2);
subplot(2,1,1);
bar(x,y);
subplot(2,1,2);
stairs(x,y);
例2-5采用不同形式(直角坐标、参数、极坐标),画出单位圆
的图形。
ezplot('x^2+y^2-1',[-1,1]);
axisequal;
a=0:
0.001*pi:
2*pi;
x=sin(a);
y=cos(a);
plot(x,y);
axisequal;
r=ones(1,2001);
polar(a,r);
例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:
0.001:
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);
z=x.^2+y.^2;
a=surf(x,y,z);
axisequal;
axis([-1,1-1,10,1]);
axisoff;
gridoff;
set(a,'edgecolor','none');
例2-9画出
在
上的图形。
[x,y]=meshgrid(-7.5:
0.01:
7.5);
z=sin((x.^2+y.^2).^(1/2))./(x.^2+y.^2).^(1/2);
a=surf(x,y,z);
axis([-7.5,7.5-7.5,7.5-0.5,1]);
set(a,'edgecolor','none');
例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:
9;
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);
plot(x,y1,'o',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;
end
disp(s);
10000
例3-2:
求正整数n的阶乘:
p=1×2×3×…×n=n!
,并求出n=20时的结果。
n=20;
p=1;
fori=1:
n
p=p*i;
end
disp(p);
2.4329e+18
例3-3:
根据麦克劳林公式可以得到e≈1+1+1/2!
+1/3!
+…+1/n!
,试求e的近似值。
n=1000000;
s=1;
fori=1:
n
a=1/factorial(i);
s=s+a;
end
formatlong;
disp(s);
2.718281828459046
例3-4:
对于数列
求其前n项和不超过1000时的n的值及和.
n=1000;
s=0;
fori=1:
n
a=(i)^(1/2);
s=s+a;
end
formatlong;
disp(s);
2.109745588748073e+04
例3-5:
根据e≈1+1+1/2!
+1/3!
+…+1/n!
求e的近似值,要求精确到10-8。
n=1000000;
s=1;
a=ones(1,1000000);
fori=1:
1000000;
a(i)=1/factorial(i);
s=s+a(i);
if(i>=2)&&(abs(a(i-1)-a(i))<10^(-8))
break;
end
end
formatlong;
disp(s);
2.718281828446759
实验4MATLAB选择结构与应用实验
例4-1:
求任意有限数组a=[a
(1),a
(2),…,a(n)]中数值最大的元素M以及所在位置k.
n=100;
a=rand(1,n);
ifa
(1)>a
(2)
m=a
(1);
b=2;
else
m=a
(2);
b=2;
end
fori=2:
(n-1)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 语言 应用 上机 实习 报告