一、实验目的
掌握 MATLAB普通脚本和实时脚本的编写;
掌握MATLAB的程序流;
掌握MATLAB的函数;
熟悉基于矩阵的程序设计与优化。
二、实验原理
MATLAB脚本:普通脚本与实时脚本;
MATLAB程序流:input、disp、if 语句、for语句、while语句、swich case结构和try catch结构;
MATLAB函数:函数文件,匿名函数,文件中的函数;
MATLAB程序设计与优化:向量化设计代替循环语句、预定义变量等。
三、实验内容
1.编写求解方程
的根的函数(这个方程不一定为一元二次方程,因a,b,c的不同取值而定),这里应根据的不同取值分别处理,有输入参数提示,当
时应提示“为恒不等式!”,并输入几组典型值加以检验。
a=input('a=');
b=input('b=');
c=input('c=');
if a==0&&b==0&&c~=0
disp('为恒不等式!')
elseif a==0&&b~=0
disp('该方程不为一元二次方程!')
x=[(-c)/b];
disp(['x=',num2str(x(1))])
else
d=b*b-4*a*c;
x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)];
disp(['x1=',num2str(x(1)),',x2=',num2str(x(2))])
end
2.用匿名函数法定义分段函数
,要求支持矩阵化运算,并演示分别为标量、向量和矩阵时的输入输出结果。
x=input('请输入x的值:');
f=@(x) (x.^2).*(x>=0)+x.*(x<0);
f(x)
3.输入一个百分制成绩,要求输出成绩等级A+、A、B、C、D、E。其中100分为A+,90分~99分为A,80分~89分为B,70分~79分为C,60分~69分为D,60分以下为E。要求:
(1)用switch语句实现;
(2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。
grade=input('请输入一个百分制成绩:');
switch floor(grade/10)
case {10}
if grade==100
disp('成绩等级为A+')
else
disp('输入的成绩不合理!')
end
case {9}
disp('成绩等级为A')
case {8}
disp('成绩等级为B')
case {7}
disp('成绩等级为C')
case {6}
disp('成绩等级为D')
case {5,4,3,2,1,0}
disp('成绩等级为E')
otherwise
disp('输入的成绩不合理!')
end
4.根据
,当分别取100、1000和10000时,根据该等式,求的近似值,分别用循环语句和向量化的程序设计实现。
%用循环语句求pi的近似值
n=input('请从100,1000,10000中选择输入n的值:');
y=0;
for i=1:n
y=y+1/(i*i);
end
pi=sqrt(6*y)
%%用向量化程序求pi的近似值
n=input('请从100,1000,10000中选择输入n的值:');
y=sum(1./(1:n).^2);
pi=sqrt(6*y)
5.Fibonacci数组的元素满足:
,求该数组中第一个大于10000的元素。
a1=1;
a2=1;
while a2<=10000
t = a1;
a1 = a2;
a2 = t + a2;
end
a2
6.编程实现迭代法求
,算法原理如下:
要求:
(1)计算a =3,17,113时
的值,并与准确值进行对比;
(2)迭代的终止条件是:
。
a=113;
x(1)=a;
x(2)=(x(1)+(a)/(x(1)))/2;
i=1;
while abs(x(i+1)-x(i))>=1e-5
x(i+2)=(x(i+1)+(a)/(x(i+1)))/2;
i=i+1;
end
y=x(i+1)
disp(['迭代法计算的值与准确值对比相差:',num2str(abs(sqrt(a)-y))])