求分段函数的值
请建立函数式文件,用if语句实现,分别输出x=-5.0,-3.0,1.0,2.0,2.5,3.0,5.0时的值。
程序代码及运行结果:
代码:
x=[-5.0,-3.0,1.0,2.0,2.5,3.0,5.0];
for i=1:length(x)
if x(i)<0&x(i)~=-3
y(i)=x(i)^2+x(i)-6;
elseif x(i)>=0&x(i)<5&x(i)~=2&x(i)~=3
y(i)=x(i)^2-5*x(i)+6;
else
y(i)=x(i)^2-x(i)-1;
end
end
y
结果:
y =14.0000 11.0000 2.0000 1.0000 -0.2500 5.0000 19.0000
3、硅谷公司员工的工资计算方法如下:
(1) 工作时数超过120小时者,超过部分加发15%。
(2) 工作时数低于60小时者,扣发700元。
(3) 其余按每小时84元计发。
试用switch语句编程按输入员工的工时数(分别为54,100,140小时),计算应发工资。
程序代码及运行结果:
代码:
time=[54,100,140];
for i=1:3
switch time(i)
case (time(i)>120)
gongzi(i)=120*84+(120-time(i))*84*0.15;
case (time(i)<60)
gongzi(i)=time(i)*84-700;
otherwise
gongzi(i)=time(i)*84;
end
end
gongzi
结果:
gongzi =4536 8400 11760
4、根据,求π的近似值。当n分别取100、1000、10000时,结果是多少?要求:分别用for循环结构来实现。
程序代码及运行结果:
代码:
function[pi] = sumfact(n)
format compact
s=1;
n=[100 1000 10000]
for j=1:3
sum=0;
for i=1:n(j)
s=1/(i^2);
sum=sum+s;
end
pi(j)=(6*sum)^(1/2);
end
end
结果:
ans =3.1321 3.1406 3.1415
5、根据,求:(1) y<3时的最大n值。(2) 与(1)的n值对应的y值。要求:用while循环结构来实现。
程序代码及运行结果:
代码:
y=0;
n=0;
while y<3
n=n+1;
y=y+(1/(2*n-1));
end
y=y-1/(2*n-1)
n=n-1
结果:
y=2.9944
n=56
%%if程序解决分段函数
x=[-5.0,-3.0,1.0,2.0,2.5,3.0,5.0];
for i=1:length(x)
if x(i)<0&x(i)~=-3
y(i)=x(i)^2+x(i)-6;
elseif x(i)>=0&x(i)<5&x(i)~=2&x(i)~=3
y(i)=x(i)^2-5*x(i)+6;
else
y(i)=x(i)^2-x(i)-1;
end
end
y
%%iswitch程序解决进货问题
time=[54,100,140];
for i=1:3
switch time(i)
case (time(i)>120)
gongzi(i)=120*84+(120-time(i))*84*0.15;
case (time(i)<60)
gongzi(i)=time(i)*84-700;
otherwise
gongzi(i)=time(i)*84;
end
end
gongzi
%%for程序解决递归算式问题(等比等差类别)
n=[100 1000 10000];
for j=1:length(n)
sum=0;
for i=1:n(j)
sum=sum+1/i^2;
end
end
pi(j)=(6*sum)^(1/2)
s=0;
n=1;
for i=1:98
s=s+1/n;
n=n+1;
end
s
%%for程序解决递归算式问题(阶乘类)
s=1;
sum=0;
for i=1:3
s=s*i;
sum=sum+s;
end
sum
%%while程序解决临界问题(求小于三的最大数列)
y=0;n=0;
while(y<3);
n=n+1;
y=y+1/(2*n-1);
end
y