Vinnaren i pepparkakshustävlingen!
  • 1
  • 2
2004-09-02, 20:27
  #1
Medlem
Hej!
Jag vet inte om det här är rätt forum att posta detta i, men eftersom jag håller på att programmera en (lite mer avancerad) räknare i ASP så postar jag här ändå. Jag undrar alltså om det är någon som har en bra formel att lösa tredjegradsekvationer på? En som gör det lätt att lägga in i ett script så att man bara behöver ange A, B, C och D för att få reda på alla tre X-värdena. Jag har letat lite runt på internet men de lösningar jag har hittat har inte stämt överens med min riktiga miniräknare (Ti-83 Plus SE).

Jag vill alltså ha en formel som kan lösa Ax³ + Bx² + Cx + D = 0. Min nuvarande formel är:

x1 = -b/(3*a) - (2^(1/3)*(-b^2 + 3*a*c))/(3*a*(-2*b^3 + 9*a*b*c - 27*a^2*d + (4*(-b^2 + 3*a*c)^3 + (-2*b^3 + 9*a*b*c - 27*a^2*d)^2)^0.5)^(1/3)) + (-2*b^3 + 9*a*b*c - 27*a^2*d + (4*(-b^2 + 3*a*c)^3 + (-2*b^3 + 9*a*b*c - 27*a^2*d)^2)^0.5)^(1/3)/(3*2^(1/3)*a)

x2 = -b/(3*a) + ((1 + i*(3)^0.5)*(-b^2 + 3*a*c))/(3*2^(2/3)*a*(-2*b^3 + 9*a*b*c - 27*a^2*d + (4*(-b^2 + 3*a*c)^3 + (-2*b^3 + 9*a*b*c - 27*a^2*d)^2)^0.5)^(1/3)) - (1 - i*(3)^0.5)*(-2*b^3 + 9*a*b*c - 27*a^2*d + (4*(-b^2 + 3*a*c)^3 + (-2*b^3 + 9*a*b*c - 27*a^2*d)^2)^0.5)^(1/3)/(6*2^(1/3)*a)

Som jag hittade på susning.nu, men den ger fel svar och lösningen för x3 överanstämmer med x2 :P
Citera
2004-09-02, 21:56
  #2
Medlem
Ben Hogans avatar
Jag känner inte till någon generell analytisk metod (som för andragradsekvationer) för att lösa tredjegradsekvationer, men det borde ju finnas numeriska metoder för det...
Citera
2004-09-02, 22:23
  #3
Medlem
gregerolles avatar
Citat:
Ursprungligen postat av Ben Hogan
Jag känner inte till någon generell analytisk metod (som för andragradsekvationer) för att lösa tredjegradsekvationer, men det borde ju finnas numeriska metoder för det...

Nu minns jag inte min gymnasiematte helt och hållet, men under vissa omständigheter kan man lösa tredjegradsekvationer som om det vore en andragradsekvation..

Har för mig att det är dom som kan skrivas om på formen:
x(Ax²+Bx+C)=0


inte för att det är något svar på frågan iofs..
Citera
2004-09-02, 22:55
  #4
Medlem
Ben Hogans avatar
Citat:
Ursprungligen postat av gregerolle
Nu minns jag inte min gymnasiematte helt och hållet, men under vissa omständigheter kan man lösa tredjegradsekvationer som om det vore en andragradsekvation..

Har för mig att det är dom som kan skrivas om på formen:
x(Ax²+Bx+C)=0


inte för att det är något svar på frågan iofs..

Nej, det är ju inte det.
Om ekvationerna är "snälla" som den du gav (D=0), så är det ju egentligen
(nåt andragradspolynom) * x = 0


Ett sätt är ju att försöka att dela upp polynomet i sina faktorer. Om man kan hitta en rot (tex med newton-raphsons metod), så kan man genom polynomdivision få det till en andragradsekvation istället.
Citera
2004-09-02, 23:04
  #5
Medlem
Ben Hogans avatar
Efter ca 10 minuters ihärdigt sökande hittade jag följande:

http://www.nsc.liu.se/~boein/f90/b12.html#12.2
Ett program som beräknar alla rötter till en n:te gradsekvation, där A, B, C och D får vara komplexa. Andragradsekvationerna borde alltså vara "bit av kaka".
Implementationen är i fortran, men den verkar välkommenterad
och är inte så svår att förstå...

Tyvärr verkar det som om det finns medvetna fel inlagda (det är en kursuppgift verkar det som), men det enda jag hittat som är "allvarligt" är
i subrutinen Horner:

Kod:
COMPLEX A(1:10), B(0:10), Z, F, FPRIM, BI, CI 

ska vara
Kod:
COMPLEX A(0:10), B(1:10), Z, F, FPRIM, BI, CI

Se upp med oavslutade if-satser också...
Citera
2004-09-03, 03:40
  #6
Medlem
ifall det är en dator som ska göra jobbet så är det ju ingen fara att använda sig utav numeriska metoder tycker jag, tiden är ju försumbar om det inte handlar om väldigt många tal..
annars kan du kolla på http://mathworld.wolfram.com/CubicEquation.html och se om du lyckas förstå nånting jag gör det iaf inte
Citera
2004-09-03, 09:26
  #7
Medlem
Carpe Diems avatar
Det finns en analytisk lösning för tredjegradsekvationer. Jag tror att du kan finna lösningen i t.ex. standard mathemathical tabels.
Citera
2004-09-03, 10:43
  #8
Medlem
BorisTheSpiders avatar
Citat:
Det finns en analytisk lösning för tredjegradsekvationer. Jag tror att du kan finna lösningen i t.ex. standard mathemathical tabels.

Den lösningen är inte att leka med. I princip oanvändbar tyvärr.
Citera
2004-09-03, 14:58
  #9
Medlem
Stockos avatar
http://en.wikipedia.org/wiki/Cubic_equation <- Den metoden fungerar bra.
Citera
2004-09-03, 16:31
  #10
Banned
gTabs avatar
får jag gissa a,b,c,d,x = 0 ?
Citera
2004-09-03, 17:21
  #11
Medlem
Nu vet jag inte hur bevandrad du är i matematik, men för att lösa en generell 3-grads (el högre) ekvation finns ingen allmän formel.
Vad jag rekommenderar att du använder, är t ex Newton-Raphsons metod.

N-R:s metod är: x(n+1)=x(n)-f(x)/f'(x)

Metoden går ut på att man "gissar en rot" sen itererar man fram en lösning.
Låter det konstigt? Om du inte förstår så hjälper jag gärna till och förklarar mer.
Citera
2004-09-03, 21:15
  #12
Medlem
Eremitens avatar
Citat:
Ursprungligen postat av Kalle Balonka
Nu vet jag inte hur bevandrad du är i matematik, men för att lösa en generell 3-grads (el högre) ekvation finns ingen allmän formel.
Det är mer än tio år sedan jag pluggade matematik på universitetet, så mycket är glömt, men visst sjutton finns det allmänna formler för att lösa tredjegradsekvationer, det visades redan på 1500-talet (för tredje- och fjärdegradsekvationer). De är emellertid alltför komplicerade för att vara praktiskt användbara. För ekvationer av femte graden och högre existerar emellertid inga liknande formler, vilket visades av Abel och Galois i början av 1800-talet.
Citera
  • 1
  • 2

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback