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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

相关文档
最新文档