Kezdőoldal » Számítástechnika » Programozás » Pythonban miért nem számolja...

Pythonban miért nem számolja jól a tangenst?

Figyelt kérdés

Ezt írom be:


k = math.tan(math.radians(90))

print(k)


A Python kiírja:

1.633123935319537e+16


Nem tudom hogy jöhetett ki ez az érték, amikor a számológéppel -1.9952004-t számolok.

Inverz tangenssel meg 1.55968567-et, tehát akárhogy számolok a tangenssel, nem ez az érték jön ki. Most akkor ki számol rosszul?

Mert én világ életemben így számoltam (a számológépem megfelelően van beállítva, hogy jól számolja a szögfüggvényeket), szóval nem tudom mi lehet a baj.


És azt sem tudom hogy kell számolni Pythonban inverz tangenssel, amikor pl tg(90) = x van megadva.


2020. máj. 7. 01:49
 1/4 A kérdező kommentje:
vagy tg(x) = 90
2020. máj. 7. 01:50
 2/4 anonim ***** válasza:
100%

Kezdjük ott, hogy tan(90°) végtelen, szóval a Python csak kiköp rá egy nagyon magas számot, de ez nem 'megoldás'.


Másrészt, leellenőriztem az értékeket, és arra jutottam, hogy rosszul használod a számológéped. A -1.9952004 érték akkor jöhet ki neked, ha radiánban számolsz, de 90-et adsz meg pi/2 helyett. A Python kód fent átalakítja a 90-et radiánba, és ezért a 'helyes' választ köpi ki.

2020. máj. 7. 02:39
Hasznos számodra ez a válasz?
 3/4 anonim ***** válasza:
100%

A Python - meg egyáltalán, a programozási nyelvek többsége - nem egy algebrai számítási rendszer (mint pl. a Maple), hanem egy megadott pontosságokat támogató programozási nyelv. Igaz, hogy a felhasználó elől elrejti az adattípusokat, de a háttérben ugyanúgy megadott pontosságon ábrázolt számokkal dolgozik, mint akármelyik másik nyelv. Ami eleve csak akkor lesz teljesen pontos, ha az eredmény egész, vagy véges tizedestört, de ezen esetekben sem biztos, tekintve, hogy az egyes számítások során kerekítési hibák keletkezhetnek.

A másik dolog: a Python nem gondolkodik. Ő egy megadott algoritmus alapján számol. Ha nem implementáltak ebben az algoritmusban egy direkt ellenőrzést, hogy nem próbálsz-e lehetetlen értékkel számolni, akkor bizony a szakadási helyeken fix, hogy hibás eredményt fog dobni. (Bár nem is lenne könnyű ezt implementálni, tekintve, hogy a 90° radiánban irracionális, azaz a gép számára nem ábrázolható. Tehát a szög értéke kerekítődik, és máris más lesz az eredmény.)


Te pedig ezek szerint világ életedben rosszul használtad a számológépedet, ha fokokban akartál szögfüggvényeket számolni. Ugyanis tg 90-re hibát kell, hogy adjon. A számológéped radiánra van álíltva, és amit te írsz, az 90 radiánnak a tangense. Ami ugye nem azonos 90 fokkal.

2020. máj. 7. 08:25
Hasznos számodra ez a válasz?
 4/4 anonim ***** válasza:

#3 "...Ami eleve csak akkor lesz teljesen pontos, ha az eredmény egész, vagy véges tizedestört"


Legyen véges kettedes tört, és akkor pontosak voltunk.

2020. máj. 7. 13:54
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!