Erste Schritte Ableitung

chris30o0

Mitglied
Hi,
bin gerade dabei, mich etwas an einen "Ableitungs-Rechner" ranzutasten.
Ich bin allerdings gerade bei einem Problem angekommen, da komm ich einfach nicht weiter.
m1-8 sind die Exponenten, die sich bei jedem Durchlauf um eins verkleinern.
n ist nur der Durchlaufzähler für erste/zweite/dritte Ableitung.
nun zum Problem: Ich habe bis jetzt nur die Zahlen ausgelesen und in die Gleichung eingesetzt.
Nun will ich aber natürlich auch die richtige Ableitung erstellen, und Exponent mit a/b/c.. multiplizieren.
Das wäre eigentlich kein Problem, doch sollte diese Rechnung unabhängig von a sein, da a ja konstant ist. Ich hab das nun so versucht, wie unten zu sehen. Nur wird es jetzt natürlich doppelt gerechnet.
d.h. jetzt habe ich a*m1*m1. Im ersten Durchlauf soll also a3 nicht berechnet werden. Aber in den folgenden. Ich könnte da jetzt ein if einbauen, aber ich hab mich gefragt, ob es auch leichter geht.
Java:
do {
          int m1 = ma--;
          int m2 = mb--;
          int m3 = mc--;
          int m4 = md--;
          int m5 = me--;
          int m6 = mf--;
          int m7 = mg--;
          int m8 = mh--;
          int n = n1++;
          int a2 = a*m1;
          int a3 = a2*m1;
          System.out.println("f"+n+"(x) = "+a3+"x^"+m1+"+"+b+"x^"+m2+"+"+c+"x^"+m3+"+"+d+"x^"+m4+"+"+e+"x^"+m5+"+"+f+"x^"+m6+"+"+g+"x^"+m7+"+"+h+"x^"+m8+"+"+i+"x+"+j);

        } while (ma!=0);

PS: Auch wenn es andere Wege gibt: Die Vorgehensweise würd ich gern so beibehalten.
Ich bastel nur ein bisschen rum =)
 

julian.veh

Bekanntes Mitglied
Java:
int a2 = a*ma;
int b2 = b*mb;
int c2 = c*mc;
int d2 = d*md;
int e2 = e*me;
int f2 = f*mf;
int g2 = g*mg;
int h2 = h*mh;

ma--;
mb--;
mc--;
md--;
me--;
mf--;
mg--;
mh--;


System.out.println("f" + n + "(x) = " + a2 * "x ^" + ma + " .."..);

Mh habe es nicht ausprobiert, aber so müsste es doch funktionieren oder? =)
 
Zuletzt bearbeitet:
M

Marcinek

Gast
Du brauchst eine äußere Schleife, die die Ableitungen runterzählt und eine innere, die die exponenten darstellt.

Wobei man dann die koefizienten in einem array verwaltet.
 

julian.veh

Bekanntes Mitglied
Java:
import java.util.Scanner;


public class Ableitungsrechner {
    public static void main (String[] args) {
        int va;
        int vb;
        int vc;
        int vd;
        
        int ae;
        int be;
        int ce;
        
        int n = 3;
        
        String abl = "";
        
        Scanner scan = new Scanner( System.in );
        System.out.println("Ableitungsrechner für Polynome 3. Grades");
        System.out.println("Geben Sie den Faktor vor a ein");
        va = scan.nextInt();
        System.out.println("Geben Sie den Faktor vor b ein");
        vb = scan.nextInt();
        System.out.println("Geben Sie den Faktor vor c ein");
        vc = scan.nextInt();
        System.out.println("Geben Sie den Faktor vor d ein");
        vd = scan.nextInt();
        
        System.out.println("Geben sie den Exponenten von x bei a*x^... ein");
        ae = scan.nextInt();
        System.out.println("Geben sie den Exponenten von x bei b*x^... ein");
        be = scan.nextInt();
        System.out.println("Geben sie den Exponenten von x bei c*x^... ein");
        ce = scan.nextInt();
        
        while(n>0){
            if(n==3){
                abl = "f'(x) = ";
            }
            if(n==2){
                abl = "f''(x) = ";
            }
            if(n==1){
                abl = "f'''(x) = ";
            }
            
            if(n>0){
                va = va*ae;
                ae--;
            }
            if(n>1){
                vb = vb*be;
                be--;
            }
            if(n>2){
                vc = vc*ce;
                ce--;
            }
            System.out.println(abl + va + "a" + "x^" + ae + "+" + vb + "b" + "x^" + be + "+"  + vc + "c" + "x^" + ce + "+");
            n--;
        }
    }    
}

Musste es irgendwie auch mal ausprobieren, vllt hilft dir das ja ich glaube das ist richtig aber nur für Polynome 3. Grades. Wenn man es für Polynome beliebigen Grades machen will würde ich es mit einem Array machen, aber ich kenne ja nicht deinen ganzen Code.

Gruß ;)
 

chris30o0

Mitglied
Ist gerade etwas schwer nachzuvollziehen, da du ja scheinbar gar nicht auf meinen Code eingegangen bist. Außerdem Stimmt das nicht ganz (mathematisch).
Du schreibst ja, dass das Polynome 3. Grades wären.
Aber man soll den Exponente ja selbst angeben.
Gibt man ax^4 an, ist es 4. Grades.

Nunja, das hilft ja nun auch nicht zu verstehen, wieso meins nicht geht.
Ist es einfach nicht möglich, das auf diese Weise zu machen, oder wo ist der Fehler?
 
M

Marcinek

Gast
So wie ihr das macht müsst ihr ja pro möglichen grad eine Variable haben -.-

Das kannn doch nix werden.

Was ist mit meinem Vorschlag mit zwei Schleifen und einem Array?

Gruß,

Martin
 

julian.veh

Bekanntes Mitglied
Ist gerade etwas schwer nachzuvollziehen, da du ja scheinbar gar nicht auf meinen Code eingegangen bist. Außerdem Stimmt das nicht ganz (mathematisch).
Du schreibst ja, dass das Polynome 3. Grades wären.
Aber man soll den Exponente ja selbst angeben.
Gibt man ax^4 an, ist es 4. Grades.

Nunja, das hilft ja nun auch nicht zu verstehen, wieso meins nicht geht.
Ist es einfach nicht möglich, das auf diese Weise zu machen, oder wo ist der Fehler?



Aber wenn du bei deinem Verfahren bleiben willst, geht das nicht mit beliebigen Grad. Angenommen es handelt sich um eine Funktion 100. Grades, dann brauchst du ja 100 Variablen ^^.

Mit Array so:

Java:
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int a = 0;

int[] array = new int[n]

while(n>0){
array[a] = scan.nextInt();
a++;
n--;
}
 

chris30o0

Mitglied
beliebigen Grades hatte ich auch nicht vor.
Ich wollte das schon begrenzen, hatte bisher 9 angesetzt.
Das werde ich nachher mal anschauen, muss erstmal weg.
 

Ähnliche Java Themen

Neue Themen


Oben