实验2 M文件和流程控制语句[参考答案]
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验2 M 文件和流程控制语句
参考答案
1、 编写一个函数文件fun.m ,用于求
∑==10
1n n n a ,然后在命令文件中给定a 的值,调用函数fun 。
建立函数M 文件fun.m
function s=fun(a)
s=0; for i=1:10
s=s+a^n;
end
MATLAB 命令:
>> a=3;
>> s=fun(a)
2、 编写一个函数文件,求小于任意自然数n 的斐波那契数列各项。Fibnacci 数列定义如下:
⎪⎩⎪⎨⎧>+===--2,1
12121n f f f f f n n n
建立函数M 文件fib.m
function f=fib(n)
if n==1
f=1;
end
if n==2
f(1)=1;
f(2)=2;
end
if(n>2)
f(1)=1;
f(2)=2;
for i=3:n
f(i)=f(i-1)+f(i-2);
end
end
3、 编制一个解数论问题的函数文件:取任意整数,若是偶数,则除以2,否则乘3加1,
重复此过程,直到整数变为1。
建立函数M文件collatz.m
function c=collatz(n)
% collatz
% Classic “3n+1” Ploblem from number theory
c=n;
while n>1
if rem(n,2)==0 %返回n/2的余数
n=n/2;
else
n=3*n+1;
end
c=[c n];
end
4、编写一个函数M文件([y1,y2]=fun(x1,x2)),使之可以处理1个或两个输入参数,一个
或两个输出参数,满足如下条件:
当只有一个输入参数x1时:如果只有一个输出参数y1,则y1=x1;
如果有两个输出参数y1,y2,则y1=y2=x1/2;
当有两个输入参数x1,x2时:如果只有一个输出参数y1,则y1=x1+x2;
如果有两个输出参数y1,y2,则y1=y2=(x1+x2)/2; 建立函数M文件fun.m
function [y1,y2]=fun(x1,x2)
if nargin=1&nargout=1
y1=x1;
elseif nargin=1&nargout=2
y1=x1/2;
y2=y1;
elseif nargin=2&nargout=1
y1=x1+x2;
elseif nargin=2&nargout=2
y1=(x1+x2)/2;
y2=y1;
end
5、A=rand(3,4)<0.7, 编程实现查找矩阵A的每行中第一个0元素所在的列。将结果存放着
一个列向量中。
建立脚本M文件
A=rand(3,4)<0.7
result=zeros(3,1)
for i=1:3
for j=1:4
if A(i,j)==0
result(i)=j
break;
end
end
end
result
6、(个人所得税纳税问题)根据中华人民共和国个人所得税法规定,公民的工资、薪金所
得应该依法缴纳个人所得税。个人所得税计算公式为:在每个人的月收入中超过1600元以上的部分应该纳税,这部分收入称为应纳税所得额。应纳税所得额实行分段累积税率,按如下税率表计算
1) y 和x 的函数关系,并编写函数M 文件实现此函数。
2) 调用函数,求月收入为6850和12300的应纳税额。
分析:当1600≤x 时不用缴税,y=0
当21001600≤ (⨯-=x y 当36002100≤ 率是 建立函数M文件tax.m function y=tax(x) %points 收入分段点,t收入分段点应缴纳的税额rates收入段税率points=[0,1600,2100,3600,6600,21600,41600,61600,81600,101600,inf]; t=[0,0,25,175,625,3625,8625,14625,21625,29625]; rates=[0,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.4,0.45]; n=length(points); p=1; %收入x在points中的位置 for i=1:n-1 if x>points(i)&x<=points(i+1) p=i; break; end end y=t(p)+(x-points(p))*rates(p); y=tax(6850)