Polynom

javalappen

Mitglied
Hallo Leute,

Ich hab ein dickes Problem. Ich weiß nicht wie ich Polynome in Java darstellen kann. Muss dazu sagen das ich ein totaler Anfänger bin. Ich poste mal die Aufgabenstellung die ich zur vorbereitung unserer Info- Klausur bekommen habe.

Gesucht wird eine Java-Klasse zur Beschreibung von kubischen Polynomen:
f(x) = a 3 x
3
+ a 2 x
2
+ a 1 x
1
+ a 0 x
0
Die Werte a 0 bis a 3 nennt man die Koeffizienten des Polynoms. Die Ableitung eines
kubischen Polynoms lautet:
f ′ (x) = 3 a 3 x
2
+ 2 a 2 x
1
+ 1 a 1 x
0
Um zwei Polynome zu addieren, werden einfach die gleichrangingen Koeffizienten der
beiden Teilpolynome addiert.

Polynom

-a: double[]

+Polynom(a: double[])
+f(x: double) : double
+ableitung(): Polynom
+summe(p: Polynom) : Polynom


Abbildung 1.3: Klassendiagramm der Klasse Polynom
Aufgabe 2.1
Setzen Sie das UML-Klassendiagramm in eine Java-Klasse um. Implementieren Sie
dabei alle Methoden. Bei der Implementierung der Methode zur Berechnung der Summe
zweier Polynome soll davon ausgegangen werden, dass es die Polynome gleichen Grades
addiert werden.

Das Attribut und und den Konstruktor krieg ich ja noch hin aber die letzten drei Methoden sind zu schwer für mich. Kann mir da jemand helfen bitte ?

Java:
public class Polynom{

private double[] a;

public Polynom(double[] a) {
this.a = a ;

Das ist halt alles was ich leider bisher hingekriegt habe.
Mir fehlt jeglicher Ansatz...
Bitte helft mir.
 

javalappen

Mitglied
bisher noch nichts weil mir jeglicher Ansatz für die Methoden fehlt.
Konkret leider nicht.
Ich bräuchte erstmal Ansätze weil ich iwie voll aufm Schlauch stehe oder einfach zu doof dafür bin :(
 

Final_Striker

Top Contributor
Nimm dir ein Blatt Papier, schreib ein Polynom drauf und versuche es zu multiplizieren, abzuleiten und mit einen anderen Polynom zu addieren. Und dann versuchst du es mit Java umzusetzen. Ist eigentlich nicht wirklich schwer.
 

javalappen

Mitglied
Also zum beispiel :
Java:
public double f (double x) {
return a3* x^3 + a2 * x^2 + a1 * x^1 + a0 * x^0 ;}

Könnte ich es für diese Methode einfach so hinschreiben ?
Der Rest würde sich dann ja von alleine erübrigen wenn das so richtig wäre.
Weil das ableiten und addieren ist ja nicht so schwer. Nur bei den letzten Methoden steht nach : Polynom . Heisst das das die letzten beiden Methoden auch Konstruktoren sind ?
 
P

pappawinni

Gast
Also das Polynom schaut so aus:
f(x) = a3 * x³ + a2 * x² + a1 * x + a0
Die Ableitung so:
f ′ (x) = 3 * a3 * x² + 2 * a2 * x + a1

Wir stellen vielleicht mal fest, dass für die Beschreibung des Polynoms die Konstanten a0, a1, a2 und a3 erforderlich sind.
Warum fängst du dann deine Klasse an mit :
Java:
public class Polynom{ private double[] a;
Was willst du mit der einen Variablen machen ?
Vielleicht definierst du mal einfach alle vier notwendigen Variablen und machst dann auch einen Konstruktor, mit dem allen 4 Konstanten ein Wert zugewiesen werden kann, oder zumindest entsprechende Getter und Setter.
Das wär doch schon mal ein Anfang.

[EDIT]
Uups, sorry, hast ja n Array.
[/EDIT]
 
Zuletzt bearbeitet von einem Moderator:

javalappen

Mitglied
Okay also wie folgt :

Java:
public class Polynom {
private double[] a = new double [3] ;

Wäre das der richtige Anfang ?
Wie würde ich dann die Methode umschreiben ?
Ihr seht ich bin ein totaler Noob in Java und bin für jede Hilfe dankbar^^
 
P

pappawinni

Gast
Warum sparst du denn an Code-Zeilen ?

Java:
public class Polynom{
 
  private double[] a;
 
  public Polynom(double[] a) {
    this.a = a ;
  }
  public double f(double x) {
    return ( a[3]*x*x*x + a[2]*x*x + a[1]*x + a[0] ) ;
  }  
}
 

javalappen

Mitglied
könnte ich das einfach so jetzt hinschreiben wie du es gemacht hast ?

Und was wäre mit den beiden anderen Methoden ? Also sind das weitere Konstruktoren oder wie soll ich die einordnen ?
 
P

pappawinni

Gast
nö, du hast die Klasse Polynom und der verpasst du die geforderten Methoden.
Um das ganz dann nutzen zu können, brauchst du dann noch ne Klasse mit ner main - Methode.
Aber jetzt mach doch erst mal deine Methoden für die Klasse Polynom noch fertig.
 

javalappen

Mitglied
Java:
public class Polynom{
 
  private double[] a;
 
  public Polynom(double[] a) {
    this.a = a ;
  }
  public double f(double x) {
    return ( a[3]*x*x*x + a[2]*x*x + a[1]*x + a[0] ) ;
}
  public Polynom ableitung() {
return (3*a[3]*x*x+2*a[2]*x+1*a[1] ); 
}

public Polynom summe(Polynom p ) {
return (a[3]*x*x*x + 3*a[3]*x*x + a[2]*x*x + a[2]*x + a[1]*x + a[1] + a[0]) ; 
}
}

Sieht das so besser aus ? Also wäre das so richtig ?
 
P

pappawinni

Gast
mmh..nee

Java:
public class UebungPolynom {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Polynom p1 = new Polynom(new double[] {1,2,3,4});
		Polynom p2 = new Polynom(new double[] {2,3,4,5});
        Polynom p3 = p1.ableitung();
	}

}
 class Polynom{
	  double[] a;
		 
	  public Polynom(double[] a) {
	    this.a = a ;
	  }
	  public double f(double x) {
	    return ( a[3]*x*x*x + a[2]*x*x + a[1]*x + a[0] ) ;
	  }  	 
	  public Polynom ableitung() {
		double[] arr = {a[1],2*a[2],3*a[3],0};
		Polynom p = new Polynom(arr);
		return ( p ) ;
	  }
 }
 
Zuletzt bearbeitet von einem Moderator:
P

pappawinni

Gast
Java:
public class UebungPolynom {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Polynom p1 = new Polynom(new double[] {1,2,3,4});
		Polynom p2 = new Polynom(new double[] {2,3,4,5});
        Polynom p3 = p1.ableitung();
        Polynom p4 = p1.summe(p2);
        System.out.println("Polynom 1 : " + p1);
        System.out.println("Polynom 2 : " + p2);
        System.out.println("Polynom 3 : " + p3);
        System.out.println("Polynom 4 : " + p4);
	}

}
 class Polynom{
	  double[] a;
		 
	  public Polynom(double[] a) {
	    this.a = a ;
	  }
	  public double f(double x) {
	    return ( a[3]*x*x*x + a[2]*x*x + a[1]*x + a[0] ) ;
	  }  	 
	  public Polynom ableitung() {
		double[] arr = {a[1],2*a[2],3*a[3],0};
		Polynom p = new Polynom(arr);
		return ( p ) ;
	  }
	  public Polynom summe(Polynom p) {
		double[] arr = {a[0]+p.a[0],a[1]+p.a[1],a[2]+p.a[2],a[3]+p.a[3]};
		Polynom pol = new Polynom(arr);
		return ( pol ) ;
	  }
	  public String toString(){
		String str = "f(x) = " + a[3] +" * x^3 + "  + a[2] +" * x^2 + "  + a[1] +" * x + "  + a[0];
			return (str);
	  }

 }
 
Zuletzt bearbeitet von einem Moderator:

Ähnliche Java Themen

Neue Themen


Oben