Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Sin-Wert wandeln in Tan-Wert wandeln

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Uhlig



Anmeldungsdatum: 10.03.2019
Beiträge: 8

BeitragVerfasst am: 12.03.2019, 09:47    Titel: Sin-Wert wandeln in Tan-Wert wandeln Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 920
Wohnort: Ruhrpott

BeitragVerfasst am: 12.03.2019, 10:49    Titel: Antworten mit Zitat

Hallo und willkommen im Forum. lächeln

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
Benutzer-Profile anzeigen Private Nachricht senden
Uhlig



Anmeldungsdatum: 10.03.2019
Beiträge: 8

BeitragVerfasst am: 12.03.2019, 13:07    Titel: Sin-Wert wandeln in Tan-Wert wandeln Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Haubitze



Anmeldungsdatum: 14.10.2009
Beiträge: 106

BeitragVerfasst am: 12.03.2019, 15:54    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Uhlig



Anmeldungsdatum: 10.03.2019
Beiträge: 8

BeitragVerfasst am: 12.03.2019, 16:16    Titel: Sin-Wert wandeln in Tan-Wert wandeln Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Haubitze



Anmeldungsdatum: 14.10.2009
Beiträge: 106

BeitragVerfasst am: 12.03.2019, 16:26    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4236
Wohnort: ~/

BeitragVerfasst am: 12.03.2019, 18:35    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 920
Wohnort: Ruhrpott

BeitragVerfasst am: 13.03.2019, 10:00    Titel: Re: Sin-Wert wandeln in Tan-Wert wandeln Antworten mit Zitat

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. zwinkern

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Uhlig



Anmeldungsdatum: 10.03.2019
Beiträge: 8

BeitragVerfasst am: 13.03.2019, 16:54    Titel: Sin-Wert wandeln in Tan-Wert wandeln Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4236
Wohnort: ~/

BeitragVerfasst am: 13.03.2019, 19:53    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Uhlig



Anmeldungsdatum: 10.03.2019
Beiträge: 8

BeitragVerfasst am: 14.03.2019, 12:27    Titel: Antworten mit Zitat

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('mit dem Kopf durch die Mauer wollen')
Gruß Uhlig
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4236
Wohnort: ~/

BeitragVerfasst am: 14.03.2019, 19:14    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 920
Wohnort: Ruhrpott

BeitragVerfasst am: 15.03.2019, 01:03    Titel: Antworten mit Zitat

@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 lächeln ).

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, 11:57, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Uhlig



Anmeldungsdatum: 10.03.2019
Beiträge: 8

BeitragVerfasst am: 15.03.2019, 10:43    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Uhlig



Anmeldungsdatum: 10.03.2019
Beiträge: 8

BeitragVerfasst am: 15.03.2019, 11:10    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 920
Wohnort: Ruhrpott

BeitragVerfasst am: 15.03.2019, 12:12    Titel: Antworten mit Zitat

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. lächeln

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Uhlig



Anmeldungsdatum: 10.03.2019
Beiträge: 8

BeitragVerfasst am: 15.03.2019, 17:58    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 920
Wohnort: Ruhrpott

BeitragVerfasst am: 16.03.2019, 11:18    Titel: Antworten mit Zitat

Viel Spass! lächeln

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz