Originariamente inviato da valia
usa i tag [code ] per il codice, aiuti noi a leggerlo e ad aiutarti
per quanto riguarda la derivata, rifletti matematicamente su cosa è una derivata e su come la fai. Nel caso del polinomio ti basta moltiplicare per l'esponente il coefficiente (e trascura le costanti).
per cui ipoteticamente hai una roba del genere
codice:
int grado = n;
Double [] coeffderi = new Double[coeff.lenght -1]
for (int i = 0; i < coeffderi.length; i++ ){
coeffderi[i] = coeff[i] * grado;
grado--;
}
grazie, ci sto lavorando. L'unico dubbio è: il metodo deve restituirmi un oggetto di tipo FunzionePolinomiale. Come posso fare?(il mio problema principale, quando scrivo programmi, è che non riesco ad usare bene i tipi delle classi)
codice:
public FunzionePolinomiale derivata() {
FunzionePolinomiale derivata = new FunzionePolinomiale(coeff);
String s="";
int grado = n;
Double[] coeffder = new Double[coeff.length -1];
for (int i=0;i<coeffder.length;i++ ) {
coeffder[i] = coeff[i] * grado;
grado--;
s+=coeffder[i]+"x^"+grado;
}
}
per quanto riguarda il metodo toString() ti consiglio di passare per uno StringBuffer (questioni di ottimizzazione su cui non riflettiamo):
ogni volta che su stringhe metti un "+" butti la stringa precedente e ne crei una nuova con i valori della stringa vecchia (prima di "+") e della stringa nuova (dopo "+").
la stringa resta in memoria fino alla chiamata del garbage collector (il discorso lo semplifico un po).
Nel caso banale di un solo elemento non ci sono problemi, ma la stessa tecnica è usata anche per oggetti che possono finire in strutture (dinamiche) che possono assumere dimensioni ragguardevoli porta ad un inutile spreco di risorse.
Con lo stringBuffer fai un append della nuova stringa, solo alla fine il toString con risparmio risorse.
Il fatto di avere computer potenti su cui sviluppiamo ci fa credere che il computer su cui si esegue è della stessa potenza (e porre requisiti minimi di grandezza solo per non imparare ad ottimizzare non fa acquistare valore aggiunto al software).