The Amazing World of Calculus Programs ( for Math Fans only )

Paolo1956

LOREM IPSUM
Registrato
20/6/10
Messaggi
6.994
Punti reazioni
798
A volte i programmi di calcolo sono meravigliosi:

danno risultati che mai la mente umana potrebbe concepire:

Espressione:

CubicRootOf(7 + SquareRoot(50)) + CubicRootOf(7 - squareRoot(50))

Il risultato e' 2, come si puo' facilmente verificare quadrando (anzi, "cubicando") a manina.

Inserendola in alcuni programmi di calcolo si ottiene invece:

Scilab : 2.6213203 + 0.3587195i un numero complesso????:confused:
R 64 : NaN Not a Number??? :wall:
WolframAlpha : Come Scilab ma con n mila decimali...:'(
OpenOffice: #VALORE e che czzz
Excel : 2 FINALMENTE!!!!!

Morale: ma come accidente funzionano questi programmi? (Non ci si puo' piu' fidare di nessuno a questo mondo...)

L'esempio non e' mio ma l'ho scovato qui:
believe in the math, not wolframalpha - YouTube

e ho voluto controllare...
 
cancellazione numerica, magari questa sera ti posto altri esempi e scrivo meglio a proposito

(credo, ho letto in 50 secondi)
 
Hanno semplicemente problemi a fare le radici cubiche dei numeri negativi.

Incredibile...
 
ma e WolframAlpha che calcolo fa?


Ad esempio se si raccoglie 7 dentro alle 2 radici e lo si porta poi fuori dalle radici; dentro alle radici rimane 1+... e si può procedere con lo sviluppo di mclaurin ed è possibile si abbia cancellazione numerica; andrebbe verificato che effettivamente la si abbia.

Anzi, correggo, resta (1+x)^1/3 con x >1 e siamo fuori dall'intervallo di convergenza della serie... Bisogna mettere in evidenza la radice di 50 per poi procedere con lo sviluppo

Fra l'altro quel risultato complesso che dà wolframalpha non è nemmeno una delle 2 radici complesse del polinomio finale del video...

Secondo me è probabilmente un problema di cancellazione numerica però appunto sarebbe necessario sapere cosa fa w.alpha
 
Attendo curioso :)

sulla cancellazione numerica oppure sul problema che ha wolframalpha nello svolgere il calcolo? La cancellazione è cosa abbastanza chiara e semplice, però non so cosa combina w.alpha
 
cliccando su:

use the real valued root instead

w.alpha dà 2 come risultato; l'altro risultato apparso in precedenza sarà uno dei risultati in campo complesso

(7+sqrt(50))^(1/3)+(7-sqrt(50))^(1/3) - Wolfram|Alpha

basta provare a calcolare le radici in C e si può verificare
 
la soluzione di w.alpha 2,6213+i0,3587 è una delle soluzioni in C; ho fatto ora il conto a mano.

Furbetto il tipo del video...o un poco equivoco, credevo avesse appositamente scelto un calcolo che desse cancellazione...
 
fra l'altro proprio nei commenti al video su youtube fanno un cenno alla questione delle radici in C o in R
 
Ho capito cosa fa Wolfram, e anche Scilab:

La prima radice cubica è positiva e lui ci appiccica il valore reale: 2,414...

La seconda è negativa e vale -0.414..., ma lui non prende quella, ma quella complessa (a 120°): -0.414...*(-1/2 + i sqr(3)/2) e poi le somma...

Ma che senso ha?

Se scrivo:

(7+sqrt(50))^(1/3)-(-7+sqrt(50))^(1/3)

Cioè cambio il segno alla seconda radice, lui da correttamente 2.

Roba da matti:confused::confused:
 
la soluzione di w.alpha 2,6213+i0,3587 è una delle soluzioni in C; ho fatto ora il conto a mano.

Furbetto il tipo del video...o un poco equivoco, credevo avesse appositamente scelto un calcolo che desse cancellazione...

Ci ho studiato:

Se parti da (A + sqrt(A^2+1))^(1/3) + (A - sqrt(A^2+1))^(1/3)

arrivi a una equazione cubica del tipo x^3 + 3x - 2A = 0 e vedi che esistono infiniti valori interi di A per cui hai soluzioni intere (i primi sono 2, 7, 18 ...)

La cancellazione avviene sempre.
 
Ho capito cosa fa Wolfram, e anche Scilab:

La prima radice cubica è positiva e lui ci appiccica il valore reale: 2,414...

La seconda è negativa e vale -0.414..., ma lui non prende quella, ma quella complessa (a 120°): -0.414...*(-1/2 + i sqr(3)/2) e poi le somma...

Ma che senso ha?

Se scrivo:

(7+sqrt(50))^(1/3)-(-7+sqrt(50))^(1/3)

Cioè cambio il segno alla seconda radice, lui da correttamente 2.

Roba da matti:confused::confused:

dovrebbe prendere l'argomento (l'angolo) principale nel calcolo delle radici; ovvero l'angolo del numero sotto radice, diviso 3 che è l'indice della radice

7+50^0,5 è reale positivo, ha angolo nullo, prende la radice con angolo nullo

7-50^0,5 è reale negativo, l'angolo è 180 e allora prende come argomento principale 180/3 ovvero 60 gradi

e poi somma
 
Se scrivo:

(7+sqrt(50))^(1/3)-(-7+sqrt(50))^(1/3)

Cioè cambio il segno alla seconda radice, lui da correttamente 2.

Roba da matti:confused::confused:

certo, perchè cambia quello che è detto valore principale della radice, che ha angolo pari all'angolo del radicando, diviso l'indice della radice
 
Ci ho studiato:

Se parti da (A + sqrt(A^2+1))^(1/3) + (A - sqrt(A^2+1))^(1/3)

arrivi a una equazione cubica del tipo x^3 + 3x - 2A = 0 e vedi che esistono infiniti valori interi di A per cui hai soluzioni intere (i primi sono 2, 7, 18 ...)

La cancellazione avviene sempre.

sì, con cancellazione numerica pensavo alla perdita di cifre significative in differenze tra numeri simili rappresentati come numeri macchina, dato che appunto può esser all'origine di errori nei risultati
 
Si via, ho capito qual' è il problema: siccome il radicando è negativo lui passa direttamente ai complessi.

Comunque è curioso il comportamento di questi programmi:

Scilab (che è il Mathlab di noi poveri):

-8^(1/3) -> -2
(-4-4)^(1/3) ->1 + 1.73i

Cioè quando c'è un calcolo prima della radice shifta sui complessi.

OpenOffice poi si rifiuta di estrarre la radice

R ha un comportamento intermedio:

-8^(1/3) -> -2
(-4-4)^(1/3) -> NaN

Mah
 
è che qualche scelta la devono pur fare, in C; se immaginiamo un calcolo con 5 radici ottave e 6 radici decime, abbiamo poi (8^5)*(10^6) risultati, a considerarli tutti, circa 3*10^10 risultati

credo che w.alpha usi il valor principale in questo senso:

considera il numero negativo -8, di modulo 8 ed argomento 180 gradi

calcolane le radici cubiche e ottieni 3 numeri, di modulo 2 ed argomento 60, 180, 300 gradi

però di queste 3 radici si ha che solo una, elevata al cubo, dà direttamente un numero di modulo 8 ed argomento 180 gradi, quello con l'angolo rosso.

Quindi se vuoi che la composizione radice ennesima di (z^n) sia = z in maniera univoca, nel senso che ottieni direttamente lo stesso argomento, allora va scelto un angolo particolare, calcolando le radici, ovvero l'angolo del radicando, diviso l'indice della radice.

e avrai anche, (radice ennesima di z)^n=z
ma magari qualche matematico sa meglio come scelgono certi programmi di calcolo...
Tutta sta roba ha a che fare con le funzioni complesse, la loro invertibilità...
 
Vedi l'allegato 2756050

invece qui vi è una nota successione che converge a pigreco, ma inserita ad esempio su excel, causa cancellazione numerica, non converge a pigreco. E qui vi è quindi proprio un "errore"
 

Allegati

  • screencapture-profs-sci-univr-it-baldo-PLS-Caliari-22-03-2013-pdf-2021-03-19-01_20_26.jpg
    screencapture-profs-sci-univr-it-baldo-PLS-Caliari-22-03-2013-pdf-2021-03-19-01_20_26.jpg
    73,2 KB · Visite: 30
Indietro