Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Uhlig
Anmeldungsdatum: 10.03.2019 Beiträge: 8
|
Verfasst am: 12.03.2019, 10:47 Titel: Sin-Wert wandeln in Tan-Wert wandeln |
|
|
Hallo!
Habe 2 Vektoren im Winkel (<>90°) addiert und die Resultierende sowie den Sin-Wert des neue Winkels berechnet. Leider gibt es keine arcsin-Funkion in QBasic, um den neuen Winkel zu erhalten. Der arctan ist am Winkel 90° gebunden, den ich nicht habe. Kennt jemand einen Weg, wie ich zu meinem Winkel komme??? Der Dank eilt Euch voraus.
Gruß Uhlig |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1213 Wohnort: Ruhrpott
|
Verfasst am: 12.03.2019, 11:49 Titel: |
|
|
Hallo und willkommen im Forum.
Die Arcussinus - Funktion kann ganz einfach substituiert werden: Code: | DECLARE FUNCTION arcsin# (x#)
PRINT arcsin(1)
FUNCTION arcsin# (x#)
arcsin# = 2 * ATN(x# / (1 + SQR(1 - x# ^ 2)))
END FUNCTION
|
Siehe auch https://de.wikipedia.org/wiki/Arkussinus_und_Arkuskosinus
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
Uhlig
Anmeldungsdatum: 10.03.2019 Beiträge: 8
|
Verfasst am: 12.03.2019, 14:07 Titel: Sin-Wert wandeln in Tan-Wert wandeln |
|
|
Hallo!
Ergebnis 31,57396133
Richtig 30
Diesen Weg habe ich auch schon versucht. Die Tangensfunktion gilt aber nur bei 90° Dreiecken! Wer hat noch einen anderen Vorschlag? Anwendung bei allgemeinem Dreieck.
Gruß Uhlig |
|
Nach oben |
|
|
Haubitze
Anmeldungsdatum: 14.10.2009 Beiträge: 132
|
Verfasst am: 12.03.2019, 16:54 Titel: |
|
|
hier https://docs.curveexpert.net/curveexpert/basicv2/appendix-functions.html
lese ich was von
Code: |
asin(x)
Inverse sine. The inverse sine of each element in x, in radians and in the closed interval [-pi/2, pi/2].
arcsin is a multivalued function: for each x there are infinitely many numbers z such that sin(z) = x. The convention is to return the angle z whose real part lies in [-pi/2, pi/2].
The inverse sine is also known as arcsin or sin^{-1}.
|
ergo muesste wenn gilt sin(z)=x
asin(z)=sin(z)^-1 oder? |
|
Nach oben |
|
|
Uhlig
Anmeldungsdatum: 10.03.2019 Beiträge: 8
|
Verfasst am: 12.03.2019, 17:16 Titel: Sin-Wert wandeln in Tan-Wert wandeln |
|
|
Das ist alles gut gemeint. Ich kann aber nur mit den Befehlen von QBasic arbeiten. und da gibt es nur den ATN zur Winkelausgabe! asin ist keine Funktion in QBasic.
Gruß Uhlig |
|
Nach oben |
|
|
Haubitze
Anmeldungsdatum: 14.10.2009 Beiträge: 132
|
Verfasst am: 12.03.2019, 17:26 Titel: |
|
|
oh entschuldige bitte...
Code: |
DECLARE FUNCTION arcsin# (x#)
PRINT arcsin(1)
FUNCTION arcsin# (x#)
return sin(x#)^-1
END FUNCTION
|
ob das so tut kann ich aber nicht beurteilen bin in FreeBASIC unterwegs.
ob das ergebniss stimmt gann ich auch nit beurteilen :/ |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4601 Wohnort: ~/
|
Verfasst am: 12.03.2019, 19:35 Titel: |
|
|
Ich bin mir praktisch völlig sicher, dass in QBasic (genauso wie in FreeBASIC) sin(x)^-1 identisch ist mit 1/sin(x). Dieses ^-1 ist in der mathematischen Definition leider doppelt belegt.
Die Tangensfunktion ist nicht nur für (insb. rechtwinklige) Dreiecke definiert, sondern für jeden Winkel ungleich (2k-1)*90°. Ich schau mal, ob ich bei der Fragestellung weiter komme; leider bin ich gerade nicht wirklich fit.
edit: Beim nochmaligen Durchlesen bin ich mir nicht sicher, ob da nicht ein Verständnisproblem vorliegt. Die Herleitung des Tangens läuft über ein rechtwinkliges Dreieck; für die Berechnung mit TAN bzw. ATN spielt das aber überhaupt keine Rolle mehr. grindstones Vorschlag liefert die gesuchten korrekten Werte (x# muss natürlich im Bereich von -1 und 1 liegen; nur dort ist der Arcussinus definiert). Vielleicht postest du mal genau, was du gemacht hast / vor hast, damit man besser sieht, wo genau das Problem liegt. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1213 Wohnort: Ruhrpott
|
Verfasst am: 13.03.2019, 11:00 Titel: Re: Sin-Wert wandeln in Tan-Wert wandeln |
|
|
Uhlig hat Folgendes geschrieben: | Die Tangensfunktion gilt aber nur bei 90° Dreiecken! | Das gilt für Sinus und Cosinus genauso.
Ich denke, nemored hat recht, hier gibt es wohl ein Verständnisproblem. Wenn du die Aufgabenstellung vielleicht etwas näher beschreiben könntest? Vektorrechnung ist eigentlich eine ganz einfache Geschichte, speziell, wenn einem der Computer die Rechenarbeit abnimmt.
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
Uhlig
Anmeldungsdatum: 10.03.2019 Beiträge: 8
|
Verfasst am: 13.03.2019, 17:54 Titel: Sin-Wert wandeln in Tan-Wert wandeln |
|
|
Hallo!
Danke für das Interesse für mein Problem.
Ich habe auf dem ersten DDR-Computer mit Caosbasic angefangen. Mit Windows 95 war im Dos auch das Qbasic vorhanden. Mit diesem habe ich dann mein erstes Programm, Hütchenspiel, geschrieben. Es folgte ein Mensch ärgere dich nicht und der Zauberwürfel sowie eine Mondlandung. Grafik natürlich ganz einfach. Nun will ich das Mondprogramm noch etwas aufbessern. Neben der Landung gibt es auch einen Start zum Mutterschiff im Orbit, beides im Demo und Real-Modus (1s-Takt). Die Landung erfolgt senkrecht. Bei Start wird die Monddrehung berücksichtigt sowie die Drehung der Mondfähre. Wurde sie gedreht, so ist der Schub nicht mehr in der alten Flugrichtung.
Die beider Vektoren im Winkel der Drehung wurden addiert. Die Resultierende ergab der Cos-Satz, der Sin(x) für den neuen Winkel der Sin-Satz (a/sina=b/sinb=c/sinc).
Nun suche ich nach einer Möglichkeit, wie ich vom Wert auf den Winkel komme. Die einzige arc-Funktion ist in Qbasic nur Arctan, und diese setzt einen Winkel im Dreieck von 90° voraus. Da mein Sin-Wert aus einem allgemeinen Dreieck stammt, ergeben die oben angegebenen Wege Abweichungen. Mit einem 90°-Hilfsdreieck habe ich dann aber nur noch eine Seite und einen Winkel. Der Tangens benötigt aber 2 Seiten.
Ich stehe mit Englisch auf Kriegsfuß und bleibe deshalb lieber bei Prorammen auf Deutsch (Qbasic 4,5). Es ist mein Hoppy. Finde keinen gehbaren Weg. Danke für jeden Tipp.
Gruß Uhlig |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4601 Wohnort: ~/
|
Verfasst am: 13.03.2019, 20:53 Titel: |
|
|
Mal zur Klärung des Sachverhaltes:
Jeder(!) Winkel, der kein ungeradzahliges Vielfaches von 90° ist, besitzt einen Tangenswert, so wie jeder Winkel einen Sinus- und Cosinuswert besitzt. Allerdings sind all diese Funktionen periodisch, d. h. die Arkusfunktionen sind dann nicht mehr eindeutig. Z. B. cos(0°) = cos(360°) = 1; arccos(1) ergibt nun 0 (0°), obwohl der Ausgangswinkel auch 360° gewesen sein könnte.
Für den Tangens gilt dasselbe. In der Regel wird als Wertebereich des Tangens zwischen -90° und +90°; aber das heißt nicht, dass du in irgend einer Form ein rechtwinkliges Dreieck für die Funktion ATN brauchen würdest.
Ich habe das mal für ein paar Werte durchgespielt:
Code: | declare sub teste(winkel#)
declare function arcsin#(x#)
const PI = atn(1)*4
teste(30)
teste(47)
teste(89.5)
teste(120)
teste(330)
sub teste(winkel#)
dim r as double ' Winkel in Bogenmaß
dim s as double ' für den Sinuswert des Winkels
r# = winkel#/180 * PI
s# = sin(r#)
print "Winkel: "; winkel#
print "Bogenmass: "; r#
print "Sinus: "; s#
print "ArcSinus: "; arcsin(s#)
print "Gradmass: "; arcsin(s#)/PI * 180
print
end sub
function arcsin#(x#)
arcsin# = 2 * atn(x# / (1 + sqr(1 - x# ^ 2)))
end function |
Ausgabe:
Code: | Winkel: 30
Bogenmass: 0.5235987755982988
Sinus: 0.4999999999999999
ArcSinus: 0.5235987755982988
Gradmass: 30
Winkel: 47
Bogenmass: 0.8203047484373349
Sinus: 0.7313537016191705
ArcSinus: 0.8203047484373349
Gradmass: 47
Winkel: 89.5
Bogenmass: 1.562069680534925
Sinus: 0.9999619230641713
ArcSinus: 1.562069680534928
Gradmass: 89.50000000000014
Winkel: 120
Bogenmass: 2.094395102393195
Sinus: 0.8660254037844387
ArcSinus: 1.047197551196598
Gradmass: 60.00000000000001
Winkel: 330
Bogenmass: 5.759586531581287
Sinus: -0.5000000000000004
ArcSinus: -0.5235987755982994
Gradmass: -30.00000000000003
|
Wenn du ein Beispiel hast, in dem "falsch gerechnet" wird, poste es mal bitte - ich fürchte, dein Fehler liegt an anderer Stelle. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
Uhlig
Anmeldungsdatum: 10.03.2019 Beiträge: 8
|
Verfasst am: 14.03.2019, 13:27 Titel: |
|
|
Danke! viel Mühe gegeben. Das Problem liegt im Programm. Ich habe nur QuickBASIC 4.5 und 7.1. Da gibt es die Befehle ASIN oder ACOS nicht sondern nur ATN. Möchte für mein Hobby kein anderes Programm kaufen.Wie komme ich da mit meinem SIN-Wert zum Winkel ????javascript:emoticon('')
Gruß Uhlig |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4601 Wohnort: ~/
|
Verfasst am: 14.03.2019, 20:14 Titel: |
|
|
grindstones Ansatz (den ich hier aufgegriffen habe) verwendet doch ausschließlich ATN ... _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1213 Wohnort: Ruhrpott
|
Verfasst am: 15.03.2019, 02:03 Titel: |
|
|
@Uhlig: Mir scheint da ein grundsätzliches Verständnisproblem vorzuliegen. Ich weiss nicht, was du alles in den Startvektor einrechnest (Monddrehung, Orbit des Mutterschiffs), auf jeden Fall scheint am Ende ein resultierender Vektor herauszukommen. Wenn du den jetzt in ein (gedachtes) Koordinatensystem einsetzt, so daß der Anfang des Vektors im Nullpunkt liegt (siehe Grafik), so bildet der Vektor (als Hypotenuse) ein rechtwinkliges Dreieck mit dem x - Abschnitt (als Ankathete) und dem um x verschobenen y - Abschnitt (als Gegenkathete). Der Tangens des Winkels α ist somit y/x mit dem Sonderfall 90° (bzw. π/2) für x = 0.
Uhlig hat Folgendes geschrieben: | Möchte für mein Hobby kein anderes Programm kaufen. | Dann solltest du mal einen Blick auf freeBasic werfen. Es ist Open Source (und somit kostenlos), entspricht von der Syntax her weitgehend QB, ist aber ein vollwertiger Compiler mit zahlreichen Zusatzfeatures (auch arcussinus und arcuscosinus ).
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Zuletzt bearbeitet von grindstone am 15.03.2019, 12:57, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
Uhlig
Anmeldungsdatum: 10.03.2019 Beiträge: 8
|
Verfasst am: 15.03.2019, 11:43 Titel: |
|
|
Diese Methode wende ich für die Wirkung der Gravitation an. Einen rechten Winkel am Ergebnis anlegen hat zur Folge, dass ich nur noch eine Seite habe und einen unbekannten Winkel somit auch keinen Tangens!!
[url]file:///D:/DOS/Mond/Kräfte.pdf[/url]
Versuch ein Bild einzufügen scheint nicht richtig zu sein sorry |
|
Nach oben |
|
|
Uhlig
Anmeldungsdatum: 10.03.2019 Beiträge: 8
|
Verfasst am: 15.03.2019, 12:10 Titel: |
|
|
Diese Methode wende ich für die Wirkung der Gravitation an.
Bild eines Kräfteparallelogramms mit 2 Kräften und einem beliebigen Winkel Ergebnis: Resultierende und Sin-Wert des neuen Winkels
Einen rechten Winkel am Ergebnis anlegen hat zur Folge, dass ich nur noch eine Seite habe und einen unbekannten Winkel somit auch keinen Tangens!! |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1213 Wohnort: Ruhrpott
|
Verfasst am: 15.03.2019, 13:12 Titel: |
|
|
Wenn du den Sinus des Winkels hast, kannst du mit der o. g. Funktion auch den Winkel berechnen. Ich habe sie noch einmal getestet, sie rechnet korrekt.
Vielleicht postest du einmal den entsprechenden Codeabschnitt, dann können wir gemeinsam auf Fehlersuche gehen.
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
Uhlig
Anmeldungsdatum: 10.03.2019 Beiträge: 8
|
Verfasst am: 15.03.2019, 18:58 Titel: |
|
|
Danke an alle!
Habe noch einmal alles behandelt. Mit Arcustan(Sin/Winkel(1-Sin²)) komme ich jetzt immer auf das richtige Ergebnis. Sin ist der berechnete Wert für den neuen Winkel und gilt wirklich für alle Winkel. Somit kann ich auch bei Qbasic bleiben. Freebasic habe ich mir angesehen und da müsste ich vieles neu programmieren.
Gruß und tschüss Uhlig |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1213 Wohnort: Ruhrpott
|
Verfasst am: 16.03.2019, 12:18 Titel: |
|
|
Viel Spass!
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
|