Tämä vinkki sisältää useita funktioita, jotka käsittelevät trigonometriaa. Mukana on mm. QBasicista puuttuvat trigonometriset funktiot, kosinilause, Pythagoraan lause, ym. Voit kopioida funktiot suoraan omaan ohjelmaan, eikä tekijää tarvitse mainita. :)
Kaikki trigonometriset funktiot
QBasicista puuttuu monia trigonometrisia funktioita. Kotangentti, sekantti, kosekantti, versaalisini, ekssekantti, sekä arkusfunktiot. Mutta kun lisäät nämä funktiot koodiisi, voit käyttää niitä. Funktioilla on QB:ssä samat nimet, kuin matematiikassa niiden lyhenteet. Funktioiden laskuohjeet on sovellettu Wikipedian artikkelista, joten älkäähän minulta kyselkö niiden toiminnasta. :)
Pythagoraan lause ja kosinilause
Näiden funktioiden avulla voidaan laskea kolmion sivujen pituuksia. Pythagoraan lauseessa voidaan päättää, mitkä sivut tiedetään. Funktiot ovat PYTC (tiedetään a ja b), PYTA (b ja c) ja PYTB (a ja c). Kosinilauseessa kerrotaan b-sivu, c-sivu ja gamma-kulma.
p.s: Mukana tulee myös kertoman laskufunktio, koska jotkut funktiot tarvitsevat sitä, mutta tokihan voit käyttää sitä omiin tarkoituksiisikin. Funktion nimi on KERTOMA.
' Loput trigonometriset funktiot FUNCTION COT(LUKU) 'kotangentti COT = 1 / TAN(LUKU) END FUNCTION FUNCTION SEC(LUKU) 'sekantti SEC = 1 / COS(LUKU) END FUNCTION FUNCTION CSC(LUKU) 'kosekantti CSC = 1 / COS(LUKU) END FUNCTION FUNCTION VERSIN(LUKU) 'versaalisini VERSIN = 1 - COS(LUKU) END FUNCTION FUNCTION EXSEC(LUKU) 'ekssekantti EXSEC = SEC(LUKU) - 1 END FUNCTION FUNCTION ARCSIN(LUKU) 'arkussini EIVALMIS = 0 FOR n = 0 TO 20 JOKU1 = KERTOMA(2 * n) JOKU2 = 2 ^ (2 * n) * (KERTOMA(n)) ^ 2 JOKU3 = LUKU ^ (2 * n + 1) JOKU4 = 2 * n + 1 PLUS = (JOKU1 / JOKU2) * (JOKU3 / JOKU4) EIVALMIS = EIVALMIS + PLUS NEXT SUMMA ARCSIN = EIVALMIS END FUNCTION FUNCTION ARCCOS(LUKU) 'arkuskosini ARCCOS = (3.141593 / 2) - ARCSIN(LUKU) END FUNCTION FUNCTION ARCTAN(LUKU) 'arkustangentti EIVALMIS = 0 FOR n = 0 TO 20 JOKU1 = (-1) ^ n * z ^ (2 * n + 1) JOKU2 = 2 * + 1 PLUS = JOKU1 / JOKU2 EIVALMIS = EIVALMIS + PLUS NEXT n ARCTAN = EIVALMIS END FUNCTION FUNCTION ARCCSC(LUKU) 'arkuskosekantti ARCCSC = ARCSIN(LUKU ^ -1) END FUNCTION FUNCTION ARCSEC(LUKU) 'arkussekantti ARCSEC = ARCCOS(LUKU ^ -1) END FUNCTION FUNCTION ARCCOT(LUKU) 'arkuskotangentti ARCCOT = (3.141593 / 2) - ARCTAN(LUKU) END FUNCTION
' Pythagoraan lause ja kosinilause FUNCTION PYTC(A, B) C = SQR((A ^ 2) + (B ^ 2)) END FUNCTION FUNCTION PYTA(B, C) A = SQR((C ^ 2) - (B ^ 2)) END FUNCTION FUNCTION PYTA(A, C) B = SQR((C ^ 2) - (A ^ 2)) END FUNCTION
' Apufunktiot FUNCTION KERTOMA(LUKU) 'kertoma EIVALMIS = 0 FOR k = 1 to LUKU EIVALMIS = EIVALMIS * k NEXT k KERTOMA = EIVALMIS END FUNCTION
"eikä tekijää tarvitse mainita" tästä plussa
ja "Kommentteja.." tästä miinus.
arkustangentissa taitaa olla turha EIVALMIS = 0, ja muuttujanimet ovat ylipäätään erikoisen mitäänsanomattomia. Turhaa koodia esim arkussinin laskennassa.
No niin, poistin tuon ekan turhan kommentin, joka minulla on tapana laittaa.. :) ja sitten poistin turhaa koodia, jonka on oikeastaan tarkoitus vain "koristaa" koodia. Ja tuon EIVALMIS = 0 -rivin laitan vain ihan varmuuden vuoksi.. Ja muuttujien nimet ovat todellakin typeriä. Ja korjasin samalla virheitä.
p.s. Tein tuon sitten aika kiireessä..
Ehkä jopa hieman turhaa nipotusta, mutta "tein tuon kiireessä..."-koodeja ehkä ei putkaan tarvitsisi lähetellä. Kyllä nopeat koodit ovat jees, mutta jos kesken ohjelmointituokiota tulee mieleen: "Voisinpas tehdä nopeasti tässä esimerkin ohjelmointiputkaan trigonometrisistä funktioista!" ei jälki voi aina olla hyvää. :(
Todellakin muuttujat ovat aika kädettömillä nimityksillä varustettuja sekä hieman turhaa koodia havaittavissa.
(Sitten aivan pienenä hassutuksena: voisit laskea nuo mahdolliset neliöjuuret sekä käyttämiesi trigonometristen funktioiden arvot valmiiseen taulukkoon, jotta koodi sujuisi mallikkaammin. ^^)
Niin, siis tein tuon aluksi aika kiireessä ja palasin sitten korjaamaan kun oli enemmän aikaa... Ja miksi neliö juuri pitäisi laskea erikseen, kun QB:ssä on valmiina sen laskufunktio? Ja mitä meinaat tuolla funktioiden arvojen laittamisella taulukkoon?
Neliöjuuren laskeminen on hitaampaa, kuin suoran taulukkoarvon käyttäminen. :>
Aihe on jo aika vanha, joten et voi enää vastata siihen.