作业帮 > 综合 > 作业

matlab问题clearfor a=0.1:0.1:50for b=0.1:0.1:20for m=0.1:0.1:5

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/07/05 12:53:48
matlab问题
clear
for a=0.1:0.1:50
for b=0.1:0.1:20
for m=0.1:0.1:5
for k=1:1:15
n=(a*m)/(2*b)-m^2;
z=4*k-a*m;
x=(4*k-a*m)/(4*k-2*b*(m^2+n));
y=(4*k-a*m)/(4*k-2*b*m^2);
f=b^2*x^2*(m^2+n)-2*a*b*m*x-b^2*y^2*(m^2+4*n)+2*a*b*m*y;
if =0 && f>0 && n>3
disp([a,b,m,k,n])
end
end
end
end
end
上面程序,我明明在if条件里写了z不等于0,为什么运行的结果,计算出z是等于0的?
你好,我测试过了,您写的 if z~=0 && f>0 && n>3没有问题,当z=0的时候是进不去disp([a,b,m,k,n])的,所以z起到判断逻辑调价你的作用,不会对你的结果造成任何影响.如果你
方便的话,请你说明一下 你说的运行结果是什么结果!
再问: 4.0000 0.1000 3.0000 3.0000 51.0000
8.0000 0.1000 3.5000 7.0000 127.7500


上面截取了一段结果,计算一下z=4*k-a*m,都是为0.。。不知道咋回事。
再答: z值计算出来后是个浮点数,这个问题会影响你的。所以判断时希望你慎重。这个应该就是你的问题所在了。
希望你留意一下,matlab里面显示出来的数据,和 参数运算的数据类型不一致,你要试试。比如 0.0000001你显示的时候可能就是0 。不知道你明白我的意思了吗
再问: 谢谢,我大概明白了。我把z~=0改成了z-0>0,不知道这样表示可不可以。因为改完之后运行,没有显示结果,不知道是没有解还是这样表示不对。
再答: 你不能单纯的说大于0吧,如果z是负数的话,你写的那个是不是就又有问题了。你可以取绝对值然后和一个非常小的值比较 比如1e-06 c语言里面学过的,参考一下。建议你还是先测试你的if逻辑结构是否正确吧,调试一下,好运!
再问: 非常谢谢你!!