这个Matlab代码有什么问题?简单的循环

时间:2014-09-11 03:18:51

标签: matlab

在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

1 个答案:

答案 0 :(得分:4)

这里有两个问题。

首先,您没有得到正确的答案,因为mu永远不会等于sae10mu,因此mu~=sae10mu将始终为真。数值精度的限制意味着您不能像这样进行浮点比较。相反,您需要定义一些容差tol,并进行abs(mu-sae10mu)>tol之类的比较。然后,一旦mutol的{​​{1}}范围内,则条件为真。

其次,sae10mu将为真,直到x>=0小于0.您将获得的第一个值是x小于0的最大值,即-0.01 。要停留在x,请执行x=0

您的x>0循环应如下所示:while