当前位置:文档之家› 《MATLAB_语言与数学运算》练习答案

《MATLAB_语言与数学运算》练习答案

《MATLAB 语言与数学运算》实验课程任务书

一、实验教学目标与基本要求

上机实验是本课程重要的实践教学环节。实验的目的不仅仅是验证理论知识,更重

要的是通过上机加强学生的实验手段与实践技能,掌握应用MATLAB 语言求解问题的方法,培养学生分析问题、解决问题、应用知识的能力和创新精神,全面提高学生的综合素质。

上机学时为4学时,主要内容是基于上课内容对课后典型习题应用MATLAB进行求解,

基本掌握常见数学问题的求解方法与命令调用,更深入地认识和了解MATLAB语言的强大的计算功能。

上机实验最终以书面报告的形式提交,作为期末成绩的考核内容。

二、实验内容(4 学时)

第一部分MATLAB 语言编程、科学绘图与基本数学问题求解(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、用数值方法可以求出,

试不采用循环的形式求出和式的数值解。由于数值方法采用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:\MATLAB6p5\work\下,然后开始运行工作命令即可。

需要编写funm()与diagm()函数如下:

function F=funm(A,fun,x)

[V,J]=jordan(A); v1=[0,diag(J,1)'];

v2=[find(v1==0), length(v1)+1];

for i=1:length(v2)-1

v_lambda(i)=J(v2(i),v2(i)); v_n(i)=v2(i+1)-v2(i);

end

m=length(v_lambda);

F=sym([]);

for i=1:m

J1=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)+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、用数值求解函数求解下述的方程的根,并对得出的结果进行检验。

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=[-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:\MATLAB6p5\toolbox\optim\fmincon.m at line 213

Maximum number of function evaluations exceeded;

increase OPTIONS.MaxFunEvals

x =

0.4195

0.4195

编写一个M文件如下:(不要加上function语句)

i=1; x=x0;

while (1)

[x,a,b]=fmincon('exc6fun6',x,A,B,Aeq,Beq,xm,xM,'exc6fun6a',ff);

if b>0, break; end

i=i+1;

end

给M函数起个名字如:kk,回到工作页调用。

>> kk

>> x,i

x =

1.1825

-1.7398

i =

5

33``

f=-[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 搭建起系统的仿真模型,并绘制出仿真结果曲线。

相关主题