L'aplicació (de línia d'ordres), accepta els coeficients del polinomi, i una precisió per als cálculs, i calcula els zeros reals del polinomi.
L'aplicació neix amb el desig de donar solució "a la meva manera", al problema del càlcul de les arrels reals d'un polinomi donat
L'aplicació (de línia d'ordres), accepta els coeficients del polinomi, i una precisió per als cálculs, i calcula els zeros reals del polinomi.
Aplicació Java de línia d'ordres.
La idea de l'algorismo es aquesta:
Però sembla un peix que es mossega la cua! Necessitem calcular els zeros de la funció derivada per a delimitar els zeros del nostre polinomi!
Doncs fácil: Apliquem recursivitat, fins a arribar a un polinomi al que es pugui calcular fácilment els zeros (pot derivarse reiteradament, fins a trobar una funció afí)
Desavantatges:
Però per a graus raonables que ens podem trobar a la vida real, no hauría d'haver problema
L'algorisme s'ha programat sense presuposar cap tipus de dades de coma flotant (està expressat amb els generics de Java)
L'aplicació permet fer ús de Double o BigDecimal, però podria implementar-se fàcilment una versió per a Float
És una prova de concepte ... En realitat hagués estat suficient amb programar-lo per a BigDecimal, però els algorismes amb generics molen més, i poden ser il.lustratius per als que comencen
L'aplicació no ha estat provada exhaustivament, i és possible que es pugui tunejar una mica més per a que sigui més precisa o que funcioni en més casos, però crec que el codi té moltes possibilitats.
Crec que pot tunejarse convenientment per a que funcioni en tots els casos.
Arrels de polinomis (2023)
Descarregar
Les calculadores d'arrels de polinomis són un clàssic de les carreres d'informàtica.
Contribueixo amb la meva versió de la solució al problema.
No és una solució molt eficient, ja que en el pitjor cas la complexitat computacional és O(G^2), essent G el grau del polinomi
Però crec que fa el treball amb efectivitat
L'algoritme es basa en el càlcul de les arrels d'un polinomi, suposant conegudes les arrels de la seva funció derivada
Sota aquesta suposició, és molt senzill calcular les arrels, ja que podem conèixer al límit del rang a on es troben les arrels (Veure: Propietats de les arrels polinòmiques)
I d'aquesta manera, en combinació amb les arrels de la funció derivada, podem delimitar els rangs de cadascuna de les possibles arrels i, simplement aplicant el teorema de Bolzano, podem calcular els zeros
Però ... no necessitem la funció que estem programent per a calcular les arrels de la funció derivada?
No hi ha problema: farem ús de la recursivitat, i la funció recursiva (la que calcula les arrels d'un polinomi), té un cas de terminació per al cas d'un polinomi de grau zero (una constant), que suposarem que no té arrels.
I com la funció derivada té un grau menys que el polinomi original, llavors, aplicant la recursivitat, arrivarem al càlcul de les arrels d'un polinomi de grau zero, amb solució trivial, i problema solucionat
Aquesta manera de procedir pot crear la necessitat de tenir alta precisió als càlculs, però això no és problema si fem ús de la classe BigDecimal de Java