1、MATLAB 语言与数学运算实验课程任务书一、实验教学目标与基本要求上机实验是本课程重要的实践教学环节。实验的目的不仅仅是验证理论知识,更重要的是通过上机加强学生的实验手段与实践技能,掌握应用MATLAB 语言求解问题的方法,培养学生分析问题、解决问题、应用知识的能力和创新精神,全面提高学生的综合素质。上机学时为4学时,主要内容是基于上课内容对课后典型习题应用MATLAB进行求解,基本掌握常见数学问题的求解方法与命令调用,更深入地认识和了解MATLAB语言的强大的计算功能。上机实验最终以书面报告的形式提交,作为期末成绩的考核内容。二、实验内容(4 学时)第一部分MATLAB 语言编程、科学绘图
2、与基本数学问题求解( 4 学时)主要内容:掌握MATLAB 语言编程、科学绘图、微积分、线性代数问题等基本数学问题的求解与应用。练习题:1、安装MATLAB 软件,应用demo 命令了解主要功能,熟悉基本功能,会用help 命令。2、用MATLAB 语句输入矩阵A 和B 矩阵前面给出的是4 4 矩阵,如果给出A(5,6) = 5 命令将得出什么结果?答案:3、假设已知矩阵A,试给出相应的MATLAB 命令,将其全部偶数行提取出来,赋给B 矩阵,用A =magic(8) 命令生成A 矩阵,用上述的命令检验一下结果是不是正确。答案:4、用数值方法可以求出,试不采用循环的形式求出和式的数值解。由于数
3、值方法采用double 形式进行计算的,难以保证有效位数字,所以结果不一定精确。试采用符号运算的方法求该和式的精确值。5、答案;答案:答案:1、2、3、答案:答案:ans =1编写一个vander()函数如下:function A=vander(v)n=length(v);v=v(:);A=sym(ones(n);for j=n-1:-1:1,A(:,j)=v.*A(:,j+1);end将此函数存放在 c:MATLAB6p5work下,然后开始运行工作命令即可。需要编写funm()与diagm()函数如下:function F=funm(A,fun,x)V,J=jordan(A); v1=0,
4、diag(J,1);v2=find(v1=0), length(v1)+1;for i=1:length(v2)-1v_lambda(i)=J(v2(i),v2(i); v_n(i)=v2(i+1)-v2(i); endm=length(v_lambda); F=sym();for i=1:mJ1=J(v2(i):v2(i)+v_n(i)-1,v2(i):v2(i)+v_n(i)-1);fJ=funJ(J1,fun,x); F=diagm(F,fJ);end F=V*F*inv(V);function A=diagm(A1,A2)A=A1; A(size(A1,1)+1:size(A1,1)+
5、size(A2,1),size(A1,2)+1:size(A1,2)+size(A2,2)=A2;function fJ=funJ(J,fun,x)lam=J(1,1); f1=fun;fJ=subs(fun,x,lam)*eye(size(J);H=diag(diag(J,1),1); H1=H;for i=2:length(J)f1=diff(f1,x); a1=subs(f1,x,lam);fJ=fJ+a1*H1; H1=H1*H/i;end第二部分数学问题求解与数据处理(4 学时)主要问题:掌握代数方程与最优化问题、微分方程问题、数据处理问题的MATLAB 求解方法。练习题:5、用数值
6、求解函数求解下述的方程的根,并对得出的结果进行检验。OPT=optimset;OPT.Gradobj=on; 注:求解精度le-10,le-20 不好用可以不要。写OPT语句即可,得到相同结果:OPT=optimset写目标函数: function y=exc6fun6(x) y=exp(x(1)*(4*x(1)2+2*x(2)2+4*x(1)*x(2)+2*x(2)+1);写约束条件:function c,ce=exc6fun6a(x)ce=;c=x(1)+x(2); x(1)*x(2)-x(1)-x(2)+1.5; -10-x(1)*x(2);A=; B=; Aeq=; Beq=; xm=
7、-10; -10; xM=10; 10;x0=(xm+xM)/2;ff=optimset; ff.TolX=1e-10; ff.TolFun=1e-20; x=fmincon(exc6fun6,x0,A,B,Aeq,Beq,xm,xM,exc6fun6a,ff)Warning: Large-scale (trust region) method does not currently solve this type of problem,switching to medium-scale (line search). In C:MATLAB6p5toolboxoptimfmincon.m at
8、line 213Maximum number of function evaluations exceeded;increase OPTIONS.MaxFunEvalsx =0.41950.4195编写一个M文件如下:(不要加上function语句)i=1; x=x0;while (1)x,a,b=fmincon(exc6fun6,x,A,B,Aeq,Beq,xm,xM,exc6fun6a,ff);if b0, break; endi=i+1;end给M函数起个名字如:kk,回到工作页调用。 kk x,ix =1.1825-1.7398i =533f=-592 381 273 55 48 37 23; A=3534 2356 1767 589 528 451 304;B=119567; intlist=1;1;1;1;1;1;1;ctype=-1; xm=zeros(7,1);xM=inf*ones(7,1); res,b=ipslv_mex(f,A,B,intlist,xM,xm,ctype)12、试选择状态变量,将下面的非线性微分方程组转换成一阶显式微分方程组,并用MATLAB对其求解,绘制出解的相平面或相空间曲线。上图为微分方程的解13、考虑简单的线性微分方程且方程的初值为试用Simulink 搭建起系统的仿真模型,并绘制出仿真结果曲线。