求分段函数的值

请建立函数式文件,用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

技术
今日推荐
下载桌面版
GitHub
百度网盘(提取码:draw)
Gitee
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:766591547
关注微信