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
e vuoi convertirla con
dove
e
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:
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
e
Se hai + finiresti con r = 4 e p = 10. Se hai - finiresti con r = 10 e p = 4. Allora hai:
Mettici adesso un pò di testa, e ricorda di:
Buon lavoro.
Per prima cosa, devi essere del tutto familiare con le equazioni razionali.
Hai una equazione del tipo
Codice:
x^2 + bx + c = 0
Codice:
(x + p)(x + r) = 0
Codice:
b = p + r
Codice:
c = pr
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
-
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
Codice:
c = 40
Codice:
x^2 + 14x + 40 = 0
- 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
}
}
- Fare qualche "protezione" contro i discriminant (La discriminant è la definizione della espressione che appare sotto la radice quadrata): un semplice "Carry Handling" potrebbe bastare.
- Attuare il concetto della stabilità numerica ( https://en.wikipedia.org/wiki/Loss_of_significance#Instability_of_the_quadratic_equation )
Buon lavoro.