Ableitungsfunktionen

Status
Nicht offen für weitere Antworten.
I

icipher

Gast
Hi, ich will ein Programm schreiben, das einem nachdem man den Grad der Funktion f und die Koeffizienten eingegeben hat, die Ableitungsfunktion f' ausspuckt. Jetzt hab ich aber ein Problem damit, x als ein Buchstaben anzeigen zu lassen. Die Fehlermeldungen sind folgende:
Code:
Ableitung.java:25:11: operator * cannot be applied to double,java.lang.String
                    Ableitung.java:18:8: incompatible types
                    found   : double
                    required: java.lang.String
Das Programm sieht so aus:
Java:
import java.io.*;
public class Ableitung
{
  public static void main(String argv[]) throws IOException
  {
   double a,b,c;
   String x,y;
   int k;
   BufferedReader input=new BufferedReader(new InputStreamReader(System.in));
   System.out.println("Welchen Grad hat die Funktion?");
   k=Integer.parseInt(input.readLine());
   switch(k)
   {
    case 1:
    {
     System.out.println("Geben Sie die Koeffizienten a und b an");
     a=Double.parseDouble(input.readLine());
     y=a;
     System.out.println("f'(x)="+y);break;
    }
    case 2:
    {
     System.out.println("Geben Sie die Koeffizienten a und b an");
     a=Double.parseDouble(input.readLine());
     y=a*2*x;
     System.out.println("f'(x)="+y);break;
    }
    case 3:
    {
     System.out.println("Geben Sie die Koeffizienten a und b an");
     a=Double.parseDouble(input.readLine());
     b=Double.parseDouble(input.readLine());
     y=a*3*x*x+b*2*x;
     System.out.println("f'(x)="+y);break;
    }
    case 4:
    {
     System.out.println("Geben Sie die Koeffizienten a und b an");
     a=Double.parseDouble(input.readLine());
     b=Double.parseDouble(input.readLine());
     c=Double.parseDouble(input.readLine());
     y=a*4*x*x*x+b*3*x*x+c*2*x;
     System.out.println("f'(x)="+y);
    }
    default:
    System.out.println("Falsche Eingabe");
   }
  }
}

Könnt ihr mir bitte helfen? Danke
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
was soll denn Code wie
> y=a*2*x;
bedeuten?

wie die Fehlermeldung es sagt: double * String ergibt keinen Sinn, zumal die Variable x leer ist,
möchtest du einen Text "4*x" ausgeben?
dann vielleicht
y=(a*2)+"*x";
 
I

icipher

Gast
ja, wollte eig. dass dann zum schluss sowas wie 4x²+2x+1 steht... dachte das geht auch irgendwie so, ohne immer umständlich das x extra in gänsefüßchen schreiben zu müssen.
 
S

SlaterB

Gast
ne String-Variable erspart die Gänsefüßchen, dazu noch das + um Strings zu verknüpfen, nicht *
 

beginner99

Aktives Mitglied
Damit sollte man eigentlich jede x-beliebige Ableitung erstellen können.
Ohne if oder case.


Java:
public class Polynom
{    
	/*
	 * enhält die Koeffizienten des Polynoms
	 * Index entspricht der "Hoch-Zahl"
	 * also unter coefficentArray[2] steht
	 * der Koeffizent von x^2
	 * Bsp: a + bx + cx^2
	 * coefficentArray[0] = a
	 * coefficentArray[1] = b
	 * coefficentArray[2] = c
	 */
    private double[] coefficentArray;

    /**
     * Constructor for objects of class Polynom
     */
    public Polynom(double[] coefficents)
    {
        coefficentArray = coefficents;
    }
    
    // Grad des Polynoms
    public int getGrade()
    {
        return coefficentArray.length - 1;
    }

    //erstelle nte-Ableitung von Polynom
    //(n = grade)
    public double[] getDerivative(int grade)
    {
        if (grade > getGrade() || grade < 1){
            System.out.println("invalid grade");
            return null;
        }
        double[] coeffs = coefficentArray;
        double[] derivative = null;
        for(int g = 0; g < grade; g++){
            derivative = createDerivative(coeffs);
            coeffs = derivative;
        }
        return derivative;
    }
    
    private double[] createDerivative(double[] coeffs)
    {
        double[] derivative = new double[coeffs.length -1];
        for(int i = 0; i < derivative.length; i++){
            derivative[i] = coeffs[i+1]*(i+1) ;
        }
        return derivative; 
    }
    
    public double evaluatePolynom(double xValue)
    {
        double value = 0;
        for(int i = 0; i < coefficentArray.length; i++){
            value += coefficentArray[i] * Math.pow(xValue, i);
        }
        return value;
    }
}
 
Status
Nicht offen für weitere Antworten.

Oben