ein taschenrechner

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
roschi
User
Beiträge: 225
Registriert: Samstag 29. März 2008, 18:58
Wohnort: Thueringen, Deutschland
Kontaktdaten:

hallo!

ich habe mal wieder ein problem, bei dem ich eure hilfe braeuchte:

ich habe einen taschenrechner programmiert, der unteranderem 'sin', 'tan' und 'cos' aus dem 'math'-modul nutzt. nun habe ich das problem, dass diese funktionen die werte im bogenmaß liefern. ich moechte aber, dass man den taschenrechner auch auf altgrad und neugrad umstellen kann. nun weiß ich aber nicht, welche rueckgaben ich wie umwandeln muss. ich habe da schonmal ein paar versuche gemacht...

Code: Alles auswählen

def dcos(x):
  return cos(radians(x))

def dsin(x):
  return sin(radians(x))

def dtan(x):
  return tan(radians(x))
ist das so richtig? wenn ja, wie mache ich das ganze dann mit 'acos', 'asin', 'atan', ...

es waere sehr schoen, wenn ihr mir dabei weiterhelfen koenntet!

mfg
roschi
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Du musst dir einfach nur Konvertierfunktionen zwischen Altgrad und Neugrad schreiben, das ist alles. Eben so wie ``radians()`` und ``degrees``.

Etwa Neugrad:
Bild
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
roschi
User
Beiträge: 225
Registriert: Samstag 29. März 2008, 18:58
Wohnort: Thueringen, Deutschland
Kontaktdaten:

hallo!

erstmal danke fuer die schnelle antwort.

ja, so etwas habe ich ja im o. g. code bereits angewandt.
nur wenn ich das gleiche mit der 'atan'-funktion mache, dann erscheint nicht das, was mir mein taschenrechner dazu sagt.

mein taschenrechner sagt im altgrad-modus:
atan(5): 78,69006752598
mein programm:
atan(radians(5)): 0,0870459452885

wie soll ich das verstehen?

mfg
roschi
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Du rechtnest ja auch mit Äpfeln und Birnen:

Code: Alles auswählen

>>> import math
>>> print math.degrees(math.atan(5))
78.690067525979785
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
roschi
User
Beiträge: 225
Registriert: Samstag 29. März 2008, 18:58
Wohnort: Thueringen, Deutschland
Kontaktdaten:

hallo!

sehr gut! danke! das wollte ich wissen.
aber jetzt habe ich noch ein problem:
wie kriege ich das jetzt noch in neugrad?

mfg
roschi
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

roschi hat geschrieben:wie kriege ich das jetzt noch in neugrad?
Wie du Bogenmaß in Neugrad konvertierst überlasse ich dir mal als Übung. Da nimmst du einfach die Umrechnungsformel und fertig.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
roschi
User
Beiträge: 225
Registriert: Samstag 29. März 2008, 18:58
Wohnort: Thueringen, Deutschland
Kontaktdaten:

hallo,

aehm... gibt es diese formel auch irgendwo als nicht-grafik?
ich kann die naemlich leider nicht sehen... (gewisse augenprobleme :( )

mfg
roschi
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Leonidas hat geschrieben:Du musst dir einfach nur Konvertierfunktionen zwischen Altgrad und Neugrad schreiben, das ist alles. Eben so wie ``radians()`` und ``degrees``.

Etwa Neugrad:
Bild
1 gon = (PI/200) rad
1 gon = 0.0157079633 rad

;)
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Wenn du nicht selbst herausbekommst, wie du Bogenmaß - Altgrad - Neugrad ineinander umwandelst, dann würde ich mal behaupten, brauchst du auch keinen Taschenrechner, der das kann.

Statte deinen Taschenrechner doch mal mit Funktionen aus, die "normale" (nicht programmierbare, nicht graphikfähige, nicht CAS-) Taschenrechner nicht haben, z.B. die Signum-Funktion, den ggT von zwei Zahlen, die Teilermenge einer Zahl, die Teilersumme einer Zahl, die Quersumme einer Zahl, ob eine Zahl eine Primzahl ist bzw. die Primfaktorzerlegung einer Zahl u.ä.

Bei der Implementierung dieser Funktionen lernst du ganz sicher mehr Python-Grundlagen als durch die Umwandlung verschiedener Einheiten für die Winkelmessung.
Benutzeravatar
roschi
User
Beiträge: 225
Registriert: Samstag 29. März 2008, 18:58
Wohnort: Thueringen, Deutschland
Kontaktdaten:

Bei der Implementierung dieser Funktionen lernst du ganz sicher mehr Python-Grundlagen als durch die Umwandlung verschiedener Einheiten für die Winkelmessung.
ja, das mag schon sein, aber ich wollte eben einfach mal einen rechner schreiben, der so etwas kann. ggt zum beispiel kann mein taschenrechner ja auch schon, und viele andere der von dir genannten funktionen werden auch noch folgen. danke fuer die vielen vorschlaege!

vielen dank auch fuer die "formeluebersetzung" :), mit deren hilfe ich es nun geschafft habe, atan, acos und asin in neugrad umzuwandeln. cos, sin, tan wollen aber immer noch nicht so recht... koenntet ihr mir nicht sagen, was ich da anders machen muss?

mfg
roschi
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

roschi hat geschrieben:cos, sin, tan wollen aber immer noch nicht so recht... koenntet ihr mir nicht sagen, was ich da anders machen muss?
Wie meinen? Rechnet Sinus falsch?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
roschi
User
Beiträge: 225
Registriert: Samstag 29. März 2008, 18:58
Wohnort: Thueringen, Deutschland
Kontaktdaten:

nein.

den arkussinus von bspw. -1 in neugrad errechne ich mit:

Code: Alles auswählen

asin(-1)*200/math.pi
das stimmt mit dem ueberein, was mein taschenrechner sagt.
nun weiß ich aber nicht, wie ich bspw. den kosinus von 5 in neugrad ausrechnen soll. mein taschenrechner sagt dazu 0,99691733373313. wenn ich jetzt aber

Code: Alles auswählen

cos(5)*200/math.pi
ausfuehre, dann erhalte ich 18,0584955939.

ich weiß nicht, was ich da falsch mache.

mfg
roschi
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Ist doch eigentlich logisch: Wenn du cos(5) schreibst, dann wird die 5 natürlich als rad interpretiert. Du musst sie also VORHER in rad umwandeln. Der Faktor "200/math.pi" macht beim Kosinus gar keinen Sinn.

cos(gon2rad(5))
Zuletzt geändert von EyDu am Samstag 7. Juni 2008, 19:21, insgesamt 1-mal geändert.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Du gibst da 5 in Gradmaß an (alle Winkelfunktionen nemen Gradmaß). Du musst deine Neugrad also zuerst ins Bogenmaß konvertieren.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

roschi hat geschrieben: ich weiß nicht, was ich da falsch mache.
Es hilft sich klarzumachen, dass sin, cos, tan und asin, acos, atan jeweils vertauschte Definitions-/Wertebereiche haben.
Sprich: Der asin liefert einen Winkel zurück -> Konvertierung des Rückgabewerts. Der sin operiert mit einem Winkel -> Konvertierung des Arguments.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Benutzeravatar
roschi
User
Beiträge: 225
Registriert: Samstag 29. März 2008, 18:58
Wohnort: Thueringen, Deutschland
Kontaktdaten:

EyDu hat geschrieben:Ist doch eigentlich logisch
ja, ist es eigentlich wirklich! :D

vielen dank!

meine funktionen funktionieren jetzt einwandfrei.

aber ich habe noch ein anderes problem:
gibt es eine moeglichkeit, eine eingabe vom benutzer, z. b.:
10/20
so umzuwandeln, dass er aus allen integern fließkommazahlen macht? etwa so:
10,0/20,0
damit koennte ich naemlich erreichen, dass der benutzer bei eingabe des o. g. befehls nicht 0 zu sehen bekommt, sondern 0.5, was ja auch das richtige ergebnis fuer die aufgabe waehre.

mfg
roschi
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Code: Alles auswählen

from __future__ import division
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Benutzeravatar
roschi
User
Beiträge: 225
Registriert: Samstag 29. März 2008, 18:58
Wohnort: Thueringen, Deutschland
Kontaktdaten:

wunderbar! ich wusste gar nicht, dass es sowas gibt.

ich bedanke mich nun nochmal ganz herzlich fuer die viele hilfe!

mfg
roschi
Antworten