第1关:循环结构
任务描述
本关任务:列出1000
以内的除13
余2
的所有整数。
相关知识
为了完成本关任务,你需要掌握:1.循环结构,2.逻辑判断,3.取余操作
x=[]; %定义一个空矩阵,用于存放获得的整数
% ********** Begin ********** %
for i=1:1000
if rem(i,13)==2
x=[x,i];
end
end
% ********** End ********** %
disp(num2str(x(20:30)))
第2关:符号替换
任务描述
本关任务:符号函数变量替换。
相关知识
为了完成本关任务,你需要掌握:1.符号函数输入方法,2.符号变量替换。
符号函数输入方法
定义符号变量x
,使用
yms x;//声明一个int型数组并动态初始化其大小为10
y=sin(x);
符号变量替换
使用subs(f,x,y)
表示f(x)
中x
用y
替换。
%已知变量x和数学函数f,g,用fg和gf分别表示f(f(x))和g(f(x))
pkg load symbolic
% ********** Begin ********** %
syms x;
syms f;
syms g;
syms fg;
syms gf;
f = x*sin(x)/((x+5)*sqrt(x*x-2));
g=tan(x);
fg=subs(f,x,g);
gf=subs(g,x,f);
% ********** End ********** %
disp(fg)
disp(gf)
第3关:Fibonacci数列计算
任务描述
本关任务:Fibonacci
数列计算。
Fibonacci数列
Fibonacci数列定义为
解释
a1=a2=1,an=an−1+an−2,n=3,4,...
为一个数值增长很快的数列,其第120
项为5358359254990966640871840
,这样的数值精度显然超出了数值型数据的范围,而必须采用符号类型。
pkg load symbolic
a=sym([1,1]);%a(1)=a(2)=1
%Fibonacci的最高项a(120)
% ********** Begin ********** %
for i=3:120
a(i)=a(i-1)+a(i-2);
end
% ********** End ********** %
disp(a(100:120))
第4关:序列稳态值
任务描述
本关任务:序列稳态值。
相关知识
为了完成本关任务,你需要掌握:符号数转化为数值才能比较。 符号数x1
和x2
,与常数e的比较 syms x1,x2;
double(abs(x1-x2))>e
pkg load symbolic
x1=sym(1);
x2=x1/2+3/(2*x1);
e=10^(-14);
%求取达到e精度的稳态值steady_value和n
% ********** Begin ********** %
n=2;
while double(abs(x1-x2))>e
x1=sym(x2);
x2=x1/2+3/(2*x1);
n=n+1;
end
steady_value=x2;
% ********** End ********** %
disp(num2str(n))
disp(steady_value)
第5关:分段函数
任务描述
本关任务:编写一个分段函数。
相关知识
为了完成本关任务,你需要掌握:逻辑表达式。
逻辑表达式
对于逻辑表达式当x<10,y=sin(x)
,可以用下列语句实现。
y=sin(x).*(x<10)
D=str2num(input('','s'));
h=str2num(input('','s'));
x=str2num(input('','s'));
% ********** Begin ********** %
y=h.*(x>D)+h./(D.*x).*((x<=D)&(x>=-D))-h.*(x<-D);
% ********** End ********** %
disp(num2str(y))