Matlab作业四题就今天明天和周三哦,周四要交作业了.

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/05 14:52:22
Matlab作业四题就今天明天和周三哦,周四要交作业了.

Matlab作业四题就今天明天和周三哦,周四要交作业了.
Matlab作业四题
就今天明天和周三哦,周四要交作业了.

Matlab作业四题就今天明天和周三哦,周四要交作业了.
我来弄一个比较完整的吧(包括参数判断)
%%%(1)题:本代码优点,简短,不用if
function y=tax(x)
xbase=2000; %起税点
xover =[0,500,2000,5000,20000,40000,60000,80000,100000];%注意是区间的上限值,第一个为零
taxrate=[0.05,0.1 ,0.15,0.20,0.25,0.30,0.35,0.40,0.45];%各个阶段的税率
xstart=xover+xbase;%加上起税点:即本区间的最大薪金
y=sum((x>xstart).*(min([x-xstart;[diff(xover),x-max(xover)]])).*taxrate); %税
%%%%(2)题
function z=MatrixMul(x,y)
if nargin~=2
error('USAGE:z=MatrixMul(x,y)');
end
if isnumeric(x)
error('x is not numeric');
end
if isnumeric(y)
error('y is not numeric');
end
[mx,nx]=size(x);
[my,ny]=size(y);
if (nx==my)
for i=1:mx
for j=1:ny
z(i,j)=0;
for k=1:nx
z(i,j)=z(i,j)+x(i,k)*y(k,j);
end
end
end
elseif (mx==nx && nx==1) %x是一个数
for i=1:my
for j=1:ny
z(i,j)=x(1,1)*y(i,j);
end
end
elseif (my==ny && ny==1) %y是一个数
for i=1:mx
for j=1:nx
z(i,j)=x(i,j)*y(1,1);
end
end
else
error('x and y not match');
end
%%%%(3)题:支持多项式输入
function z=myconv(x,y)
if nargin~=2
error('USAGE:z=mycov(x,y)');
end
FlagIsSym=0;
if isa(x,'sym')
SymChar=symvar(x);
x=sym2poly(x);
FlagIsSym=1;
end
if isa(y,'sym')
SymChar=symvar(y);
y=sym2poly(y);
FlagIsSym=1;
end
if isvector(x)
error('x is not vector');
end
if isvector(y)
error('y is not vector');
end
nx=length(x);
ny=length(y);
z=zeros(1,nx+ny-1);
for i=1:nx
for j=1:ny
z(i+j-1)=z(i+j-1)+x(i)*y(j);
end
end
diff=z-conv(x,y) %debug
if FlagIsSym
z=poly2sym(z,SymChar);
end
%%%(4)题:绝对可以出那个分岔图
aa=[1:0.02:2.5,2.505:0.005:3.5,3.501:0.001:4]; %节约计算,变变长
n=200;
plotn=5;
savex=[];
for a=aa
x=0.5;
for i=2:n
x(i)=a*x(i-1)*(1-x(i-1));
end
savex=[savex;x((n-plotn+1):n)];
end
plot(aa,savex,'.');