Wie kann ich meine Methode aufrufen?

Bitte aktiviere JavaScript!
Hallo,

Ich habe ein kleines Problem mit meinem Programm. Das Programm soll die Tangentensteigung, für eine Funktion 2.Grades, an einer beliebigen Stelle x_0 berechnen. Das Programm ist soweit fertig, nur schaffe ich es nicht die Methode für die Berechnung aufzurufen.

Weiß jemand vielleicht,wo mein Fehler liegt ? Der Fehler liegt in Zeile 14.

Danke.
Java:
import java.util.Scanner; // t(x) = f'(x_0)*(x-x_0)+f(x_0) = f'(x_0)*x-f'(x_0)*x_0+f(x_0)
public class Tangente
{
    
public static void main(String[]args)
{
Scanner x = new Scanner(System.in);
System.out.println("Bitte geben Sie die Stelle ein.");
int x_0 = x.nextInt();
System.out.println("Geben Sie die Koeffizienten ein.");   
int a = x.nextInt();
int b = x.nextInt();
int c = x.nextInt();
System.out.println("Die Tangente an der Stelle"+x_0+"lautet:"+TangenteR(AbleitungS,Funktionswert,x_0,x));
}
    
public static int AbleitungX(int a)   
{
    
int Ableitung = a*2;

return Ableitung;
    
}
    
public static int AbleitungX2(int b)
{
    int Ableitung2 = b;
    return Ableitung2;
}
    
public static int AbleitungS(int x_0,int a, int b )
{
    
int AbleitungS = AbleitungX(a)*x_0+AbleitungX2(b);   

    
    return AbleitungS;
    
}
    
public static int Funktionswert(int a,int b,int c, int x_0)   
{
    
int Funktionswert = a*x_0+x_0+b*x_0+c;   
    
return Funktionswert;   
}
    
public static int TangenteR(int AbleitungS, int Funktionswert,int x,int x_0)   

{
    
int Tangente = AbleitungS*x-AbleitungS*x_0+Funktionswert;   
    
    
return Tangente;   
}
    
    
    
    
    
    
}
 
A

Anzeige


Vielleicht hilft dir dieser Kurs hier weiter: (hier klicken)
Äh, am Ende der Main-Methode, also wo die letzte Ausgabe steht.

Edit : Warum muss ich sie denn aufrufen?
Weil die Methode "TangenteR" an dieser Stelle Integerwerte als Parameter erwartet. Entweder gibst du direkt einen Wert an oder eine Variable vom Typ Integer oder du nutzt den Rückgabewert (als Integer) einer anderen Methode.
 
Ich habe es jetzt so gemacht.
Java:
System.out.println
("Die Tangente an der Stelle"+" "+ x_0+"lautet:"+TangenteR(AbleitungS(x_0,a,b),Funktionswert(a,b,c,x_0),x,x_0));
Nur das Problem ist das "x" nicht als ein Parameter angesehen wird, sondern als eine Zahl.
Wie kann ich "Tangente" so modifizieren, dass x keine Zahl mehr ist, sondern ein Art Platzhalter?
Edit: Scanner wurde als y deklariert.
 
Edit : Warum muss ich sie denn aufrufen?
Weil in Objekte Nachrichten austauschen. Das geschieht durch Methodenaufrufe.

Du willst vermutlich Kompositionen von Funktionen haben. Wenn Du eine Funktion f:IN -> IN hast und eine Funktion g:IN -> IN, dann kannst Du eine Funktion h:IN -> IN mit h := f ° g (wobei ° die Komposition darstellt) haben. Das wäre im Bereich der funktionalen Programmierung anzusiedeln, die seit Java 8 ansatzweise unterstützt wird, und zwar mit Methodenreferenzen bzw. funktionalen Interfaces.
 
x kennzeichnet an der Stelle Dein Scanner-Objekt.
Habe ich jetzt als y umdeklariert. Trotzdem bekomme ich nur Zahlen raus.
Das "x" soll nur ein Platzhalter sein. Wie könnte ich dies bewerkstelligen?

Java:
public static int TangenteR(int AbleitungS, int Funktionswert,String x,int x_0)   

{
    
int Tangente = AbleitungS*x-AbleitungS*x_0+Funktionswert;   
    
    
return Tangente;   
}
 
Also die Funktion kann ja nicht mit Platzhaltern rechnen, sondern es geht darum, einen konkreten Wert zu berechnen. Also muss die Funktion konkrete Werte bekommen. Mit diesen konkreten Werten kann die Funktion dann rechnen.

Und wenn Du mathematisch etwas berechnen willst, dann ist der Typ String wohl eher nicht geeignet.

Also musst Du dir überlegen, an welcher Stelle Du denn nun den Wert berechnet haben willst und das übergeben (so ich jetzt richtig verstanden habe, was Du da machen willst ...).

Und wieso nennst Du eine Scanner instanz x oder y? Nenne Variablen doch bitte so, dass klar ist, was da drin gespeichert ist. Oft wird bei sowas einfach der Klassenname in camel case genommen (also Scanner scanner = new Scanner(System.in);) oder so Du mehr mit Scannern machst als nur User Input zu lesen, dann kommt halt ein userInputScanner oder so in Frage. Das nur als kleine Anregung.
 
Danke für den Tipp. Scanner x begleitet mich schon seit ich mit Java angefangen habe.
Die Sache mit der Tangente ist ja, dass ich keine Werte haben möchte sondern, es soll folgendes rauskommen.
t(x) = f'(x_0)*x-f'(x_0)*x_0+f(x_0) = f'(x_0)*(x-x_0)+f(x_0)
Ich wollte eigentlich die Vereinfachung nehmen, die wollte aber nicht funktionieren.
 
Java:
System.out.println("t(x) = f'(x_0)*x-f'(x_0)*x_0+f(x_0) = f'(x_0)*(x-x_0)+f(x_0)");
Wird dann nicht nur das ausgegeben was in der Klammer steht? Ich möchte, aber das die Tangente rauskommt.

Als Beispiel:
f(x) = x² , x_0 = 2
f'(x) = 2x
f(2) = 4
f'(2) = 4
t(x) = 4*x-8+4 = 4*x-4<---- Das möchte ich haben.

Sollte ich es schaffen, dieses Programm zu laufen zu bringen, dann soll noch eine Überprüfung reinkommen ob folgendes gilt:
f(x_0) = t(x_0)
f'(x_0) = t'(x_0)
 
Kannst Du mal die Formel "t(x) = f'(x_0)*x-f'(x_0)*x_0+f(x_0) = f'(x_0)*(x-x_0)+f(x_0)" so umschreiben, dass dort a, b und c auftauchen?
 
Kannst Du mal die Formel "t(x) = f'(x_0)*x-f'(x_0)*x_0+f(x_0) = f'(x_0)*(x-x_0)+f(x_0)" so umschreiben, dass dort a, b und c auftauchen?
Das geht nicht. Das ist aber auch nicht nötig. Die Koeffizienten waren nur wichtig um den Funktionswert, Steigung und Stelle zu ermitteln. Beispiel : f(x) = ax²+bx+c auf f(x) = x² angewendet ---> a = 1.
 
Ich hoffe, dass ich Dich jetzt richtig verstanden habe:
Java:
public class Test {
    static String sign(int x) {
        return x < 0 ? " - " : " + ";
    }

    // fx = Funktionswert an Stelle x0
    // dfx = Wert der Ableitung an Stelle x0
    static String t(int x0, int fx, int dfx) {
        int right = -dfx*x0 + fx;

        return "t(x) = " + dfx + " * x" + sign(-dfx*x0) + Math.abs(dfx*x0) 
            + sign(fx) + Math.abs(fx) + " = " + dfx + " * x" + sign(right) + Math.abs(right);
    }

    public static void main(String[] args) {
        System.out.println(t(2, 4, 4));
    }
}
 
Wahrscheinlich hast du mich richtig verstanden, ich aber nicht was du geschrieben hast :). Muss man so einen großen Umweg machen,nur um "x" als Platzhalter zu bekommen?
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben