Effacer les filtres
Effacer les filtres

A numerical calculation problem leading to Inf or NaN in matlab

64 vues (au cours des 30 derniers jours)
Hancheng Zhu
Hancheng Zhu le 20 Juil 2024 à 15:02
Commenté : David Goodmanson le 21 Juil 2024 à 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 commentaire
David Goodmanson
David Goodmanson le 21 Juil 2024 à 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))

Connectez-vous pour commenter.

Réponses (2)

Torsten
Torsten le 20 Juil 2024 à 15:35
Déplacé(e) : Torsten le 20 Juil 2024 à 15:35
log2(norm(x,lambda))
does not work ?
  3 commentaires
Walter Roberson
Walter Roberson le 21 Juil 2024 à 4:34
Use the Symbolic Toolbox
Torsten
Torsten le 21 Juil 2024 à 14:59
Modifié(e) : Torsten le 21 Juil 2024 à 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.

Connectez-vous pour commenter.


Walter Roberson
Walter Roberson le 20 Juil 2024 à 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.

Produits


Version

R2023b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by