MATLAB作业1参考答案
更新时间:2024-03-08 17:23:01 阅读量: 综合文库 文档下载
MATLAB作业1参考答案
1 、启动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. seconds.
2、试用符号元素工具箱支持的方式表达多项式f(x)?x5?3x4?4x3?2x2?3x?6,并令
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
3、用MATLAB 语句输入矩阵A 和B
?1?4A???2??3233232444?1??,1??1??1?4j?4?1jB???2?3j??3?2j2?3j3?2j3?2j2?3j3?2j4?1j2?3j4?1j4?1j?1?4j?? 1?4j??1?4j?前面给出的是4 ×4 矩阵,如果给出A(5,6) = 5 命令,矩阵A将得出什么结果? 【求解】用课程介绍的方法可以直接输入这两个矩阵
>> 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 4.0000 + 1.0000i 3.0000 + 2.0000i 2.0000 + 3.0000i 1.0000 + 4.0000i 2.0000 + 3.0000i 3.0000 + 2.0000i 4.0000 + 1.0000i 1.0000 + 4.0000i
3.0000 + 2.0000i 2.0000 + 3.0000i 4.0000 + 1.0000i 1.0000 + 4.0000i
4、假设已知矩阵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,?5、用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,但不能处理矩阵问题。
6、用数值方法可以求出S??2i?063i?1?2?4?8??262?263,试不采用循环的形式求出
和式的数值解。由于数值方法采用double 形式进行计算的,难以保证有效位数字,所以结果不一定精确。试采用符号运算的方法求该和式的精确值。 【求解】用符号运算的方式可以采用下面语句 >> sum(2.^[1:63]) ans =
1.0955e+019 >> sum(sym(2).^[1:63]) ans =
由于结果有19 位数值,所以用double 型不能精确表示结果,该数据类型最多表示16 位有效数字。其实用符号运算方式可以任意保留有效数字,例如可以求200 项的和或1000 项的和可以由下面语句立即得出。
>> sum(sym(2).^[1:200]) ans =
>> sum(sym(2).^[1:1000]) ans = 070 808 060 596 8750
7、编写一个矩阵相加函数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
8、已知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 =
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 =
elapsed_time = 0.0100
应该指出,递归的调用方式速度较慢,比循环语句慢很多,所以不是特别需要,解这样问题没有必要用递归调用的方式。
9、下面给出了一个迭代模型
2?xk?1?1?yk?1.4xk ??yk?1?0.3xk写出求解该模型的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)。
10、选择合适的步距绘制出下面的图形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)
11、对合适的?范围选取分别绘制出下列极坐标图形(注:要求把图形窗口分为4块,每块绘一个图)
①??1.0013?2,②??cos(7?/2),③??sin(?)/?,④??1?cos3(7?)
【求解】绘制极坐标曲线的方法很简单,用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)
12、请分别绘制出xy 和sin(xy) 的三维图和等高线。 【求解】(a) 给出下面命令即可得出的图形。 >> [x,y]=meshgrid(-1:.1:1); surf(x,y,x.*y), figure; contour(x,y,x.*y,30)
1t(b) 给出下面命令即可得出的图形。 >> [x,y]=meshgrid(-pi:.1:pi);
surf(x,y,sin(x.*y)), figure; contour(x,y,sin(x.*y),30)
正在阅读:
MATLAB作业1参考答案03-08
万科投资价值分析10-03
小学四年级算24点比赛试题06-28
2016-2022年中国易切削钢行业分析及市场深度调查报告03-29
小学生关于文明作文06-15
真正的Win XP系统启动加速10-24
西门子840C系统的数据备份与还原08-12
四季如歌作文350字06-12
- 天大砼方案 - 图文
- 农业科技网络书屋能力提升_玉米错题选
- DNS习题
- 浅议检察官对罪犯谈话的技巧与效果
- 高考语文文言文翻译专题训练
- AB类学科竞赛目录(2015)
- 建筑面积计算新规定(2015最新)
- Revit2012初级工程师题集一
- 十三五项目米线可行性报告
- 2013体育学院党组织建设工作总结
- 2014Revit工程师题库
- 高中数学如何实施研究性学习
- 茶艺表演 中英互译
- 小学音乐湘文艺版 四年级下册 第十一课《(歌表演)脚印》优质课公
- 山西省农村合作经济承包合同管理条例
- 2015年镇江市中考化学一模试题参考答案及评分标准(定稿)
- 统计 题集
- 批评意见清单
- 8潞安集团蒲县黑龙关煤矿矿业公司2
- 鄂教版四年级语文上册复习精要(光谷四小)
- 作业
- 答案
- 参考
- MATLAB
- 九九乘法口诀表和乘法口诀练习题
- 苏教版语文八下《清楚连贯地表达思想观点,不离话题》word导学案
- 命理派别的区别
- 0507年GRE真题及答案解析整理
- 军事理论课考试试卷及答案(9)
- 初中生物实验教学的调查报告
- 微电影剧本《独行》-共19页
- 初中语文如何培养写作兴趣
- 2018年母亲节活动策划书模板
- 江北中学学生语言文字能力培训方案
- 产品部岗位职责说明
- 五粮液集团有限公司资产负债表分析
- 关于紫林市场调查报告 - Microsoft - Word - 文档1
- 在线商城购物流程
- 世界平面设计大师作品简析 - 图文
- Deja+Vu+X详细操作手册
- 小学六年级语文质量研讨会发言稿
- 四川大学老乡群 校友群
- 网络营销选取关键词、长尾关键词
- 人教版普通高中美术全一册(必修)艺术欣赏全部教案