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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)

相关文档
最新文档