
你好,你这样写肯定是的,我给你分析一下,当程序执行到第一个if时要判断if语句的条件,假设满足条件则执行了语句1,这是对的,是吧,例如你求的是y的值,假设语句1是y=x+1,则第一个if语句执行完后y=x+1;接着执行第二个if语句,此时肯定是不满足if的条件的是吧?(因为满足了第一个就不会再满足第二个),所以就要执行第二个if的第二个语句即else语句,假设语句3为y=y+2,则最终的结果就是y=y+2,也就是语句3所以在这样的情况下,你一定要排除你已经用过的情况不能再使用,所以只需改为: if() 语句1;else if() 语句2; else 语句3;即可。
function f(x as double) as double
if x>=20 then
f=x+3
elseif x>10 then
f=x3+1
else
f=x2+1
end if
end function
从小到大进行比较就可以,比如:
if a<=200 then y=a
else if a<=500 then y=200+(a-200)04
else if a<=1000 then y=200+(500-200)04+(a-500)03
else y=200+(500-200)04+(1000-500)03+(1000-a)02
补充:
“不行”是什么意思?
补充:
我还以为你说的C\PASCAL这些,一开始为什么不说EXCEL嘛,这里的EXCEL专家许多,你要一开始说EXCEL,一分钟就会有无数的正确答案。
假如a的值在A1单元格,计算y的单元格EXCEL公式应该如下:
=IF(A1<=200,A1,IF(A1<=500,200+(A1-200)04,IF(A1<=1000,200+(500-200)04+(A1-500)03,200+(500-200)04+(1000-500)03+(A1-1000)02)))
float cal(float x,float y){
if(x<0&&y>=0){
return y/((3pow(x,2)-x+9);
}else if(x>=0&&y>=0){
return yIn((3pow(x,2)-x+9);
}else if(x>=0&&y<0){
return (3pow(x,2)-x+9)2+ctg(xy);
}else if(x<0&&y<0){
return pow(sin(3pow(x,2)-x+9),2);
}
}
比如这个例子:
1、打开MATLAB软件,粘贴以下代码:
clc; clear all
x=0:001:10;
y=sqrt(x)(x>=0&x<4)+2(x>=4&x<6)+(5-x/2)(x>=6&x<8)+1(x>=8);
plot(x,y,'r','linewidth',2)
axis([0 10 0 21])
grid on
解释一下,代码的逻辑运算符是这个程序成败的关键,利用了判断逻辑数和向量之间的相乘,构造分段函数的表达式
2、点击运行,即可以得到分段函数的图像了:
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)