2014-09-11 93 views
0

MatLab全新的,我需要它来回答我的课程这个作业问题。我试图看到这个方程(亩)将等于某个值(sae30mu),同时减少x,以便我可以找到x的正确值。但是,当它打印x时,我得到一个负数。我无法说出为什么这段代码不起作用,因为它对我来说似乎应该只是吐出答案。这个Matlab代码有什么问题?简单while循环

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 

回答

4

这里有两个问题。

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

其次,直到x小于0的第一个值,你会得到是x小于0的最大价值,这是-0.01 x>=0将是真实的。要在x=0处停止,请执行x>0

while循环应该是这样的:while(abs(mu-sae10mu)>tol & x>0)

+0

技术上讲,它也应该使用''&&,而不是只是'&'以及 – Dan 2014-09-11 08:26:24