java.lang.math asin()

Jeff500

Mitglied
Hallo community,

Ich möchte mit java math asin() in einer formel zur berechnung von c in der allgemeinen Sinusformel (a * sin(b * x + c) + d ) verwenden, bekomm aber immer das falsche ergebnis

Code:
//werte der Sinusformel und eines punktes auf dem sinus
        a = 127.5;
        b = 2*Math.PI*2;
        c = 0.1;
        d = 0.5;
        x = 0.2;
        y = 64.77;

public double y()
    {
        double y2 = a * Math.sin(b*x+c)+d;
        System.out.println(y2);
        return y2;
    }

// Berechnung von c
System.out.println(Math.asin((y()-d)/a)-(x*b));

das ganze brauch ich, damit ich c berechnen kann und damit ich die API methode Math.asin() versteh, hab ich mir dieses kleine Programm geschrieben und sie mit Werten, die ich mir mitm Taschenrechner ausgerechnet hab gefüllt.
leider kommt nie das c raus , das ich zum berechnen von y verwendet hab, obwohl das nur eine Umkehraufgabe ist.
Die formel müsste stimmen, da bis jetzt alle die ich gefragt hab die selbe antwort gegeben haben.
Es muss also an meiner Implementierung scheitern.

meine ergebnisse sind
formel wie oben: -1.984955592153876
formel wie oben in Math.toRadians: -0.03464401058895886
formel wie oben in Math.toDegrees: -113.72957795130824

Liebe Grüße jeff
 

Fant

Bekanntes Mitglied
Offenbar scheitert es hier nicht an Java, sondern an den mathematischen Grundlagen.

Was willst du überhaupt berechnen?
Was meinst du mit "allgemeine Sinusformel"? Was du da angibst ist einfach nur ein Term, nichts weiter...
Außerdem solltes du bedenken, dass der Sinus nur dann umkehrbar ist, wenn du den Definitionsbereich geeignet einschränkst.
 

Jeff500

Mitglied
Ich will anhand von a, b, einem x-wert, dem dazugehörigen y-wert und d c berechnen

ich weiß,
dass mein sinus um 127,5 nach oben verschoben ist (a = 127,5),
der sinus eine frequenz von 2 hat (b = 2 * 2*pi),
der sinus um 0,5 nach oben verschoben ist (d = 0,5)

dann hab ich noch wertepaare auf der sinusfunktion und brauch jetzt eine gleichung, die mir anhand der gegebenen werte c berechnet.
Wenn ich die sinusfunktion a * sin(b * x + c) + d nach c auflöse, kommt meines wissens sinushoch-1((y-d)/a)-(x*b) raus
 

Fant

Bekanntes Mitglied
Ich kann mich nur wiederholen:
- Du kannst einen Term nicht nach irgendeiner Variablen auflösen. Das macht keinen Sinn.
- Der Sinus ist auf ganz ℝ betrachtet nicht Bijektiv, das heißt hier für dich, dass der Wert, den du berechnen willst, nicht eindeutig ist.
 

Illuvatar

Top Contributor
Es gibt eben nicht nur eine Möglichkeit für c (wenn du den Sinus nach links / rechts verschiebst, kommt immer mal wieder das gleiche Ergebnis heraus).

Wenn du den y-Wert mit dem c, das du erhältst (also -1.98) neu berechnest, müsstest du den gleichen Wert erhalten, den du zur Berechnung von c verwendet hast: 64.77.
 

Jeff500

Mitglied
@ fant:

Tud mir leid ich hab "y=" vergessen

mein Term ist y = a * sin(b * x + c) + d .
diese Gleichung kann ich schon nach einer Variable auflösen
und wenn ich den Teil der Sinusfunktion außer acht lasse, der mir angibt in welcher Periode ich mich bewege, dann bedeutet das meines Wissens nur, dass mein Ergebnis in der ersten Periode ist und der rest unbeachtet bleibt.

die x-Verschiebung des Sinus (c) ist schon eindeutig, von daher sollte ich sie doch berechnen können. Graphisch auslesen wäre ja kein Problem zum Beispiel
 
Zuletzt bearbeitet:

AquaBall

Top Contributor
System.out.println(Math.asin((y()-d)/a)-(x*b));
Deine Umwandlung ist schon richtig.
Jetzt musst du nur Proberechnungen machen, bis du verstehs was da passiert.
Und du ° und rad richtig im Griff hast.
Deine Aufgabe ist leider nicht verständlich, was da geometrisch passieren soll.

Aber mich wundert warum du z.B. b=2*pi*2 hast. Das sind schon 2 Vollkreise, und mit b=1*pi*2 bekommst du exakt das selbe y.
Fant sagt's dir ja schon. Das Ergebnis ist nie eindeutig, und kann dir nie garantieren, dass das "richtige" C rauskommt.

PS: Die Multiplikation 2*pi ist problematisch, weil du nie weißt, ob das vielleicht als int interpretiert wird.
Schreib sicherheitshalber: b=2.0*pi ...

Übrigens: Grafisch auslesen IST ein Problem, wenn du R nicht einschränkst!
Mit c(y) bzw y^-1(c) hättest du in der Grafik einen Sinus, der sich senkrecht an der y-Achse hochschlängelt, unendlichmal!
 
Zuletzt bearbeitet:

Illuvatar

Top Contributor
Aber mich wundert warum du z.B. b=2*pi*2 hast. Das sind schon 2 Vollkreise, und mit b=1*pi*2 bekommst du exakt das selbe y.
Fant sagt's dir ja schon. Das Ergebnis ist nie eindeutig, und kann dir nie garantieren, dass das "richtige" C rauskommt.
Das ist übrigens leider nicht richtig, ich glaube du verwechselst b und c.

die x-Verschiebung des Sinus (c) ist schon eindeutig, von daher sollte ich sie doch berechnen können. Graphisch auslesen wäre ja kein Problem zum Beispiel
Dann zeig mir bitte mal wie du das machst ???:L Wann immer du meinst, die passende Verschiebung gefunden zu haben, verschiebe die Sinusfunktion einfach um eine Periode (2pi / b) nach rechts - schon ist wieder das gleiche da ;)
Beziehungsweise: Mach was ich gesagt hab, berechne mal a * sin(b * x + c2) + d. Da kommt wieder das gleiche y raus.
 

Jeff500

Mitglied
ber mich wundert warum du z.B. b=2*pi*2

2 ist meine frequenz und mir wurde gesagt, damit ich im Bogenmaß rechnen kann muss ich das mit 2* pi malnehmen und des hat so auch in den Rechnungen funktioniert, also hab ichs beibehalten.

Wenn du den y-Wert mit dem c, das du erhältst (also -1.98) neu berechnest, müsstest du den gleichen Wert erhalten, den du zur Berechnung von c verwendet hast: 64.77.

also heißt dass, wenn ich a, b, d und einen punkt auf dem Sinus (x/y) hab, kann ich (mit Math.asin((y()-d)/a)-(x*b)) ) ein c berechnen und dann mit y1 = a * Math.sin(b*x1+c)+d jeden punkt (x1/y1) des graphen berechnen ?

Wenn das so ist, dann ist mein Problem gelöst :oops::)
 

Jeff500

Mitglied
Ok bis jetzt war ich im Glauben, dass ich für eine Sinusfunktion, deren Graph mir gegeben ist eine Funktion aufstellen kann, die diesen Graph genau beschreibt.

Das stimmt nur soweit, das diese von mir aufgestellt Funktion eine von unendlich vielen ist, die sich nur in soweit voneinander unterscheiden, dass c = c * (2*pi*b*n) ist. Der Rest schaut immer gleich aus

verschiebe die Sinusfunktion einfach um eine Periode (2pi / b) nach rechts - schon ist wieder das gleiche da
 

AquaBall

Top Contributor
Das ist übrigens leider nicht richtig, ich glaube du verwechselst b und c.
Ok, auf 'b' allein bezogen war das von mir ungenau.

aber: Wenn ich das ganze mal schwingungsmäßig interpretiere (Schulwissen ist Jahrzehnte her, können gut Fehler drin sein)
  • a = amplitude
  • [STRIKE]x = Frequenz [/STRIKE]
  • [STRIKE]b = Faktor auf Bogenmaß[/STRIKE] (Irrtum! siehe unten)
  • c = Phasenverschiebung
  • d = spannungsverschiebung
[STRIKE]dann wundert ich mich, dass Frequenz x mit 2*pi*2 multipliziert wird, statt mit 2pi.

Wundert mich nur.[/STRIKE]
 
Zuletzt bearbeitet:

Jeff500

Mitglied
nach meinem Schulwissen und was ich auch mein,

ist b die Frequenz und x ist der Punkt auf der Funktion,
zu dem dann ein Ausschlag kommt also der Punkt (x/y)
 

Jeff500

Mitglied
also ergebnis nach einigem Testen:

das c, dass ich mit Math.asin((y()-d)/a)-(x*b) errechne, ist geeignet jeden Punkt auf dem sinus zu berechnen (bei der 12. Nachkommastelle wirds dann ungenau, aber sonst is es in Ordnung).

Danke euch allen für die Hilfe
 

AquaBall

Top Contributor
Das war ja schon von Anfang an klar. (Außer der Mehrdeutigkeit)

Was war dann nun dein Problem, bzw wie hast du's gelöst?
Irgendwas hat dir anfangs ja nicht gepasst.

(Wenn du uns das erklärst, können andere evtl auch profitieren.)

PS: "
Code:
ab 12. kommastelle falsch
" lol.
Das würde bedeuten, dass du bei einer Punktlandung auf dem Mond um 0.38mm zu spät/zu früh bremsen würdest!
Wer sagt denn, dass dein anderes Ergebnis "richtiger" ist.
 
Zuletzt bearbeitet:

Jeff500

Mitglied
Ich hab nach einer Rechnungn gesucht, die mir genau den c Wert gibt, den ich mir am Anfang ausgesucht hab und ignoriert, dass es viele andere Werte für c gibt, die auch zur weiterverwendung geeignet sind.

Die Erkenntnis, dass es eben mehrere Werte für c gibt, die möglich sind und die auch alle weiterverwendet werden können, haben dafür gesorgt, dass ich das Problem leicht umgehen kann.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Eclipse: Fehler bei: import java.lang.math Java Basics - Anfänger-Themen 7
F TableModelListener: java.lang.ArrayIndexOutOfBoundsException: 132 Java Basics - Anfänger-Themen 3
F Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 11 at main.main(main.java:11) Java Basics - Anfänger-Themen 2
O Exception in thread "main" java.lang.ArithmeticException: / by zero Java Basics - Anfänger-Themen 4
JaVaN0oB java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 18
F Fehlermeldung java.lang.NullPointerException Java Basics - Anfänger-Themen 4
D java.lang.NullPointerException Java Basics - Anfänger-Themen 19
X java.lang.NullPointerException fehler ? Java Basics - Anfänger-Themen 1
R Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 5
S Compiler-Fehler Exception in thread "main" java.lang.Error: Unresolved compilation problem: Java Basics - Anfänger-Themen 6
B java.lang.NullPointerException bei javafx Java Basics - Anfänger-Themen 10
H JUnit in Eclipse: java.lang.NoClassDefFoundError: Java Basics - Anfänger-Themen 9
I Compiler-Fehler Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5 Java Basics - Anfänger-Themen 3
B java.lang.ArithmeticException: / by zero Java Basics - Anfänger-Themen 3
P java.lang.ClassCastException Bedeutung und Lösung Java Basics - Anfänger-Themen 3
J Erste Schritte java.lang.NoClassDefFoundError Java Basics - Anfänger-Themen 4
I java.lang.ArrayIndexOutOfBoundsException at lösung.main Java Basics - Anfänger-Themen 3
R Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 10
T Compiler-Fehler java.lang.ArithmeticException: / by zero Java Basics - Anfänger-Themen 2
R java.lang.ArrayIndexOutOfBoundsException: 0 Rechner Error Java Basics - Anfänger-Themen 4
D Erste Schritte Java.lang.NullPointer.Exception Java Basics - Anfänger-Themen 8
H java.lang.NullPointerException Java Basics - Anfänger-Themen 4
G java.lang.NullPointerException Java Basics - Anfänger-Themen 3
C Compiler-Fehler Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2 Java Basics - Anfänger-Themen 3
N jodaTime java.lang.IllegalArgumentException: Invalid format Java Basics - Anfänger-Themen 3
E Compiler-Fehler java.lang.NullPointerException Java Basics - Anfänger-Themen 2
F Erste Schritte java.lang.StringIndexOutOfBoundsException Java Basics - Anfänger-Themen 3
J java.lang.NullPointerException in meiner JavaFXControllerKlasse Java Basics - Anfänger-Themen 26
R java.lang.StringIndexOutOfBoundsException Java Basics - Anfänger-Themen 1
D Communications link failure | java.lang.NullPointerException Java Basics - Anfänger-Themen 3
V java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 2
H java.lang.NoClassDefFoundError Run as>> Run on Server Java Basics - Anfänger-Themen 2
F java.lang.NullPointerException, kann aber nicht sein! Java Basics - Anfänger-Themen 4
L Fehler: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 4
S Java memory fehler: Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap spa Java Basics - Anfänger-Themen 5
M java.lang.Enum.valueOf(Unknown Source) Java Basics - Anfänger-Themen 2
L Compiler-Fehler Problem beim Programmieren eines Kalenders (java.lang.ArrayIndexOutOfBoundsException) Java Basics - Anfänger-Themen 2
A Code läuft nicht, Fehlermeldung Exception in thread "main" java.lang.Error: Unresolved compilation " Java Basics - Anfänger-Themen 11
P Exception in thread "main" java.lang.NoClassDefFoundError: Java Basics - Anfänger-Themen 1
C Hilfe!!! java.lang.ClassCastException Java Basics - Anfänger-Themen 1
O java.lang.IndexOutOfBoundsException JTable autoSort Java Basics - Anfänger-Themen 5
M Compiler-Fehler Java suckt - java.lang.NullPointerException Java Basics - Anfänger-Themen 12
W Methoden Rückgabedatentyp java.util.Map<java.lang.String,? extends ...> Java Basics - Anfänger-Themen 4
L Compiler-Fehler Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 2
F Exception in thread main java.lang.StackOverflowError Java Basics - Anfänger-Themen 3
K Caused by: java.lang.NoClassDefFoundError: org/mindrot/jbcrypt/BCrypt Java Basics - Anfänger-Themen 0
S java.lang.NullPointerException Java Basics - Anfänger-Themen 4
G Compiler-Fehler java.lang.NullPointerException Java Basics - Anfänger-Themen 4
OnDemand java.lang.reflect.InvocationTargetException Java Basics - Anfänger-Themen 9
A Compiler-Fehler Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 7
J Klassen java.lang.String - lexikographisches Sortieren Java Basics - Anfänger-Themen 5
P Interpreter-Fehler java.lang.NullPointerException Java Basics - Anfänger-Themen 3
T Erste Schritte import java.lang.System.out Java Basics - Anfänger-Themen 4
T Problem mit Eclipse? Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 4
H Classpath java.lang.NoClassDefFoundError externe Libary Java Basics - Anfänger-Themen 4
M Exception in thread "main" java.lang.NoClassDefFoundError: MeineKlasse Java Basics - Anfänger-Themen 12
X Applet Fehler: java.lang.reflect.InvocationTargetException Java Basics - Anfänger-Themen 45
B java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 4
K Date cannot be cast to java.lang.Integer Java Basics - Anfänger-Themen 4
H java.lang.IndexOutOfBoundsException bei verschachtelter ArrayList Java Basics - Anfänger-Themen 9
S Fehler: "java.lang.NullPointerException" Java Basics - Anfänger-Themen 6
V java.lang.NoSuchMethodError Java Basics - Anfänger-Themen 2
I Erste Schritte Ausführfehler: java.lang.NullPointerException Java Basics - Anfänger-Themen 3
R Compiler-Fehler java.lang.ArrayIndexOutOfBoundsException, warum? Java Basics - Anfänger-Themen 6
K Error: java.lang.NoSuchMethodException Java Basics - Anfänger-Themen 2
M Compiler-Fehler Fehler Meldung java.lang.NumberFormatException: empty String Java Basics - Anfänger-Themen 2
G java.lang.ClassNotFoundException Java Basics - Anfänger-Themen 4
1 Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException Java Basics - Anfänger-Themen 5
S Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 11
S String index out of range: 8 at java.lang.String.substring(Unknown Source) Java Basics - Anfänger-Themen 13
V [Greenfoot] java.lang.NullPointerException Java Basics - Anfänger-Themen 12
S Compiler-Fehler java.lang.NullPointerException Java Basics - Anfänger-Themen 10
X Interpreter-Fehler "java.lang.NullPionterException: null" bei BlueJ Java Basics - Anfänger-Themen 10
P java.lang.ClassCastException Java Basics - Anfänger-Themen 2
D java.lang.NoSuchMethodError: main Java Basics - Anfänger-Themen 11
S expected java.lang.string but found char Java Basics - Anfänger-Themen 5
S Umgebungsvariable Exception in thread "main" java.lang.UnsatisfiedLinkError: no J3D in java.librar y.path Java Basics - Anfänger-Themen 15
S Compiler-Fehler java.lang.SecurityException: Invalid signature file digest for Manifest main attributes Java Basics - Anfänger-Themen 5
M Klassen Exception in thread "main" java.lang.NoClassDefFoundError: Java Basics - Anfänger-Themen 2
A Compiler-Fehler unreported exception java.lang.Exception; must be caught or declared to be thrown Java Basics - Anfänger-Themen 7
K Fehlermeldung: java.lang.IndexOutOfBoundsException: Index: 1, Size: 1 Java Basics - Anfänger-Themen 4
M Datentypen java.util.Arrays$ArrayList cannot be cast to [Ljava.lang.String; Java Basics - Anfänger-Themen 11
J java.lang.NullPointerException Java Basics - Anfänger-Themen 18
K Interpreter-Fehler java.lang.NullPointerException Java Basics - Anfänger-Themen 6
F Ich kenn mich nicht mehr aus - 'java.lang.NoSuchMethodError: main' in Applet? Java Basics - Anfänger-Themen 2
K OOP java.lang.NullPointerException Java Basics - Anfänger-Themen 2
N iText PDF Fehler, java.lang.ClassNotFoundException: com.lowagie.text.Phrase Java Basics - Anfänger-Themen 7
M java.lang.NumberFormatException-Problem Java Basics - Anfänger-Themen 6
H java.lang.NoSuchMethodError: Java Basics - Anfänger-Themen 5
J java.lang.UnsatisfiedLinkError: Java Basics - Anfänger-Themen 9
T List in java.lang.Object... einfügen Java Basics - Anfänger-Themen 12
M java.lang.StringTokenizer Java Basics - Anfänger-Themen 4
I java.lang.String cannot be cast to OBJEKT Java Basics - Anfänger-Themen 8
P java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory Java Basics - Anfänger-Themen 1
Y java.lang.NoSuchMethodError: main Java Basics - Anfänger-Themen 9
B Exception in thread "main" java.lang.NullPointerException Fehler Hilfe! Java Basics - Anfänger-Themen 4
D java.lang.outofmemoryerror java heap space bei Hashtable Java Basics - Anfänger-Themen 3
Spin Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: data must Java Basics - Anfänger-Themen 10
S Fehlermeldung: java.lang.NullPointerException Java Basics - Anfänger-Themen 10
T Fehlermeldung: java.lang.NoClassDefFoundError Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben