Robotrontechnik-Forum

Registrieren || Einloggen || Hilfe/FAQ || Suche || Mitglieder || Home || Statistik || Kalender || Admins Willkommen Gast! RSS

Robotrontechnik-Forum » Technische Diskussionen » cos(x) und arccos(x) mit Basic » Themenansicht

Autor Thread - Seiten: -1-
000
18.10.2020, 15:56 Uhr
wolle1945



Hallo an alle Mathe- und Basic-Fans.

ich habe 1987 bis 1989 mit meinem Eigenbau Heimcomputer BCS3 eine AG mit
Schülern der 9. und 10. Klasse geleitet. Mein Basic-Computer (Vers. 3.1)
kannte nur die vier Grundrechenarten. Trotzdem konnten wir kleine Spiele
programmieren und auch mathemat. Probleme lösen, wie Quadraht- und Kubik-
Wurzel oder cos(x) und arccos(x).
Leider finde ich meine Programmkassette nicht mehr. Ich habe nur noch einige
Skripte. In dieser Zeit gab es ja genug Zeitschriften, Broschüren und Bücher
für den Bau von Basiccomputern in der einfachen Version. Auch hier habe ich vor
2 Jahren den Boden aufgeräumt und es ist nicht mehr viel da.
Nochmals zu cos(x) und arccos(x), hier gab es auch Abhandlungen in der
Literatur.

Hier meine beiden Basic-Programme:

5 REM 'BERECHNUNG COS(X)'
10 CLS
20 INPUT 'X: ';X:PRINT 'GRAD'
22 PRINT
24 X=X*3.14159/180 => Grad -> Bogen
25 Z=0
30 X=X/2
40 Z=Z+1
50 IF X>0.3 GOTO 30
60 Y=(X*X)/2-3
70 Y=(Y*Y-3)/6
80 FOR I=1 TO Z
90 Y=2*Y*Y-1
100 NEXT
500 PRINT 'COS(X): ';Y
600 PRINT:GOTO 20
9999 END

5 REM 'BERECHNUNG ARCCOS(X)'
10 CLS
20 INPUT 'X: ';X:PRINT
30 Z=0
40 X=(X+1)/2:GOSUB 500
50 X=Y:Z=Z+1
60 IF X<0.9 GOTO 40
70 X=(1+2*X)/3:GOSUB 500
80 X=6*(1-Y):GOSUB 500
90 FOR I=1 TO Z
100 Y=2*Y
110 NEXT
115 Y=Y*180/3.141593 => Bogen -> Grad
120 PRINT 'Y: ';Y
130 GOTO 20
500 W=1 UP: Quadrahtwurzel
510 FOR I=1 TO 12
520 W=(X/W+W)*.5
530 NEXT
535 Y=W
540 RETURN
9999 END

Beide Progamme laufen ohne Probleme. Ich möchte trotzdem gerne wissen,
welche Formeln verbergen sich dahinter, wurden hiermit realisiert?

Hat jemand einen Hinweis auf Literatur, wo das näher beschrieben ist?
--
mfG wolle1945

Dieser Beitrag wurde am 18.10.2020 um 16:00 Uhr von wolle1945 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
18.10.2020, 18:03 Uhr
u.nickel



Hallo wolle,

such doch mal nach "numerische Aproximation" der Winkelfunktionen bei Tante Gxxx.
Das Cosinusprogramm scheint nach kurzem Durchlesen das Prinzip der Kleinwinkelnäherung mit MCLaurinscher Reihenentwicklung zu verwenden oder sowas ähnliches.

Gruß u.nickel
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
18.10.2020, 18:13 Uhr
Rolli



Cos(x) siehe "Kleine Enzyklopädie Mathematik", VEB Bibliographisches Institut Keipzig, S.503
arccos(x) ebenda S. 506
--
Wer Phantasie hat, ist noch lange kein Phantast
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
19.10.2020, 07:28 Uhr
wolle1945



schon mal vielen Dank
--
mfG wolle1945
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
004
19.10.2020, 09:40 Uhr
hellas



Wie schon angedeutet, einfach durch Reihenentwicklung approximieren.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
005
19.10.2020, 16:45 Uhr
wolle1945



@Rolli,
könntest Du die Seiten scannen und die Kopien zuschicken?
Oder gibt es einen Link, wo ich mir die Seiten ansehen kann?

@hellas,
wie müßte so eine Formel aussehen?
--
mfG wolle1945
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
006
19.10.2020, 18:50 Uhr
Wusel_1



Alles gut und schön, aber COS ist in jedem besseren BASIC-Programm vorhanden und muss nicht erst über eine Routine berechnet werden.
--
Beste Grüße Andreas
______________________________________
DL9UNF ex Y22MF es Y35ZF
JO42VP - DOK: Y43 - LDK: CE

*** wer glaubt, hört auf zu denken ***
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
007
19.10.2020, 19:44 Uhr
wolle1945




Zitat:
Wusel_1 schrieb
Alles gut und schön, aber COS ist in jedem besseren BASIC-Programm vorhanden und muss nicht erst über eine Routine berechnet werden.



wie ich in 000 geschrieben habe, hatte mein Basic-Eigenbau-Computer BCS3
(Vers. 3.1) nur die vier Grundrechenarten. Er hatte auch keine Wurzelberechnung.

deshalb musste ich arithmet. Programme selbst erstellen, was auch in einigen
liter. Beiträgen abgehandelt wurde. Nur hier scheint es nicht mehr viel zu geben.
Ich habe leider vor 2 Jahre meine Zeitschriften, wie "Funkamateur" und "Rundfunk
Fernseh Elektronik" entsorgt.
--
mfG wolle1945

Dieser Beitrag wurde am 19.10.2020 um 19:47 Uhr von wolle1945 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
008
19.10.2020, 20:20 Uhr
RenéB



Vielleicht könnte „Arithmetische Algorithmen der Mikrorechentechnik“ von Günter Jorke, Bernhard Lampe, Norbert Wengel

Hier ist mal das Inhaltsverzeichnis
https://www.deutsche-digitale-bibliothek.de/item/UPAK4SNRCG2SBIRRDVLTVU5I6HPI2SDT

Kosinus und Sinus sind leider nicht direkt dabei.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
009
19.10.2020, 21:04 Uhr
Zwangsrentner



Hallo vielleicht hilft dies


Heblik-Wissensspeicher BASIC / 1988
mal schnell gescannt
grüsse aussem harz
--
I'm just a truckle, but I don't like to truckle >TIMOTHY TRUCKLE<

Dieser Beitrag wurde am 19.10.2020 um 21:06 Uhr von Zwangsrentner editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
010
19.10.2020, 21:16 Uhr
hellas



Aus dem Netz abgepinselt. Taylor Reihenentwicklung für cos(x):

cos x = 1 - x^2/2! + x^4/4! - x^6/6! + ...

Das könntest du dann wie folgt in den vier Grundrechenarten schreiben:

cos x = 1- x*x/1*2 + x*x*x*x/(1*2*3*4) - x*x*x*x*x*x/(1*2*3*4*5*6)....

Die Reihe brichst du dann irgendwann ab. Je länger, desto genauer.
N-Fakultät kann man ja als Schleife berechnen lassen, die Vielfachen von x ebenfalls.

So würde ich zumindest beginnen.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
011
20.10.2020, 07:42 Uhr
wolle1945



@hellas,

vielen Dank, aber diese Berechnung gilt mehr für kleine Winkel, danach wird die
Ungenauigkeit immer größer, habe das schon probiert.
Meine 2 Programme in 000 sind eigentlich genau. Ich wollte nur einmal die
Formeln hierfür wissen.

Danke auch an die anderen.
--
mfG wolle1945

Dieser Beitrag wurde am 20.10.2020 um 07:42 Uhr von wolle1945 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
012
20.10.2020, 09:12 Uhr
volkerp
Default Group and Edit
Avatar von volkerp

Die cos-Berechnung in 000 ist i.W. das 4.Taylorpolynom. Für x zwischen -pi/4 und pi/4 ist das hinreichend genau.

Zeile 60+70
((x^2-3)^2-3)/6 = (x^2/12 -1) * x^2/2 + 1

s. dazu https://mathepedia.de/Naeherungsformeln_fuer_Sinus_und_Kosinus.html

Für größere x (x > 0.3) erfolgt eine Reduktion und anschließende Rückrechnung über
cos(2x)=cos^2(x)-sin^2(x) = cos^2(x)-(1-cos^2(x)) = 2*cos^2(x)-1

Das ggf. mehrfach. Dazu wird in Z die Anzahl der Reduktionen (Halbierungen von X) gezählt.
--
VolkerP

http://hc-ddr.hucki.net
(Z9001, Z1013, LC-80, ...)

Dieser Beitrag wurde am 20.10.2020 um 09:20 Uhr von volkerp editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
013
20.10.2020, 13:25 Uhr
wolle1945



@volkerp,

vielen Dank!
--
mfG wolle1945
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
014
21.10.2020, 09:09 Uhr
volkerp
Default Group and Edit
Avatar von volkerp

und noch für arccos:

' 40+50 Reduktion
x = sqrt((x+1)/2)
'60 solange x < 0.9 Reduktion

'70+80 Berechnung f. x > 0.9
arccos(x) = sqrt(6*(1-sqrt((2x+1)/3)))

'90 Rückrechnung
arccos(x;z+1) := 2*arccos(x;z)


Reduktion und Rückrechnung basiert auf folgender Formel:
2 arccos x = arccos (2x^2 -1)

Die Berechnung des arccos erschließt sich mir nicht, und passt auch nur für pos. x. Und es hätte x > 0.3 gereicht?

bei https://www.mathe-fa.de
kann man beide Funktionen eingeben und vergleichen

f(x) = sqrt(6*(1-sqrt((2*x+1)/3)))
g(x) = acos(x)
--
VolkerP

http://hc-ddr.hucki.net
(Z9001, Z1013, LC-80, ...)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
015
21.10.2020, 10:51 Uhr
wolle1945



@volkerp,

vielen Dank für die ausführliche Beschreibung.
Da habe ich als 75-jähr. zu tun, um alles zu verstehen.
In jungen Jahren war ich mal ein Mathe-As und nun?
--
mfG wolle1945
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
016
22.10.2020, 18:40 Uhr
wolle1945



@volkerp,

der Funktionsplotter ist ja hervorragend.
--
mfG wolle1945
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
Seiten: -1-     [ Technische Diskussionen ]  



Robotrontechnik-Forum

powered by ThWboard 3 Beta 2.84-php5
© by Paul Baecher & Felix Gonschorek