当前位置:首页 >> 数学 >>

MATLAB作业1参考答案


MATLAB 作业 1 参考答案
1 、在你的机器上安装MATLAB 语言环境,并键入demo 命令,由给出的菜单系统和对话框原 型演示程序,领略MATLAB 语言在求解数学问题方面的能力与方法。 【求解】略. 2、启动MATLAB 环境,并给出语句tic, A=rand(500); B=inv(A); norm(A*B-eye(500)),toc, 试运行该语句,观察

得出的结果,并利用help 命令对你不熟悉的语句进行帮助信息查询, 逐条给出上述程序段与结果的解释。 【求解】在MATLAB 环境中感触如下语句,则可以看出,求解 500 ? 500 随机矩阵的逆,并 求出得出的逆矩阵与原矩阵的乘积,得出和单位矩阵的差,得出范数。一般来说,这样得出 的逆矩阵精度可以达到 10
?12



>> tic, A=rand(500); B=inv(A); norm(A*B-eye(500)), toc ans = 1.2333e-012 Elapsed time is 1.301000 seconds. 3、试用符号元素工具箱支持的方式表达多项式 f ( x) ? x ? 3x ? 4 x ? 2 x ? 3x ? 6 ,并令
5 4 3 2

x?

s ?1 ,将f(x) 替换成s 的函数。 s ?1

【求解】可以先定义出f 函数,则由subs() 函数将x 替换成s 的函数 >> syms s x;f=x^5+3*x^4+4*x^3+2*x^2+3*x+6;F=subs(f,x,(s-1)/(s+1)) F = (s-1)^5/(s+1)^5+3*(s-1)^4/(s+1)^4+4*(s-1)^3/(s+1)^3+ 2*(s-1)^2/(s+1)^2+3*(s-1)/(s+1)+6 4、用MATLAB 语句输入矩阵A 和B

?1 ?4 A?? ?2 ? ?3

2 3 4? 3 2 1? ?, 3 4 1? ? 2 4 1?

?1 ? 4 j ? 4 ?1 j B?? ?2 ? 3 j ? ?3 ? 2 j

2 ? 3 j 3 ? 2 j 4 ?1 j? 3 ? 2 j 2 ? 3 j 1? 4 j? ? 3 ? 2 j 4 ?1 j 1 ? 4 j? ? 2 ? 3 j 4 ?1 j 1 ? 4 j?

前面给出的是4 ×4 矩阵,如果给出A(5; 6) = 5 命令将得出什么结果? 【求解】用课程介绍的方法可以直接输入这两个矩阵 >> A=[1 2 3 4; 4 3 2 1; 2 3 4 1; 3 2 4 1] A = 1 2 3 4 4 3 2 1 2 3 4 1 3 2 4 1 若给出A(5,6)=5 命令,虽然这时的行和列数均大于A 矩阵当前的维数,但仍然可以执行该

语句,得出 >> A(5,6)=5 A = 1 2 3 4 0 0 4 3 2 1 0 0 2 3 4 1 0 0 3 2 4 1 0 0 0 0 0 0 0 5 复数矩阵也可以用直观的语句输入 >> B=[1+4i 2+3i 3+2i 4+1i; 4+1i 3+2i 2+3i 1+4i; 2+3i 3+2i 4+1i 1+4i; 3+2i 2+3i 4+1i 1+4i]; B = 1.0000 + 4.0000i 2.0000 + 3.0000i 3.0000 + 2.0000i 4.0000 + 1.0000i 3.0000 + 2.0000i 2.0000 + 3.0000i 2.0000 + 3.0000i 3.0000 + 2.0000i 4.0000 + 1.0000i 3.0000 + 2.0000i 2.0000 + 3.0000i 4.0000 + 1.0000i

4.0000 1.0000 1.0000 1.0000

+ + + +

1.0000i 4.0000i 4.0000i 4.0000i

5、假设已知矩阵A ,试给出相应的MATLAB 命令,将其全部偶数行提取出来,赋给B 矩阵, 用A =magic(8) 命令生成A 矩阵,用上述的命令检验一下结果是不是正确。 【求解】魔方矩阵可以采用magic() 生成,子矩阵也可以提取出来 >> A=magic(8), B=A(2:2:end,:) A = 64 2 3 61 60 6 7 57 9 55 54 12 13 51 50 16 17 47 46 20 21 43 42 24 40 26 27 37 36 30 31 33 32 34 35 29 28 38 39 25 41 23 22 44 45 19 18 48 49 15 14 52 53 11 10 56 8 58 59 5 4 62 63 1 B = 9 55 54 12 13 51 50 16 40 26 27 37 36 30 31 33 41 23 22 44 45 19 18 48 8 58 59 5 4 62 63 1

x?D ? h, ? 6、用MATLAB 语言实现下面的分段函数 y ? f ( x ) ? ? h / Dx, x ? D 。 ? ? h, x ? ?D ?
【求解】两种方法,其一,巧用比较表达式解决 >> y=h*(x>D) + h/D*x.*(abs(x)<=D) -h*(x<-D); 另外一种方法,用循环语句和条件转移语句 >> for i=1:length(x)

if x(i)>D, y(i)=h; elseif abs(x(i))<=D, y(i)= h/D*x(i); else, y(i)=-h; end end 其中,前者语句结构简单,但适用范围更广,允许使用矩阵型x,后者只能使用向量型的x, 但不能处理矩阵问题。

7、用数值方法可以求出 S ?

?2
i ?0

63

i

? 1 ? 2 ? 4 ? 8 ? ? ? 262 ? 263 ,试不采用循环的形式求出

和式的数值解。由于数值方法采用double 形式进行计算的,难以保证有效位数字,所以结 果不一定精确。试采用符号运算的方法求该和式的精确值。 【求解】用符号运算的方式可以采用下面语句 >> sum(sym(2).^[1:63]) ans = 18446744073709551614 由于结果有19 位数值,所以用double 型不能精确表示结果,该数据类型最多表示16 位有 效数字。其实用符号运算方式可以任意保留有效数字,例如可以求200 项的和或1000 项的 和可以由下面语句立即得出。 >> sum(sym(2).^[1:200]) ans = 3213876088517980551083924184682325205044405987565585670602750 >> sum(sym(2).^[1:1000]) ans = 214301721437253464189685009812000362112280962341106721488750077674070 210224987224498639675763139171625518934583510629365037429057138462808 719691551493971496078691355496484619708421492101247422837559083643060 929499671638825347975351183310878921541258291423929553730843353208596 63305248773674411336138750 8、 编写一个矩阵相加函数mat_add() , 使其具体的调用格式为A=mat_add(A1 ,A2 ,A3 ,…) , 要求该函数能接受任意多个矩阵进行加法运算。(注:varargin 变量的应用) 【求解】可以编写下面的函数,用varargin 变量来表示可变输入变量 function A=mat_add(varargin) A=0; for i=1:length(varargin), A=A+varargin{i}; end 如果想得到合适的错误显示,则可以试用try, catch 结构。 function A=mat_add(varargin) try A=0; for i=1:length(varargin), A=A+varargin{i}; end catch, error(lasterr); end 9 已知Fibonacci 数列由式 ak ? ak ?1 ? ak ?2 , k ? 3, 4,? 可以生成, 其中初值为 a1 ? a2 ? 1 ,

试编写出生成某项Fibonacci 数值的MATLAB 函数,要求 ①函数格式为y=fib(k) ,给出k 即能求出第k 项 ak 并赋给 y 向量; ②编写适当语句,对输入输出变量进行检验,确保函数能正确调用; ③利用递归调用的方式编写此函数。 (注:递归的调用方式速度较慢,比循环语句慢很多,所以不是特别需要,解这样问题没有 必要用递归调用的方式。) 【求解】假设fib(n) 可以求出Fibonacci 数列的第n 项,所以对n >= 3 则可以用 k=fib(n-1)+fib(n -2) 可以求出数列的n + 1 项,这可以使用递归调用的功能,而递归调 用的出口为1。综上,可以编写出M-函数。 function y=fib(n) if round(n)==n & n>=1 if n>=3 y=fib(n-1)+fib(n-2); else, y=1; end else error('n must be positive integer.') end 例如,n = 10 可以求出相应的项为 >> fib(10) ans = 55 现在需要比较一下递归实现的速度和循环实现的速度 >> tic, fib(20), toc ans = 832040 elapsed_time = 62.0490 >> tic, a=[1 1]; for i=3:30, a(i)=a(i-1)+a(i-2); end, a(30), toc ans = 832040 elapsed_time = 0.0100 应该指出,递归的调用方式速度较慢,比循环语句慢很多,所以不是特别需要,解这样问题 没有必要用递归调用的方式。 10、下面给出了一个迭代模型

? xk ?1 ? 1 ? yk ? 1.4 xk2 ? ? yk ?1 ? 0.3 xk
写出求解该模型的M-函数(M-脚本文件),如果取迭代初值为 x0 ? 0, y0 ? 0 ,那么请进行 30000 次迭代求出一组x 和y 向量,然后在所有的 xk 和 yk 坐标处点亮一个点( 注意不要

连线) ,最后绘制出所需的图形。 (提示这样绘制出的图形又称为Henon 引力线图,它将迭 代出来的随机点吸引到一起,最后得出貌似连贯的引力线图。) 【求解】用循环形式解决此问题,可以得出所示的Henon 引力线图。 >> x=0; y=0; for i=1:29999 x(i+1)=1+y(i)-1.4*x(i)^2; y(i+1)=0.3*x(i); end plot(x,y,'.') 上述的算法由于动态定义x 和y,所以每循环一步需要重新定维,这样做是很消耗时间的, 所以为加快速度,可以考虑预先定义这两个变量,如给出x=zeros(1,30000)。 11、选择合适的步距绘制出下面的图形 sin( ) ,其中 t ? (?1,1) 。(注:合适的步距包括等距 与不等距) 【求解】用普通的绘图形式,选择等间距,得出所示的曲线,其中x = 0 左右显得粗糙。 >> t=-1:0.03:1; y=sin(1./t); plot(t,y) 选择不等间距方法,可以得出曲线。 >> t=[-1:0.03: -0.25, -0.248:0.001:0.248, 0.25:.03:1]; y=sin(1./t); plot(t,y) 12、对合适的 ? 范围选取分别绘制出下列极坐标图形(注:要求把图形窗口分为4块,每块 绘一个图) ① ? ? 1.0013? ,② ? ? cos(7? / 2) ,③ ? ? sin(? ) / ? ,④ ? ? 1 ? cos (7? )
2 3

1 t

【求解】绘制极坐标曲线的方法很简单,用polar( ) 即可以绘制出极坐标图。注意绘制图 形时的点运算: >> t=0:0.01:2*pi; subplot(221), polar(t,1.0013*t.^2),% (a) subplot(222), t1=0:0.01:4*pi; polar(t1,cos(7*t1/2)) % (b) subplot(223), polar(t,sin(t)./t) % (c) subplot(224), polar(t,1-(cos(7*t)).^3)

13、请分别绘制出 xy 和 sin( xy) 的三维图和等高线。 【求解】(a) 给出下面命令即可得出的图形。 >> [x,y]=meshgrid(-1:.1:1); surf(x,y,x.*y), figure; contour(x,y,x.*y,30) (b) 给出下面命令即可得出的图形。 >> [x,y]=meshgrid(-pi:.1:pi); surf(x,y,sin(x.*y)), figure; contour(x,y,sin(x.*y),30)


相关文章:
MATLAB作业1参考答案
MATLAB作业1参考答案_理学_高等教育_教育专区。MATLAB 作业 1 参考答案 1 、 启动MATLAB 环境, 并给出语句tic, A=rand(500); B=inv(A); norm(A*B-eye(...
MATLAB作业1 参考答案
MATLAB作业1 参考答案_院校资料_高等教育_教育专区。中科院 matlab作业 MATLAB 作业 1 参考答案 1 、在你的机器上安装MATLAB 语言环境,并键入demo 命令,由给出的...
MATLAB作业1参考答案_2016_
MATLAB作业1参考答案_2016__理学_高等教育_教育专区。MATLAB 作业 1 参考答案 1 、试用符号元素工具箱支持的方式表达多项式 f ( x) ? x5 ? 3x4 ? 4 x3 ?...
1-matlab基础作业参考答案
1-matlab基础作业参考答案_理学_高等教育_教育专区。1. Matlab 的所有计算都是通过双精度进行的, 在内存中数的精度都是 双精度的,但其显示格式却可以有不同形式...
数学实验作业1--答案
数学实验作业1--答案_调查/报告_表格/模板_实用文档。matlab基本应用 ...(可以参考课 件中实例) 答: >> t=-5:0.01:5; >> x=3*cos(t); >>...
MATLAB作业1
MATLAB作业1参考答案 5页 免费 matlab作业1~12 19页 4下载券 matlab 作业1 ...注: 上机作业文件夹以自己的班级姓名学号命名, 文件夹包括如下上机报告和 ...
Matlab作业1
MATLAB作业1参考答案 5页 免费 matlab作业1~12 19页 4下载券 matlab 作业1 ...Answer: p=[1,2,3,4,1,10]; y=roots(p) x=-2:0.01:2; plot(x,x...
matlab 作业1
MATLAB作业1 2页 免费 MATLAB作业1参考答案 5页 免费 matlab作业1~12 19页 4下载券 matlab 作业1 2页 1下载券 Matlab 作业1 10页 免费 matlab大作业1 11页...
MATLAB作业4参考答案
matlab期末大作业 (4) 2页 1财富值 4 matlab文件操作 14页 免费如要投诉违规内容,请到百度文库投诉中心;如要提出功能问题或意见建议,请点击此处进行反馈。 ...
MATLAB作业4-1
喜欢此文档的还喜欢 MATLAB作业4参考答案 6页 免费M​A​T​L​A​...(0.1,0.1)~(1.1,1.1)区域内的点进行插值,并用三维曲面 的方式绘制出...
更多相关标签:
六上长江作业参考答案 | 社区治理作业参考答案 | 第一作业 参考答案 | 第3章作业参考答案 | 上海作业数学参考答案 | 第二次作业参考答案 | matlab第四次作业答案 | matlab作业答案 |