第二章作业.docx
- 文档编号:23349651
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:14
- 大小:1.27MB
第二章作业.docx
《第二章作业.docx》由会员分享,可在线阅读,更多相关《第二章作业.docx(14页珍藏版)》请在冰豆网上搜索。
第二章作业
第二章MATLAB语言程序设计基础
一、实验内容:
题目1.
启动MATLAB环境,并给出语句tic,A=rand(500);B=inv(A);norm(A*B-eye(500)),toc,试运行该语句,观察得出的结果,并利用help命令对你不熟悉的语句进行帮助信息查询,逐条给出上述程序段与结果的解释。
【分析】:
在MATLAB上输入题目的语句运行即可得到结果。
对信息查询可以利用help来完成。
例如可以输入helpinv,MATLAB会自动输出相关信息。
【解答】:
输入如下语句:
>>tic,A=rand(500);%计算开始计时,生成500*500的(0,1)之间的随机分布矩阵A
B=inv(A);%求A的逆阵
norm(A*B-eye(500)),toc%求A*B减去500*500单位阵的结果的范数
运行该程序,显示如下:
ans=
1.6200e-011
Elapsedtimeis0.522389seconds.
信息查询:
(1)Tic是一个秒表计时器,用于计算一个命令所需的时间,结尾处的toc用于输出所计算的时间
(2)A=rand(n)--------由随机项组成的N行N矩阵,选择时间间隔在(0.0,1.0)的均匀分布
(3)norm用于求解最大的奇异值
对结果的解释:
该程序求解
随机矩阵的逆,并求出得出的逆矩阵与原矩阵的乘积,得出和单位矩阵的差,得出范数。
题目2.
试用符号元素工具箱支持的方式表达多项式
,并令
,将f(x)替换成s的函数。
【分析】:
首先可以定义出f函数,然后再用subs()函数将x替换s的函数
【解答】:
编写表达式语句:
>>symssx
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
前面给出的是4×4矩阵,如果给出A(5,6)=5命令,矩阵A将得出什么结果?
【分析】:
矩阵A和B可以直接用书上教的方法直接输出。
执行A(5,6)=5命令,虽然行和列数均大于A矩阵的维数,但只要在其他位置上添加0即可。
【解答】:
(1)将矩阵A直接输入:
>>A=[1234;4321;2341;3241]
语句运行后,显示如下:
A=
1234
4321
2341
3241
(2)输入A(5,6)=5命令:
>>A(5,6)=5
语句运行后,显示如下:
A=
123400
432100
234100
324100
000005
(3)将复数矩阵B直接输入:
>>B=[1+4i2+3i3+2i4+1i;4+1i3+2i2+3i1+4i;2+3i3+2i4+1i1+4i;
3+2i2+3i4+1i1+4i]
语句运行后,显示如下:
B=
1.0000+4.0000i2.0000+3.0000i3.0000+2.0000i4.0000+1.0000i
4.0000+1.0000i3.0000+2.0000i2.0000+3.0000i1.0000+4.0000i
2.0000+3.0000i3.0000+2.0000i4.0000+1.0000i1.0000+4.0000i
3.0000+2.0000i2.0000+3.0000i4.0000+1.0000i1.0000+4.0000i
题目4:
假设已知矩阵A,试给出相应的MATLAB命令,将其全部偶数行提取出来,赋给B矩阵,用A=magic(8)命令生成A矩阵,用上述的命令检验一下结果是不是正确。
【分析】:
首先可以利用magic()生成A矩阵,再利用语句提取A矩阵的偶数行
【解答】:
编写如下语句:
>>A=magic(8),B=A(2:
2:
end,:
)%提取偶数行
语句运行后,显示如下:
A=
642361606757
955541213515016
1747462021434224
4026273736303133
3234352928383925
4123224445191848
4915145253111056
858595462631
B=
955541213515016
4026273736303133
4123224445191848
858595462631
题目6:
用数值方法可以求出
,试不采用循环的形式求出和式的数值解。
由于数值方法采用double形式进行计算的,难以保证有效位数字,所以结果不一定精确。
试采用符号运算的方法求该和式的精确值。
【分析】:
可以利用数值的方法进行运算。
利用sum()函数,只要把对应的i改为[1:
63]即可。
(编写时还应主要“点”运算问题)
【解答】:
(1)用符号运算的方法编写语句:
>>sum(sym
(2).^[1:
63])
语句运行后,显示如下:
ans=
184********709551614
(2)由于结果有19位数值,所以用double型不能精确表示结果所以可以1000项的和来增加精确度。
语句编写如下:
>>sum(sym
(2).^[1:
1000])
语句运行后,显示如下;
ans=
21430172143725346418968500981200036211228096234110672148875007767407021022498722449863967576313917162551893458351062936503742905713846280871969155149397149607869135549648461970842149210124742283755908364306092949967163882534797535118331087892154125829142392955373084335320859663305248773674411336138750
题目7:
编写一个矩阵相加函数mat_add(),使其具体的调用格式为A=mat_add(A1,A2,A3,…),要求该函数能接受任意多个矩阵进行加法运算。
(注:
varargin变量的应用)
【分析】:
可以利用varargin变量来表示可变输入变量,然后再利用mat_add()进行矩阵相加
【解答】:
输入如下语句:
>>functionA=mat_add(varargin)
A=0;
fori=1:
length(varargin),A=A+varargin{i};end
题目11:
下面给出了一个迭代模型
写出求解该模型的M-函数(M-脚本文件),如果取迭代初值为
,那么请进行30000次迭代求出一组x和y向量,然后在所有的
和
坐标处点亮一个点(注意不要连线),最后绘制出所需的图形。
(提示这样绘制出的图形又称为Henon引力线图,它将迭代出来的随机点吸引到一起,最后得出貌似连贯的引力线图。
)
【分析】:
该题可以用循环形式来得出的Henon引力线图。
首先应对自变量进行赋值,题目给出要做3000次迭代,所以X的范围应为1-3000。
因为用循环,所以i的范围应是1-2999。
函数直接输出即可。
图像的输出只需用Plot()即可。
【解答】:
输入如下语句:
>>x=0;y=0;
fori=1:
29999
x(i+1)=1+y(i)-1.4*x(i)^2;
y(i+1)=0.3*x(i);
end
plot(x,y,'.')
运行语句后,显示图片如下:
题目13:
选择合适的步距绘制出下面的图形
,其中
。
(注:
合适的步距包括等距与不等距)
【分析】:
首先应对t进行定义,t开始于-1,终止于1。
为精确画图,设置步长为0.01。
接着对函数进行输入,因为t是向量,所以要特别注意“点”的问题。
最后用plot()函数来显示图片。
【解答】:
输入如下语句:
>>t=-1:
0.01:
1;y=sin(1./t);plot(t,y)
运行语句后,显示图片如下:
题目14:
对合适的
范围选取分别绘制出下列极坐标图形(注:
要求把图形窗口分为4块,每块绘一个图)
①
,②
,③
,④
【分析】:
该图为极坐标的编写。
首先应选取合适的
范围,t应于0,终止于pi。
为精确画图,设置步长为0.01。
因为
是向量,所以对函数进行输入时要特别注意“点”的问题。
如sin(
)/
在MATLAB上应写为sin(t)./t。
而图片的输出即可用polar()来表示。
【解答】:
编写如下语句:
>>t=0:
0.01:
2*pi;
subplot(221),polar(t,1.0013*t.^2),
subplot(222),t1=0:
0.01:
4*pi;polar(t1,cos(7*t1/2))
subplot(223),polar(t,sin(t)./t)
subplot(224),polar(t,1-(cos(7*t)).^3)
Warning:
Dividebyzero.
语句运行后,显示图片如下:
题目15:
用图解的方式找到下面两个方程构成的联立方程的近似解。
【分析】:
用ezplot将两个函数在MATLAB上画出图像,找到交点即可。
(注:
将两个函数同时显示在一张图片上要用“holdon”)
【解答】:
输入如下语句:
:
>>ezplot('x^2+y^2-3*x*y^2');
holdon
ezplot('x^3-x^2=y^2-y')
运行该语句,显示图片如下:
由图像观察可知:
该两交点大约为(0:
4,0.8),(1:
5;-0:
8)左右。
题目16:
请分别绘制出
和
的三维图和等高线。
【分析】:
首先对两个函数进行(x,y)的定义,两者是不一样的。
前者x,y开始于-1,终止于1,步长为0.1.后者者x,y开始于-pi,终止于pi,步长为0.1.接着关于三维图和等高线图只要用surf()和contour()函数表示即可。
【解答】:
(1)绘制
的三维图和等高线
输入如下语句:
>>[x,y]=meshgrid(-1:
.1:
1);
surf(x,y,x.*y),figure;contour(x,y,x.*y,30)
语句运行后,图像显示如下:
1).
的三维图
2).
的等高线图
(2)绘制
的三维图和等高线
输入如下语句:
>>[x,y]=meshgrid(-pi:
.1:
pi);
surf(x,y,sin(x.*y)),figure;contour(x,y,sin(x.*y),30)
>>
语句运行后,图像显示如下:
1).
的三维图
2)
的等高线图
二、实验心得
第一次这么全面的接触MATLAB这个软件。
通过老师上课仔细的讲解和实际的操作,我对MATLAB有了更深的了解。
我觉得MATLAB是一个非常实用便捷的工具。
以前大一时觉得很复杂很烦的问题MATLAB都可以解决。
而且MATLAB相对于C++方便了很多。
在课上我学到了很多。
我学会了MATLAB的基本数据结构(有数值型数据,符号型等)。
我懂得了MATLAB的基本语句。
而且还了解了基本数学运算(比如矩阵的代数运算,矩阵的逻辑运算,几本数论运算等)。
关于一些结构我也有所了解,比如循环结构,转移结构,试探结构等。
同时我还学回来如何画图。
比如一维的函数,二维的图形我都可以画出来。
我觉得学习MATLAB非常有意思。
不但可以提升我们的知识面,还可以提高我们的思维。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第二 作业