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.