Hallo Leute,
ich habe vor ein Programm zu schreiben das eine Kurvendiskussion durchführt.
ich habe es wahrscheinlich etwas umständlich programmiert aber für mich so verständlicher.
Ich habe folgendes Problem:
wenn in der funktion alle Werte positiv sind dann wird in der Konsole nur die Funktion ausgegeben.
und wenn ich beispielsweise -x^3+x^2-x-1 eingebe dann gibt er mir ne komische polynomzahl wieder.
hier ist mein Quellcode
übrigens benutze ich das Programm BlueJ)
ich habe vor ein Programm zu schreiben das eine Kurvendiskussion durchführt.
ich habe es wahrscheinlich etwas umständlich programmiert aber für mich so verständlicher.
Ich habe folgendes Problem:
wenn in der funktion alle Werte positiv sind dann wird in der Konsole nur die Funktion ausgegeben.
und wenn ich beispielsweise -x^3+x^2-x-1 eingebe dann gibt er mir ne komische polynomzahl wieder.
hier ist mein Quellcode
Java:
public class Funktion3GradesVol3
{
private double xHochDrei;
private double xHochZwei;
private double xHochEins;
private double xHochNull;
private double ergebnis, ergebnis1, ergebnis2, ergebnis3, ergebnis4, ergebnis5, ergebnis6, ergebnis7, ergebnis8, ergebnis9, ergebnis10, ergebnis11, ergebnis12,
ergebnis13;
private int verlauf1, verlauf2;
private boolean sattelpunkt1, sattelpunkt2;
public Funktion3GradesVol3(double xHochDrei, double xHochZwei, double xHochEins, double xHochNull)
{
this.xHochDrei=xHochDrei;
this.xHochZwei=xHochZwei;
this.xHochEins=xHochEins;
this.xHochNull=xHochNull;
ergebnis=0;
}
public double polynomZahl1()//ermittelt die Zahl dir zur Polynomdivision notwendig ist
{
double ergebnisX1=0;
double ergebnisX2=0;
double ergebnisX3=0;
double ergebnisX4=0;
double ergebnisX5=0;
double ergebnisX6=0;
if(xHochDrei>0 && xHochZwei>0 && xHochEins>0 && xHochNull>0)
{
for(double a=0; a>=-1000;a-=0.001)
{
ergebnisX4=xHochDrei*a*a*a;
ergebnisX5=xHochZwei*a*a;
ergebnisX6=xHochEins*a;
ergebnis=ergebnisX4+ergebnisX5+ergebnisX6+xHochNull;
ergebnis = Math.ceil(ergebnis*10)/10.0;
if(ergebnis==0.0)
{
a = Math.round(a*100)/100.0;
ergebnis=a;
return a;
}
}
}
else
{
if(xHochDrei<0 && xHochZwei<0 && xHochEins<0 && xHochNull<0)
{
for(double a=0; a>=-1000;a-=0.001)
{
ergebnisX4=xHochDrei*a*a*a;
ergebnisX5=xHochZwei*a*a;
ergebnisX6=xHochEins*a;
ergebnis=ergebnisX4+ergebnisX5+ergebnisX6+xHochNull;
ergebnis = Math.ceil(ergebnis*10)/10.0;
if(ergebnis==0.0)
{
a = Math.round(a*100)/100.0;
ergebnis=a;
return a;
}
}
}
else
{
if(xHochDrei!=0)
{
for(double a=0; a<=1000;a+=0.001)
{
ergebnisX1=xHochDrei*a*a*a;
ergebnisX2=xHochZwei*a*a;
ergebnisX3=xHochEins*a;
ergebnis=ergebnisX1+ergebnisX2+ergebnisX3+xHochNull;
ergebnis = Math.floor(ergebnis*10)/10.0;
if(ergebnis==0.0)
{
a = Math.round(a*100)/100.0;
ergebnis=a;
return a;
}
}
}
else
{
for(double a=0; a>=-1000;a-=0.001)
{
ergebnisX4=xHochDrei*a*a*a;
ergebnisX5=xHochZwei*a*a;
ergebnisX6=xHochEins*a;
ergebnis=ergebnisX4+ergebnisX5+ergebnisX6+xHochNull;
ergebnis = Math.ceil(ergebnis*10)/10.0;
if(ergebnis==0.0)
{
a = Math.round(a*100)/100.0;
ergebnis=a;
return a;
}
}
}
}
}
return ergebnis;
}
private void nullstellen()
{
//Polynomdivision
double xHochZwei2 = xHochZwei;
double xHochEins2 = xHochEins;
double xHochNull2 = xHochNull;
xHochZwei2 = xHochDrei;
xHochEins2 = xHochZwei-(-(xHochZwei2*polynomZahl1()));
xHochNull2 = xHochEins-(-(xHochEins2*polynomZahl1()));
//pq-Formel
double p1, p2, q, wurzel;
xHochEins2 = xHochEins2/xHochZwei2;
xHochNull2 = xHochNull2/xHochZwei2;
p1=-xHochEins2/2;
p2=p1*p1;
q=xHochNull2;
wurzel=Math.sqrt(p2-q);
ergebnis1=p1+wurzel;
ergebnis1= Math.round(ergebnis1*100)/100.0;
ergebnis2=p1-wurzel;
ergebnis2=Math.round(ergebnis2*100)/100.0;
}
private void hochpunktTiefpunkt()
{
//Ableitung
double xHochZwei2 = xHochZwei;
double xHochEins2 = xHochEins;
double xHochNull2 = xHochNull;
xHochZwei2=xHochDrei*3;
xHochEins2=xHochZwei*2;
xHochNull2=xHochEins;
//pq-Formel
double p1, p2, q, wurzel;
xHochEins2 = xHochEins2/xHochZwei2;
xHochNull2 = xHochNull2/xHochZwei2;
p1=-xHochEins2/2;
p2=p1*p1;
q=xHochNull2;
wurzel=Math.sqrt(p2-q);
ergebnis3=p1+wurzel;
ergebnis3=Math.round(ergebnis3*100)/100.0;
ergebnis4=p1-wurzel;
ergebnis4=Math.round(ergebnis4*100)/100.0;
//Überprüfung Hoch oder Tiefpunkt
xHochEins2=xHochZwei2*2;
xHochNull2=xHochEins2;
ergebnis5=xHochEins2*ergebnis3+xHochNull2;
ergebnis6=xHochEins2*ergebnis4+xHochNull2;
if(ergebnis5==0)
{
//1. Ableitung
double xHochZwei3 = xHochZwei;
double xHochEins3 = xHochEins;
double xHochNull3 = xHochNull;
xHochZwei3=xHochDrei*3;
xHochEins3=xHochZwei*2;
xHochNull3=xHochEins;
//2.Ableitung
double merker=xHochEins3;
xHochEins3=xHochZwei3*2;
xHochNull3=merker;
//3.Ableitung
xHochNull3=xHochEins3;
if(xHochNull3!=0)
sattelpunkt1=true;
}
if(ergebnis6==0)
{
//1. Ableitung
double xHochZwei3 = xHochZwei;
double xHochEins3 = xHochEins;
double xHochNull3 = xHochNull;
xHochZwei3=xHochDrei*3;
xHochEins3=xHochZwei*2;
xHochNull3=xHochEins;
//2.Ableitung
double merker=xHochEins3;
xHochEins3=xHochZwei3*2;
xHochNull3=merker;
//3.Ableitung
xHochNull3=xHochEins3;
if(xHochNull3!=0)
sattelpunkt2=true;
}
//yWert ausrechnen
ergebnis7=xHochDrei*ergebnis3*ergebnis3*ergebnis3+xHochZwei*ergebnis3*ergebnis3+xHochEins*ergebnis3+xHochNull;
ergebnis8=xHochDrei*ergebnis4*ergebnis4*ergebnis4+xHochZwei*ergebnis4*ergebnis4+xHochEins*ergebnis4+xHochNull;
}
private void wendepunkt()
{
//Ableitung 1
double xHochZwei2 = xHochZwei;
double xHochEins2 = xHochEins;
double xHochNull2 = xHochNull;
xHochZwei2=xHochDrei*3;
xHochEins2=xHochZwei*2;
xHochNull2=xHochEins;
//Ableitung 2
xHochEins2=xHochZwei2*2;
xHochNull2=xHochEins2;
//Wendestelle
xHochNull2=-xHochNull2;
ergebnis9=xHochNull2/xHochEins2;
ergebnis9=Math.round(ergebnis9*100)/100.0;
//Wendepunkt
ergebnis10=xHochDrei*ergebnis9*ergebnis9*ergebnis9+xHochZwei*ergebnis9*ergebnis9+xHochEins*ergebnis9+xHochNull;
ergebnis10=Math.round(ergebnis10*100)/100.0;
}
private void graphenverlauf()
{
ergebnis11=xHochDrei*-1*-1*-1+xHochZwei*-1*-1+xHochEins*-1+xHochNull;
ergebnis12=xHochDrei+xHochZwei+xHochEins+xHochNull;
if(ergebnis11<0)
{
verlauf1=-1;
}
else
{
verlauf1=1;
}
if(ergebnis12<0)
{
verlauf2=2;
}
else
{
verlauf2=1;
}
}
public void kurvendiskussionDurchfuehren()
{
nullstellen();
hochpunktTiefpunkt();
wendepunkt();
graphenverlauf();
}
public void ausgeben()
{
//Ausgangsfunktion
if(xHochZwei>=0 && xHochEins>=0 && xHochNull>=0)
{
System.out.println("Funktion: "+xHochDrei+"x³ +"+xHochZwei+"x² +"+xHochEins+"x +"+xHochNull);
}
else
{
if(xHochZwei<=0 && xHochEins>=0 && xHochNull>=0)
{
System.out.println("Funktion: "+xHochDrei+"x³ "+xHochZwei+"x² +"+xHochEins+"x +"+xHochNull);
}
else
{
if(xHochZwei>=0 && xHochEins<=0 && xHochNull>=0)
{
System.out.println("Funktion: "+xHochDrei+"x³ +"+xHochZwei+"x² "+xHochEins+"x +"+xHochNull);
}
else
{
if(xHochZwei>=0 && xHochEins>=0 && xHochNull<=0)
{
System.out.println("Funktion: "+xHochDrei+"x³ +"+xHochZwei+"x² +"+xHochEins+"x "+xHochNull);
}
else
{
if(xHochZwei<=0 && xHochEins<=0 && xHochNull>=0)
{
System.out.println("Funktion: "+xHochDrei+"x³ "+xHochZwei+"x² "+xHochEins+"x +"+xHochNull);
}
else
{
if(xHochZwei<=0 && xHochEins<=0 && xHochNull<=0)
{
System.out.println("Funktion: "+xHochDrei+"x³ "+xHochZwei+"x² "+xHochEins+"x "+xHochNull);
}
else
{
if(xHochZwei<=0 && xHochEins>=0 && xHochNull<=0)
{
System.out.println("Funktion: "+xHochDrei+"x³ "+xHochZwei+"x² +"+xHochEins+"x "+xHochNull);
}
else
{
if(xHochZwei>=0 && xHochEins<=0 && xHochNull<=0)
{
System.out.println("Funktion: "+xHochDrei+"x³ +"+xHochZwei+"x² "+xHochEins+"x "+xHochNull);
}
}
}
}
}
}
}
//Ausgangsfunktion
//Nullstellen
System.out.println("Nullstellen: "+polynomZahl1()+", "+ergebnis1+", "+ergebnis2);
//Nullstellen
//Hochpunkt und Tiefpunkt
if(ergebnis5<0 && sattelpunkt1==false)
{
System.out.println("Hochpunkt: ("+ergebnis3+"/"+ergebnis7+")");
}
else
{
if(ergebnis5>0 && sattelpunkt1==false)
{
System.out.println("Tiefpunkt: ("+ergebnis3+"/"+ergebnis7+")");
}
else
{
if(sattelpunkt1==true)
{
System.out.println("Dieser Punkt ist ein Sattelpunkt");
}
else
{
System.out.println("Es gibt kein Hochpunkt/Tiefpunkt");
}
}
}
if(ergebnis6<0 && sattelpunkt2==false)
{
System.out.println("Hochpunkt: ("+ergebnis4+"/"+ergebnis8+")");
}
else
{
if(ergebnis6>0 && sattelpunkt2==false)
{
System.out.println("Tiefpunkt: ("+ergebnis4+"/"+ergebnis8+")");
}
else
{
if(sattelpunkt2==true)
{
System.out.println("Dieser Punkt ist ein Sattelpunkt");
}
}
}
//Hochpunkt und Tiefpunkt Oder Sattelpunkt
//Wendepunkt
System.out.println("Wendepunkt: ("+ergebnis9+"/"+ergebnis10+")");
//Wendepunkt
//Graphenverlauf
if(verlauf1<0 && verlauf2<0)
{
System.out.println("Der Graph kommt aus dem 3. Quadranten und geht in den 4. Quadranten");
}
else
{
if(verlauf1<0 && verlauf2>0)
{
System.out.println("Der Graph kommt aus dem 3. Quadranten und geht in den 1. Quadranten");
}
else
{
if(verlauf1>0 && verlauf2<0)
{
System.out.println("Der Graph kommt aus dem 2. Quadranten und geht in den 4. Quadranten");
}
else
{
if(verlauf1>0 && verlauf2>0)
{
System.out.println("Der Graph kommt aus dem 2. Quadranten und geht in den 1. Quadranten");
}
}
}
}
//Graphenverlauf
//Symmetrie
if(xHochDrei==0 && xHochEins==0)
{
System.out.println("Der Graph ist achsensymetrisch");
}
else
{
if(xHochZwei==0 && xHochNull==0)
{
System.out.println("Der Graph ist punktsymetrisch");
}
else
{
System.out.println("Es ist keine Symmetrie erkennbar");
}
}
//Symmetrie
//Schnittpunkt y-Achse
System.out.println("Der Schnittpunkt mit der Y-Achse liegt bei "+xHochNull);
//Schnittpunkt y-Achse
}
}
}