Domanda Risolvere un equazione di secondo grado in Java?

Stato
Discussione chiusa ad ulteriori risposte.

CrashDump

Utente Gold
13 Agosto 2013
667
96
57
313
Potete spiegarmi (sarebbe prefetto tramite codice) come risolvere un equazione di secondo grado in Java? (implementando anche il throw, try e catch)
 
Infatti non mi sembra di aver detto E' POSSIBILE ma COME, sto cercando qualcuno che faccia il codice e me lo commenti.
ho detto che è possibile perchè mi parevi in dubbio.
trovami le differenze:
"mamma mi dai la pappa?" "certo tesoro!"
__________________________________
"mamma mi dai la pappa?" "prenditela tu! devi crescere!"
trascurando questo stupido paragone, secondo te chi andrà avanti?
studia invece di chiedere di svolgere lavori tuoi ad altri su if.
@Kolo93 è meglio chiudere secondo me
 
Gli darei un algoritmo un po' generico giusto per fargli capire che passi deve svolgere senza dover per forza arrivare a scrivere codice.
Se non è interessato minimamente a ragionarci sopra allora vedremo di chiudere.
 
Va bene, cercherò di spiegarmi al mio meglio
Per prima cosa, devi essere del tutto familiare con le equazioni razionali.
Hai una equazione del tipo
Codice:
x^2 + bx + c = 0
e vuoi convertirla con
Codice:
(x + p)(x + r) = 0
dove
Codice:
b = p + r
e
Codice:
c = pr
e b e c sono conosciuti.

Hai due equazioni (i primi due) e due sconosciute. Logicamente, non hai bisogno nè di eredità nè di loop (il primo è usata più che altro per organizzare sistemi complessi). Puoi risolvere questo con l'algebra. Devi riscrivere le equazioni in modo che ogni sconosciuto sia messo in termini di incognite.
_______________________________________________

Risolviamo r, secondo la formula risolutiva:
  • b = p + r

  • b − r = p

  • c = pr

  • c = (b − r)∗ r

  • c = br − r^2

  • −r^2 + br − c = 0

  • dxd6ow.gif
Adesso risolviamo p:
p = c / r
Queste sono le equazioni che puoi mettere nel tuo codice per risolvere direttamente r e p.
Vediamo un altro esempio, ovvero dove
Codice:
b = 14
e
Codice:
c = 40
Codice:
x^2 + 14x + 40 = 0

  • 15ppv9l.gif
  • 121d995.gif
  • p = 40 / r

Se hai + finiresti con r = 4 e p = 10. Se hai - finiresti con r = 10 e p = 4. Allora hai:
Codice:
public class Cfzq {
  public static class cfz {
    public double p;
    public double r;
  }

   // per x^2 + bx + c = 0
  public static cfz cerca(final double b, final double c) {
    final cfz m = new cfz();
    m.r = (-b + Math.sqrt(b*b - 4*c)) / -2;
    m.p = c / m.r;
    return m; //restituisci
  }
}
Mettici adesso un pò di testa, e ricorda di:
  • Fare qualche "protezione" contro i discriminant (La discriminant è la definizione della espressione che appare sotto la radice quadrata): un semplice "Carry Handling" potrebbe bastare.

Buon lavoro.
 
  • Mi piace
Reazioni: venticello
Stato
Discussione chiusa ad ulteriori risposte.