Matlab基础与-应用教学教材答案~(人民邮电出版社~)..doc

上传人:小** 文档编号:630100 上传时间:2019-04-22 格式:DOC 页数:18 大小:295.50KB
返回 下载 相关 举报
Matlab基础与-应用教学教材答案~(人民邮电出版社~)..doc_第1页
第1页 / 共18页
Matlab基础与-应用教学教材答案~(人民邮电出版社~)..doc_第2页
第2页 / 共18页
点击查看更多>>
资源描述

《Matlab基础与-应用教学教材答案~(人民邮电出版社~)..doc》由会员分享,可在线阅读,更多相关《Matlab基础与-应用教学教材答案~(人民邮电出版社~)..doc(18页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、-_第第1章章 一、思考题一、思考题 4. (1) B=A(2:5,1:2:5) (2)A(7)= (3) A=A+30 (4)size(A) (5) t(find(t=0)=eps (6)t=reshape(x,3,4) (7)abs(matlab) (8)char(93) 5. A=97,67,34,10;-78,75,65,5;32,5,-23,-59;0,-12,54,7(1) B=A(1:3,:)C=A(:,1:2)D=A(2:4,3:4)E=B*C (2)A(find(A=50 elseif h=1e-5 w=7.04,4.28,3.40,2.52,2.13; hh=500,900

2、,1500; ww=interp1(h,w,hh,spline) 3. x=linspace(1,10,50); y=log(x); f=polyfit(x,y,5); yy=polyval(f,x); plot(x,y,r-,x,yy,g.) 4. N=64; % 采样点数采样点数 T=5; % 采样时间终点采样时间终点 t=linspace(0,T,N); % 给出给出N个采样时间个采样时间ti(I=1:N) x=3*exp(-t); % 求各采样点样本值求各采样点样本值x dt=t(2)-t(1); % 采样周期采样周期 f=1/dt; % 采样频率采样频率(Hz) X=fft(x);

3、% 计算计算x的快速傅立叶变换的快速傅立叶变换X F=X(1:N/2+1); % F(k)=X(k)(k=1:N/2+1) f=f*(0:N/2)/N; % 使频率轴使频率轴f从零开始从零开始 plot(f,abs(F),-*) % 绘制振幅绘制振幅-频率图频率图 xlabel(Frequency); ylabel(|F(k)|) 5. -_(1)p1=1 2 0 0 7;p2=1 -2;p3=1 0 0 5 1; p12=conv(p1,p2); p=p12+zeros(1,size(p12,2)-size(p3,2),p3; roots(p) (2)A=-1,4,3;2,1,5;0,5,6

4、; Px=polyval(p,A) Pxm=polyvalm(p,A) 6. (1) z=fzero(3*x-sin(x)+1,0) (2) 建立函数文件建立函数文件 myfun.m function F=myfun(X) x=X(1); y=X(2); F(1)=x*x+y*y-9; F(2)=x+y-1; 在命令窗口中输入以下命令:在命令窗口中输入以下命令: x=fsolve(myfun,3,0,optimset(Display,off) 第第6章章 一、思考题一、思考题 2. fx=inline(1./(1+x.2); I,n=quad(fx,-100000,100000,1e-3);

5、I,n=quadl(fx,-100000,100000,1e-3); x=-100000:0.01:100000; y=1./(1+x.*x); trapz(x,y); 3. (1) fx=inline(-2*y+2*x*x+2*x); t,y=ode23(fx,0,0.5,1) (2) fx=inline(y-exp(x)*cos(x); t,y=ode23(fx,0,3,1)二、实验题二、实验题 1. for x=1:3fx=x,x2,x3;1,2*x,3*x;0,2,6*x;diff(fx) end 2. (1)x=0:0.01:1; y=x.10+10.x+1./log10(x); d

6、y=diff(y)/0.01; (2)x=0:0.01:1; y=log(1+x); dy=diff(y,2)/0.01; plot(x(1:99),dy) 3. (1)fx=inline(x.2.*sqrt(2*x.*x+3); quad(fx,1,5) (2)fx=inline(x./sin(x).2); quad(fx,pi/4,pi/3) (3)fx=inline(abs(cos(x+y); dblquad(fx,0,pi,0,pi)-_(4)syms x y; fx=x*y; int(int(fx,y2,y+2),-1,2) x的积分区间为的积分区间为【0,2】时时 fx=inlin

7、e(x.*y); dblquad(fx,0,2,-1,2) 4. x=0.3:0.2:1.5; y=0.3895,0.6598,0.9147,1.1611,1.3971,1.6212,1.8325; trapz(x,y) 5. (1) yp=inline(-(1.2+sin(10*x)*y);t,y=ode23(yp,0,5,1); (2)令令,则可写出原方程的状态方程形式:,则可写出原方程的状态方程形式: 3,21yxyxyx123233221sin31 ) 1(2cos5cosxtxxtttxxxxx- txxxtt txxxcos00) 1(2cos51sin31100010321232

8、1建立函数文件建立函数文件 ztfun.m function y=ztfun(t,x) b=0;0;cos(t); y=0,1,0;0,0,1;-1/(3+sin(t),-1,5*cos(2*t)/(t+1)2*x+b; 解微分方程组解微分方程组 t,y=ode23(ztfun,0,5,1;0;2); 6. 建立函数文件建立函数文件 ztfun.m function yy=ztfun(t,y) yy=y(2)*y(3);-y(1)*y(3);-0.51*y(1)*y(2); 解微分方程组解微分方程组 t,y=ode23(ztfun,0,5,0;1;1) 第第7章章 一、思考题一、思考题 3.

9、(1)数值积分)数值积分 fx=inline(exp(x).*(1+exp(x).2); quad(fx,0,log(2) 符号积分符号积分 f=sym(exp(x)*(1+exp(x)2); v=int(f,0,log(2); eval(v) (2)略)略 二、实验题二、实验题 1.1.-_A=sym(1,2,3;x,y,z;3,2,1) rank(A) inv(A) det(A) 2.2. (1)(1) y=sym(sqrt(x+sqrt(x+sqrt(x); y1=diff(y) y2=diff(y,x,2) (2)(2) syms x y; fxy=sin(x2*y)*exp(-x2-

10、y); diff(diff(fxy,x),y) 3.3. (1)(1) symssyms x x int(1/(1+x4)int(1/(1+x4) (2) syms x t int(-2*x*x+1)/(2*x*x-3*x+1)2,x,cos(t),exp(2*t) 4.4. syms n x symsum(1/(2*n+1)/(2*x+1)(2*n+1),n,0,inf) symsum(1/(2*n+1)/(2*x+1)(2*n+1),n,0,5) 5.5. (1) syms x taylor(exp(x)+exp(-x)/2,5,0) (2) syms a x taylor(exp(-5*

11、x)*sin(3*x+pi/3),5,a) 6.6. (1)x=solve(sym(x3+a*x+1=0) (2) x y=solve(sym(sqrt(x2+y2)-100=0,3*x+5*y-8=0)7.7. 方程转化为:方程转化为: 2 1 11 tyyyy符号解符号解 y1,y11=dsolve(Dy=y1,Dy1+y=1-t2/pi,y(-2)=5,y1(-2)=5,t)y1,y11=dsolve(Dy=y1,Dy1+y=1-t2/pi,y(-2)=5,y1(-2)=5,t) 数值解数值解 编写函数文件编写函数文件ztfun.m function yy=ztfun(t,y) yy=y

12、(2);1-t2/pi-y(1); 在命令窗口输入以下命令在命令窗口输入以下命令 t,y=ode45(ztfun,-2,7,-5;5); t=linspace(-2,7,49) y2=y8.8. x,y=dsolve(Dx=3*x+4*y,Dy=-4*x+3*y,x(0)=0,y(0)=1) 第第9章章 二、实验题二、实验题 1. (1)新建一个Blank GUI。 (2)在窗口上添加一个Static Text、一个Edit Text,一个Push Botton,两个Check Box, 一组Radio Button。各控件的属性设置如表9.1所示。表 9.1界面控件属性-_控 件属 性 名属

13、 性 值静态文本框String实验一:编辑框String按钮String设置字体大小单选按钮 1Stringred单选按钮 2Stringyellow单选按钮 3StringblueStringblack单选按钮 4Value1.0复选框 1String倾斜复选框 2String加粗(3)在按钮的 Callback 函数中添加以下代码: s=eval(get(handles.edit1,String); set(handles.text1,FontSize,s); (4)在复选框 1 的 Callback 函数中添加以下代码: if (get(hObject,Value) = get(hObj

14、ect,Max)set(handles.text1,FontAngle,italic); elseset(handles.text1,FontAngle,normal); end 在复选框 2 的 Callback 函数中添加以下代码: if (get(hObject,Value) = get(hObject,Max)set(handles.text1,FontWeight,bold); elseset(handles.text1,FontAngle,normal); end (5)在单选按钮组的SelectionChangeFcn函数中添加以下代码: set(handles.text1,Fo

15、regroundColor,get(eventdata.NewValue,string); 2. (1)新建一个Blank GUI。 (2)用菜单编辑器编辑菜单,各菜单项属性如表9.2.表 9.2菜单项属性菜单项Label 属 性 值Tag 属 性 值LineLabelm_lineMenuHelpHelpm_help Line StyleLine Stylem_linestyle Line WidthLine Widthm_linewidthLine Menu Item Line ColorLine Colorm linecolor Help Menu ItemAboutAboutm_abou

16、t (3)绘图。在窗口的OpeningFcn函数添加以下代码: global h; t=0:0.01:6; h=plot(t.*sin(t),t.*cos(t) (4)在 Line Style 菜单项的 Callback 函数中添加以下代码: global h; set(h,LineStyle,-.); 在 Line Width 菜单项的 Callback 函数中添加以下代码: global h;-_set(h,LineWidth,2); 在 Line Color 菜单项的 Callback 函数中添加以下代码: global h; set(h,color,red); 在 About 菜单项的

17、 Callback 函数中添加以下代码: msgbox(Help Item); 3. t=0:pi/20:6*pi;a=2;b=3; r=a+b*t; h_draw=polar(t,r,-*); h_menu=uicontextmenu; % uimenu(h_menu,Label,red,Call,set(h_draw,Color,red);); uimenu(h_menu,Label,yellow,Call,set(h_draw,Color,yellow); ); uimenu(h_menu,Label,blue,Call,set(h_draw,Color,blue);); set(h_d

18、raw,UIContextMenu,h_menu); % 4. (1)新建一个Blank GUI。 (2)在窗口上添加三个Static Text、三个Edit Text,一个Push Botton,一个坐标轴对象 Axes。各控件的属性设置如表9.3所示。表 9.3界面控件属性控 件属 性 名属 性 值text1Stringa:text1Stringb:Static Texttext1Stringn:edit1String edit2StringEdit Text edit3Stringpushbotton1String绘图width100Axes1height25 (3)在按钮 pushbu

19、tton1 的 Callback 函数中添加以下代码: t=0:pi/20:6*pi; a=eval(get(handles.edit1,String); b=eval(get(handles.edit2,String); n=eval(get(handles.edit3,String); r=a.*cos(b+n.*t); polar(handles.axes1,t,r);第第10章章 二、实验题二、实验题 1. 建立模型exercise10_1.mdl (1)双击Gain模块,打开Function Block Parameters进行设置。设置完成后,单击模型编辑 窗口的Start Sim

20、ulation按钮,观察曲线。 (2)选择Math Operation模块库的Slide Gain模块替代Gain模块 2.略 3. -_Scope的双输入实现方法:双击Scope模块,打开Scope示波器窗口,单击该窗口工具栏的 Parameters 按钮(左数第二个),在打开的对话框的General选项卡的Numbers of axes:后的 编辑框中输入2,然后单击OK按钮返回,即可看到模型中的Scope模块增加了一个输入口 4. (1)先建立如下模型(2)建立子系统。选中除输入输出模块外其他模块,执行Edit菜单的Create Subsystem命 令。 (3)封装子系统。选中子系统模

21、块,执行Edit菜单的Mask Subsystem命令。 在Mask Editor对话框的Parameters选项卡中的Dialog Parameters栏内增加三个变量,单击 OK按钮返回。5. (1)建立S函数subsection.m function sys,x0,str,ts=subsection(t,x,u,flag) switch flag case 0 sys,x0,str,ts=mdlInitializeSizes; case 3 sys=mdlOutputs(t,x,u); case 1,2,4,9sys=; otherwise error(Unhandled Flag, n

22、um2str(flag); endfunction sys,x0,str,ts=mdlInitializeSizes() sizes=simsizes; sizes.NumContStates=0; sizes.NumDiscStates=0; sizes.NumOutputs=1; -_sizes.NumInputs=1; sizes.DirFeedthrough=1; sizes.NumSampleTimes=1; sys=simsizes(sizes); x0=; str=; ts=-1,0; function sys=mdlOutputs(t,x,u) if u=0 mxArray *

23、pa1, *pa2, *pa3;double datak1k2;const char *file = “mat11_4.mat“;char strBUFSIZE;int status; int n1,n2;for(n1=0;n1 #include #include #include “engine.h“ #define BUFSIZE 256 int main() Engine *ep;mxArray *X = NULL, *Y = NULL;char bufferBUFSIZE+1;double x100 ,y100;int n;for( n=0;n100;n+) xn=(n+1)/100.

24、0;yn=(n+1)/100.0;if (!(ep = engOpen(“0“) -_fprintf(stderr, “nCant start MATLAB enginen“);return EXIT_FAILURE;X = mxCreateDoubleMatrix(1, 100, mxREAL);memcpy(void *)mxGetPr(X), (void *)x, sizeof(x);Y = mxCreateDoubleMatrix(1, 100, mxREAL);memcpy(void *)mxGetPr(Y), (void *)y, sizeof(y);engPutVariable(

25、ep, “X“, X);engPutVariable(ep, “Y“, Y);engEvalString(ep,“x y=meshgrid(X,Y);“);engEvalString(ep, “z = x./(1+x.2+y.2);“);engEvalString(ep, “mesh(x,y,z);“);printf(“Hit return to continuenn“);fgetc(stdin);mxDestroyArray(X);mxDestroyArray(Y);engClose(ep);return EXIT_SUCCESS; (2)在MATLAB命令窗口输入以下命令编译(假定本机安装

26、的编译器是Microsoft Visual Studio 2005) optsfile = matlabroot binwin32mexoptsmsvc80engmatopts.bat; mex(-f,optsfile,exercise11_5.c) (3)编译完成后,运行exercise11_5.exe 6. (1)编辑c源程序exercise11_6.c,代码如下: #include “mex.h“ double cfun(double *a, double *b) double n,r;n=*a;r=*b; if (r=0) return 1; else if (n=1) return

27、n; else *b=r-1;return cfun(a,b)*(n-r+1)/r; void mexFunction( int nlhs, mxArray *plhs,int nrhs, const mxArray *prhs ) double *x,*y,*z;int m,n,i;if(nrhs!=2) mexErrMsgTxt(“Two inputs required.“); if(nlhs!=1) mexErrMsgTxt(“One output required.“);for(i=0;i2;i+)m = mxGetM(prhsi);n = mxGetN(prhsi);if( !mxI

28、sDouble(prhsi) | mxIsComplex(prhsi) |!(m=1 x = mxGetPr(prhs0);-_y = mxGetPr(prhs1);plhs0 = mxCreateDoubleMatrix(m,n, mxREAL);z = mxGetPr(plhs0); *z=cfun(x,y); (2)在MATLAB命令窗口输入命令设置编译器(假定本机安装的编译器是Microsoft Visual Studio 2005) mex -setup 按提示选择一种编译器,然后输入命令 mex exercise11_6.c (3)调用函数计算 a=exercise11_6(5.0,4.0) a=exercise11_6(8.0,12.0)第第12章章 二、实验题二、实验题 1. x,fval=fminbnd(x)+2*x+512/x,1,512) 答案:长16m,宽32m,用材64m 2.(1)设两种产品的产量为x 、y,建立模型: 00300010320005436004912070maxyxyxyxyxyxZ(2)求解。在MATLAB的命令窗口输入“optimtool”命令打开优化工具图形用户界面,设 置如下,单击start按钮开始求解答案: x=200, y=240

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com