《MATLAB编程设计与应用》课程设计.docx
《《MATLAB编程设计与应用》课程设计.docx》由会员分享,可在线阅读,更多相关《《MATLAB编程设计与应用》课程设计.docx(13页珍藏版)》请在冰点文库上搜索。
《MATLAB编程设计与应用》课程设计
《MATLAB编程设计与应用》课程设计
所在学院:
理学院
专业名称:
应用物理学
所在班级:
物理09-1
学生姓名:
学生学号:
0907120107
2011年6月
一,程序的结构和流程控制:
用Matlab程序的一般语句(循环语句for…end,条件循环语句while…end和条件转向语句if…else…end)分别求1~100的奇数和。
程序一
程序二:
程序三
sum=0;
forx=1:
1:
100;
ifmod(x,2)
sum=sum+x;
elsecontinue;
end
end
sum
clear
x=1;
sum=0;
whilex<101
sum=sum+x;
x=x+2;
end
sum
clear
sum=0;
forx=1:
2:
99;
sum=sum+x;
end
sum
二,2D绘制、函数图形的绘制:
1,用plot语句绘制函数图形,熟悉分区绘图命令(subplot),建立图形命令(figure),以及用title命令和一些指定的线性、颜色和标记对图形作注释的功能。
x=[-pi:
pi/20:
pi];
y1=sin(x);
y2=cos(x);
figure
(1)
subplot(2,2,1),plot(x,y1,'+')
gridon,title('sin(x)')
subplot(2,2,2),plot(x,y2,'k')
gridon,title('cos(x)')
subplot(2,2,3),plot(x,y1,'b*',x,y2,'g-.')
gridon,title('sin(x)andcos(x)')
subplot(2,2,4),plot(x,y1,'-',x,y1,'ro')
gridon,title('sin(x)')
2,用subplot命令将画图区域分为三份,分别用ploy,comet和fplot命令做y=sin(3x+2)的图像。
并用图形标题设置命令(title),X轴标签设置命令(xlabel),y轴标签设置命令(ylabel)对图形作注释。
程序:
x=-2*pi:
pi/20:
2*pi;
y=sin(3*x+2);
subplot(3,1,1)
plot(x,y)
title('y=sin(3x+2)')
xlabel('x[-2*pi,2*pi]')
ylabel('y=sin(3x+2)')
subplot(3,1,2)
comet(x,y,'g')
title('y=sin(3x+2)')
xlabel('x[-2*pi,2*pi]')
ylabel('y=sin(3x+2)')
subplot(3,1,3)
fplot('sin(3*x+2)',[-2*pi,2*pi])
title('y=sin(3x+2)')
xlabel('x[-2*pi,2*pi]')
ylabel('y=sin(3x+2)')
用行结果:
3,练习使用ezplot命令绘制参数曲线图形:
参数方程及程序
用行结果
参数方程:
程序:
subplot(2,1,1)
ezplot('(cos(x))^3','(sin(x)^3)',[-4*pi,4*pi])
subplot(2,1,2)
ezplot('(x-sin(x))','(1-cos(x))',[-4*pi,4*pi]
参数方程:
程序:
subplot(2,1,1)
ezplot('x*(cos(x))^3','x*(sin(x)^3)',[-pi,pi])
subplot(2,1,2)
ezplot('x*(x-sin(x))','x*(1-cos(x))',[-pi,pi])
4,用polar命令绘制极坐标图形,并熟悉gtext命令,用鼠标将文本点击到图形相应的位置上。
在同一坐标区域内绘制三叶玫瑰线和四叶玫瑰线。
程序:
subplot(2,2,1)
ezpolar('sin(2*x)',[0,2*pi])
gtext('ËÄҶõ¹åÏßr=sin(2x)')
subplot(2,2,2)
ezpolar('cos(2*x)',[0,2*pi])
gtext('ËÄҶõ¹åÏßr=cos(2x)')
subplot(2,2,3)
ezpolar('sin(3*x)',[0,2*pi])
gtext('ÈýҶõ¹åÏßr=sin(3x)')
subplot(2,2,4)
ezpolar('cos(3*x)',[0,2*pi])
gtext('ÈýҶõ¹åÏßr=cos(3x)')
用行结果:
5,在同一坐标系中绘制不同函数的图像。
函数表达式及程序
用行结果
,
,
,
程序:
x=[-2*pi:
pi/20:
2*pi];
y1=sin(x);
y2=x-x.^3/prod(1:
3);
y3=x-x.^3/prod(1:
3)+x.^5/prod(1:
5);
y4=y3-x.^7/(prod(1:
7);
plot(x,y1,'r',x,y2,'b',x,y3,'g',x,y4,'k')
函数表达式:
程序:
x=-1:
0.01:
1;
symst
y=(t^2-1)^3+1;
y1=diff(y,'t');
y2=diff(y1,'t');
y=subs(y,t,x);
y1=subs(y1,t,x);
y2=subs(y2,t,x);
plot(x,y,'r',x,y1,'g',x,y2,'b')
6,课外扩展:
分段函数的表达与绘图
编写程序计算
并画出在
上的曲线。
x=-3:
0.01:
3;
y1=zeros(size(x));
y2=zeros(size(x));
y3=zeros(size(x));
N=length(x);
fork=1:
N
ifx(k)<-1&x(k)>=-3;
y1(k)=(-x(k).^2-4*x(k)-3)/2;
elseifx(k)>=-1&x(k)<1;
y2(k)=-x(k).^2+1;
elsex(k)<=3&x(k)>=1;
y3(k)=(-x(k).^2+4*x(k)-3)/2;
end
end
y=y1+y2+y3;
plot(x,y)
三,符号运算与数值运算综合练习
1.已知函数
的表达式为
编写一个函数文件,定义函数
在
处的一阶泰勒多项式。
函数文件myfun.m
调用语句
用行结果
functiony=myfun(x)
symst1t2t3t4t5t6t7
x0=[0.10.30.10.11.5160.75];
u
(1)=174.42*(t1/t5)*(t3/(t2-t1))^0.85*
sqrt((1-2.62*(1-0.36*(t4/t2)^(-0.56))^1.5
*(t4/t2)^1.16)/(t6*t7))
u
(2)=diff(u
(1),'t1');
u(3)=diff(u
(1),'t2');
u(4)=diff(u
(1),'t3');
u(5)=diff(u
(1),'t4');
u(6)=diff(u
(1),'t5');
u(7)=diff(u
(1),'t6');
u(8)=diff(u
(1),'t7');
u=subs(u,{'t1','t2','t3','t4','t5','t6','t7'},x0)
y=u*[1,x-x0]'
>>x=[1:
7];
y=myfun(x)
u=
8721/50*t1/t5*(t3/(t2-t1))^(17/20)*((1-131/50*(1-9/25/(t4/t2)^
(14/25))^(3/2)*(t4/t2)^(29/25))/t6/t7)^(1/2)
u=
Columns1through6
1.725624.5896-5.991114.6675
-4.0281-1.1504
Columns7through8
-0.0539-1.1504
y=
29.820
y=
29.8206
注意事项:
保存时须要以函数名命名,负责不能调用函数。
说明:
用行结果没有完全按MATLAB给出的形式,其中空行被去掉了
2.编辑一个函数文件,实现如下功能:
对输入的矩阵a,若a是方阵,计算其特征值与特征向量,并求出最大特征值及其对应的特征向量。
若a不是方阵,计算a的转置与a的乘积的特征值与特征向量,并求出最大特征值及其对应的特征向量。
函数文件myfun.m
调用语句
用行结果
function[Emax,Dmax]=myfun(x)
n=size(x);
ifn
(1)==n
(2);
b=x;
elseb=x'*x;
end
[e,d]=eig(b)
dmax=d(1,1);
k=1;
fori=2:
n
(2)
if(dmaxdmax=d(i,i)
k=i;
end
end
Emax=e(:
k)
Dmax=dmax
>>a=[1,2,3,21;
1,4,4,12;
1,2,43,12;
4,2,3,5];
>>myfun(a)
e=
-0.1182-0.72640.87950.3798
-0.1272-0.51190.3012-0.9188
-0.98040.22020.05790.0040
-0.0928-0.4022-0.36380.1079
d=
44.5164000
013.127600
00-6.80390
0002.1599
Emax=
-0.1182
-0.1272
-0.9804
-0.0928
Dmax=
44.5164
四、优化工具箱试验
1,非线性不等式约束最优化问题
求解
约束条件:
,
实验步骤
用行结果
一,目标函数文件:
functionf=objfun(x)
f=exp(x
(1))*(4*x
(1)^2+2*x
(2)^2+4*x
(1)
*x
(2)+2*x
(2)+1);
Optimizationterminated:
first-orderoptimalitymeasureless
thanoptions.TolFunandmaximumconstraintviolationisless
thanoptions.TolCon.
Activeinequalities(towithinoptions.TolCon=1e-006):
lowerupperineqlinineqnonlin
1
2
x=
-9.54741.0474
fval=
0.0236
二,约束函数文件:
function
[c,ceq]=confun(x)
c=[1.5+x
(1)*x
(2)-x
(1)-x
(2);
-x
(1)*x
(2)-10];
ceq=[];
三,初始化调用函数:
>>x0=[-1,1];
>>options=optimset('LargeScale','off');
>>[x,fval]=fmincon(@objfun,x0,[],[],[],[],[],[],
@confun,options)
2,线性规划
求解下述问题:
根据函数linprog函数的功能,可知此问题可用linprog函数求解:
函数程序为:
f=[-3,-2,-1]';
a=[1,2,4;-2,1,-1;4,-1,-2;-4,1,2];
b=[5,-35,40,-30]';