当前位置:文档之家› 实验2 M文件和流程控制语句[参考答案]

实验2 M文件和流程控制语句[参考答案]

实验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 时,纳税部分是x-1600,税率是5%,所以%5)1600
(⨯-=x y 当36002100≤<x 时,500元按5%纳税,应缴纳25元,再多的部分,即x-2100,税
率是
建立函数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)。

相关主题