X=A\\B 结果: X =
0 -26.3759 -5.4126 -38.3960 -8.2392
第三题:
A=[1,1,-1,1;0,20,40,0;60,0,40,0;0,0,40,40]; B=[0;10;50;-40]; X=A\\B X = 0.7857 0.3571 0.0714 -1.0714
实验五:函数编写与程序设计
一、实验目的
1.掌握函数的编写规则。 2.掌握函数的调用。
3.会用Matlab程序设计实现一些工程算法问题。
二、实验内容
1.编写一个[y,y1,y2]=mwave(f1,m1,f2,m2)函数,实现以下功能,并绘出y1、y2、y在t∈[0,2π]区间500个样点的图形。(其中调用参数2 ≤ f1、f2 ≤ 20 HZ;0.5 ≤ m1、m2 ≤ 2) 2.程序设计:相传古代印度国王要褒奖他的聪明能干的宰相达依尔(国际象棋发明者),问他要什么?达依尔回答:“陛下只要在国际象棋棋盘的第一个格子上放一粒麦子,第二个格子上放二粒麦子,以后每个格子的麦子数都按前一格的两倍计算。如果陛下按此法给我64格的麦子,就感激不尽,其他什么也不要了。”国王想:“这还不容易!”让人扛了一袋麦子,但很快用光了,再扛出一袋还不够,请你为国王算一下共要给达依尔多少小麦?(1袋小麦约1.4×108粒)。 3.程序设计:公元前五世纪我国古代数学家张丘建在《算经》一书中提出了“百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、母、雏各几何?
三、设计提示
1.函数名和函数文件名应相同;对调用参数的取值范围要检验是否符合要求,如不符合要求,应给出出错信息(用if和error函数实现)。
2.程序设计——“百鸡问题”答案不唯一。提示:设x:鸡翁数,则x的范围:0~19;y:鸡母数,则y的范围:0~33;z:鸡雏数,则z的范围:0~100。
四、实验报告要求
1.编写实现第二节实验内容(1)所使用的函数文件。 2.程序设计用M文件编写,并记录执行结果。“百鸡问题”答案不唯一,要给出所有答案。
3.书写实验报告时要结构合理,层次分明,在分析描述的时候,需要注意语言的流畅。
五、参考答案
第1题:
function [y,y1,y2]=mwave(f1,m1,f2,m2)
% 根据给定的频率和幅值计算标准正弦函数y1、y2及其叠加y的波形。 if (f1<2)|(f1>20) error('f1超出范围!'), return, end if (f2<2)|(f1>20) error('f2超出范围!'), return, end if (m1<0.5)|(m1>2) error('m1超出范围!'), return, end
if (m2<0.5)|(m2>2) error('m2超出范围!'), return, end % --------------------------------------------------- t=0:2*pi/(500-1):2*pi; y1=m1*sin(2*pi*f1*t); y2=m2*sin(2*pi*f2*t); y=y1+y2; figure
subplot(311); plot(t,y1); title('y1波形'); subplot(312); plot(t,y2); title('y2波形');
subplot(313); plot(t,y); title('y=y1+y2波形');
% =================================================== 第2题: a=1; s=0
for i=1:64 s=s+a; a=2*a; end
n=s/1.4/10^8
运行后得:n=1.3176e+011 第3题:
解 设 x:鸡翁数,则x的范围:0~19 y:鸡母数,则y的范围:0~33 z:鸡雏数,则z的范围:0~100 则: x+y+z=100
5x+3y+z/3=100 这是一个欠定方程。 for x=0:19
for y=0:33
for z=0:100
if (x+y+z==100)&(5*x+3*y+z/3==100) d=[x,y,z] end end end end
运行后得结果:
d = 0 25 75 d = 4 18 78 d = 8 11 81 d = 12 4 84
实验六:二维图形和三维图形的创建
一、实验目的
1.掌握二维图形的绘制。 2.掌握图形的标注
3.了解三维曲线和曲面图形的绘制。
二、实验内容
1.生成1×10维的随机数向量a,分别用红、黄、蓝、绿色绘出其连线图、脉冲图、阶梯图和条形图,并分别标出标题“连线图”、“脉冲图”、“阶梯图”、“条形图”。
x2.在同一个图形窗口中,绘制两条曲线y1?2x、y2??1/2?;并分别在靠近相应的曲线处标注其函数表达式。
3.编写一个mcircle(r)函数,调用该函数时,根据给定的半径r,以原点为圆心画一个如图所示的红色空心圆。(图例半径r=5) 4.(1)绘一个圆柱螺旋线(形似弹簧)图。圆柱截面直径为10,高度为5,每圈上升高度为1。如左图所示。
(2)利用(1)的结果,对程序做少许修改,得到如右图所示图形。
三、设计提示
1.Matlab允许在一个图形中画多条曲线:plot(x1,y1,x2,y2,……)指令绘制
y1?f1(x1),y2?f2(x2)等多条曲线。Matlab自动给这些曲线以不同颜色。标注可用text函数。
2.绘图时可以考虑极坐标和直角坐标的转换。 3.三维曲线绘图函数为plot3。
四、实验报告要求
1.编写实现第二节实验内容中所使用的函数命令,并对二-2记录相应的生成结果。 2.书写实验报告时要结构合理,层次分明,在分析描述的时候,需要注意语言的流畅。
五、参考答案 第一题
t=rand(1,10); figure(1) subplot(221); plot(t,'r'); title('连线图') subplot(222); stem(t,'y');