A numerical calculation problem leading to Inf or NaN in matlab
    11 次查看(过去 30 天)
  
       显示 更早的评论
    
I want to calculate the exact value of  , where
, where  and λ is a very large positive number. Obviously, we have the bound
 and λ is a very large positive number. Obviously, we have the bound  ,and therefore
,and therefore  .
. 
 , where
, where  and λ is a very large positive number. Obviously, we have the bound
 and λ is a very large positive number. Obviously, we have the bound  ,and therefore
,and therefore  .
. However, in reality, for example, if  , due to the large λ, we have
, due to the large λ, we have  and the matlab will treat it as 0 and
 and the matlab will treat it as 0 and  .
.
 , due to the large λ, we have
, due to the large λ, we have  and the matlab will treat it as 0 and
 and the matlab will treat it as 0 and  .
.On the other hand, if  , due to the large λ, we have a very large
, due to the large λ, we have a very large  and matlab will treat the sum as Inf and
 and matlab will treat the sum as Inf and  . So how to avoid the above two cases and get the exact value of F in matlab?
. So how to avoid the above two cases and get the exact value of F in matlab?
 , due to the large λ, we have a very large
, due to the large λ, we have a very large  and matlab will treat the sum as Inf and
 and matlab will treat the sum as Inf and  . So how to avoid the above two cases and get the exact value of F in matlab?
. So how to avoid the above two cases and get the exact value of F in matlab?1 个评论
  David Goodmanson
      
      
 2024-7-21
				Hi HZ,
(1/lam) log( (x1^lam)*(1 + (x2/x1)^lam + (xn/x1)^lam) )
= log(x1) + (1/lam)*log(1 + (x2/x1)^lam + (xn/x1)^lam))
回答(2 个)
  Torsten
      
      
 2024-7-20
        
      移动:Torsten
      
      
 2024-7-20
  
      log2(norm(x,lambda))
does not work ?
3 个评论
  Torsten
      
      
 2024-7-21
				
      编辑:Torsten
      
      
 2024-7-21
  
			Maybe rewriting the expression as
1              / (1 + (x2/x1)^lambda + ... + (xn/x1)^lambda)*u1 +
(x2/x1)^lambda / (1 + (x2/x1)^lambda + ... + (xn/x1)^lambda)*u2 +
(x3/x1)^lambda / (1 + (x2/x1)^lambda + ... + (xn/x1)^lambda)*u3 +
...
(xn/x1)^lambda / (1 + (x2/x1)^lambda + ... + (xn/x1)^lambda)*un 
can help.
If not, please give an example for x, u and lambda where the computation fails.
  Walter Roberson
      
      
 2024-7-20
        If you need the exact value, calculate using the Symbolic Toolbox. 
However, it is questionable what meaning to assign to the exact value of log2 of an expression. It is highly likely that log2 will be an transcendental number -- something that you cannot calculate the exact decimal representation for.
0 个评论
另请参阅
类别
				在 Help Center 和 File Exchange 中查找有关 Entering Commands 的更多信息
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!









