Zadanie pierwiastki wielomianu.

0

Cześć!
Mam do rozwiązania takie zadanie:
Mając dane n pierwiastków wielomianu n-tego stopnia gdzie an=1 należy podać n+1
współczynników tegoż wielomianu.
Np. dla danych : 2 -2 1
Wynikiem będzie: 1 1 -4 -4
Ponieważ (x-2)(x+2)(x-1)= x3 + x2 - 4x - 4

0

No i gdzie widzisz problem? Przecież wystarczy ci wykonać kilka prostych mnożeń. Probowałeś sobie to chociażby na kartce rozwiązać?

0

Próbowałem, ale nie mam pojęcia jak to zrobić.

0

Zrób to ręcznie na kartce, po czym spytaj sam siebie jak to zrobiłeś.

0

No mnożę nawiasy po kolei, ale ja nie mam pojęcia jak to zapisać. (x-2)(x+2)(x-1) = (x2 + 2x - 2x - 4)(x-1) = (x2 - 4)(x-1) = x3 - x2 - 4x + 4. W szczególności nie wiem jak zapisać w C++ skracanie wyrazów podobnych.

1

Zdefiniuj sobie wielomian jako tablicę współczynników przy:
x0, x1, x2 itd
czyli mnożysz trzy tablice (wielomiany):

-2 1
2 1
-1 1

ostatnie jedynki przy to współczynniki przy x1
mnożenie tak zdefiniowanych wielomianów jest trywialne:
c[i+k]+=a[i]*b[k]; - poprawione

0

To są wzory starego Viety:
http://pl.wikipedia.org/wiki/Wzory_Vi%C3%A8te%E2%80%99a

Przykładowo dla kwadratowego: ax^2 + bx + c = 0
wyliczamy pierwiastki - tradycyjnie:
x_{1,2} = \frac{-b +/- \sqrt{b^2-4ac}}{2a}>

no i z tego widać że:
x1 + x2 = -b/a
x1 * x2 = c/a

Potem dla trzeciego stopnia będzie chyba tak:
x1 + x2 + x3 = -b/a
x1x2 + x1x3 + x2x3 = c/a
x1 x2 x3 = -d/a

i jeszcze dla 4-go:
x1 + x2 + x3 + x4 = -b/a
x1x2 + x1x3 + x1x4 + x2x3 + x2x4 + x3x4 = c/a
x1x2x3 + x1x2x4 + ... = -d/a
x1x2x3x4 = e/a

5

@fur, trzymasz poziom. Zazwyczaj piszesz bzdury lub nie na temat. Tym razem jest nie na temat. Pytanie brzmiało: Jak wyznaczyć współczynniki znając pierwiastki? Ty napisałeś jak wyznaczyć pierwiastki znając współczynniki.

0
bogdans napisał(a):

@fur, trzymasz poziom. Zazwyczaj piszesz bzdury lub nie na temat. Tym razem jest nie na temat. Pytanie brzmiało: Jak wyznaczyć współczynniki znając pierwiastki? Ty napisałeś jak wyznaczyć pierwiastki znając współczynniki.

Oj, nie przesadzaj - nie jestem bogiem.

Wiadomo od około 200 lat że znając współczynniki wielomianu stopnia powyżej 5 nie da rady wyznaczyć jego zer - Gauss to udowodnił.

Wzory Viety służą do wyliczania współczynników gdy znamy zera.

obliczamy tak:
cn = -(x1 + x2 + ... xn)
...
c0 = (-1)^n * x1x2x3* ... xn; dla c_(n+1) = a = 1

0

Wiadomo od około 200 lat że znając współczynniki wielomianu stopnia powyżej 5 nie da rady wyznaczyć jego zer - Gauss to udowodnił.

Jaki znów Gauss? o_O
http://pl.wikipedia.org/wiki/Twierdzenie_Abela-Ruffiniego
I wcale nie jest prawdą że "nie da rady wyznaczyć zer" tylko że nie istnieje analityczna ogólna metoda wyznaczania zer dla wielomianów stopnia >=5.
Bo dla x5 to nawet ty byś sobie poradził z wyznaczeniem zer, a metod numerycznych dla tego problemu też jest cała masa.
Ale to taki mega offtop bo nijak sie to ma do wątku...

0

Ja na pewno poradziłbym sobie - gorzej z tobą.
Skuteczne metody do obliczania wszystkich zer wielomianów są dość skomplikowane,
i żaden pajac nawet po zaliczonej informatyce raczej tego nie zrobi - programiści są bardzo słabiutcy z metod numerycznych...

0

Może jednak podam minimalistyczną alternatywę do kodu od @krwq
http://ideone.com/UUrajA

1 użytkowników online, w tym zalogowanych: 0, gości: 1