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ä..
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.
Aihe on jo aika vanha, joten et voi enää vastata siihen.