A numerical calculation problem leading to Inf or NaN in matlab
64 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Hancheng Zhu
el 20 de Jul. de 2024 a las 15:02
Comentada: David Goodmanson
el 21 de Jul. de 2024 a las 20:46
I want to calculate the exact value of , where and λ is a very large positive number. Obviously, we have the bound ,and therefore .
However, in reality, for example, if , due to the large λ, we have and the matlab will treat it as 0 and .
On the other hand, if , due to the large λ, we have a very large 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?
1 comentario
David Goodmanson
el 21 de Jul. de 2024 a las 20:46
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))
Respuestas (2)
Torsten
el 20 de Jul. de 2024 a las 15:35
Movida: Torsten
el 20 de Jul. de 2024 a las 15:35
log2(norm(x,lambda))
does not work ?
3 comentarios
Torsten
el 21 de Jul. de 2024 a las 14:59
Editada: Torsten
el 21 de Jul. de 2024 a las 15:01
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
el 20 de Jul. de 2024 a las 21:18
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 comentarios
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!