在MatLab完全是新的,我需要它来回答我班上的这个家庭作业问题。我试图看看这个等式(mu)何时等于某个值(sae30mu),同时减少x,这样我才能找到x的正确值。但是,当它打印x时,我得到一个负数。我不知道为什么这段代码不会起作用,因为它(对我来说)应该只是吐出答案。
x = 1.0;
mu = ((sae10mu)^x)*((sae50mu)^(1-x));
while (mu ~= sae30mu & x >= 0)
x = x - 0.01;
mu = ((sae10mu)^x)*((sae50mu)^(1-x));
end
x
答案 0 :(得分:4)
这里有两个问题。
首先,您没有得到正确的答案,因为mu
永远不会等于sae10mu
,因此mu~=sae10mu
将始终为真。数值精度的限制意味着您不能像这样进行浮点比较。相反,您需要定义一些容差tol
,并进行abs(mu-sae10mu)>tol
之类的比较。然后,一旦mu
在tol
的{{1}}范围内,则条件为真。
其次,sae10mu
将为真,直到x>=0
小于0.您将获得的第一个值是x
小于0的最大值,即-0.01 。要停留在x
,请执行x=0
。
您的x>0
循环应如下所示:while
。