Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: QB: Kolmannen asteen yhtälö

Fisher [29.11.2004 22:16:22]

#

Tässä olisi 3. asteen yhtälön laskentasysteemi, joka ei toimi.

DEFDBL A-Z

CLS
PRINT "anna yhtälön x3+px=s arvot:"
INPUT "p, s: ", p, s

juuret = ((p * p * p) / 27) + ((s * s) / 4)

PRINT "debug:"; juuret
PRINT

PRINT "Tällä 3. asteen yhtälöllä on aina tasan yksi juuri:"

PRINT

nelio = SQR(juuret)
kuutioa = ((s / 2) + nelio)
kuutiob = ((s / 2) - nelio)
PRINT kuutiob
PRINT 1 - SQR(juuret)
kuutioa = kuutioa ^ (1 / 3)
kuutiob = kuutiob ^ (1 / 3)




tulos = kuutioa + kuutiob
PRINT "Juuren likiarvo on: "; tulos

Mitä tossa on vikana? Ohjelma kaatuu kaikilla arvoilla. Miten sen voi korjata?

EDIT: Ai niin, tohon tais jäädä pari debug-viestiä..

hunajavohveli [29.11.2004 22:20:35]

#

Johtuu siitä, että kuutiob on tuossa lopussa negatiivinen, eikä negatiivista lukua voi (minun tietääkseni ainakaan QB:llä) korottaa ei-kokonaisluku-potenssiin. Johtuu luultavasti siitä, ettei voida sanoa, tulisiko luvusta sitten negatiivinen vai positiivinen, sillä on aika vaikeaa ajatella, miten luku voitaisiin kertoa itsellään esim. puoli kertaa. Matemaattisesti tuo toki onnistuu, mutta "oikeasti" se on mahdotonta.
Edit: Tuo ratkaisukaava ei taida muuten oikein toimia noin vai olenko väärässä? Niin ja ei tuota kai voi mitenkään korjata, paitsi voit tietysti muuttaa sen luvun positiiviseksi ABS-funktiolla.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta