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
Zadanie pierwiastki wielomianu.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 50
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Space: the final frontier
- Postów: 26433
No i gdzie widzisz problem? Przecież wystarczy ci wykonać kilka prostych mnożeń. Probowałeś sobie to chociażby na kartce rozwiązać?
- Rejestracja: dni
- Ostatnio: dni
- Postów: 50
Próbowałem, ale nie mam pojęcia jak to zrobić.
- Rejestracja: dni
- Ostatnio: dni
Zrób to ręcznie na kartce, po czym spytaj sam siebie jak to zrobiłeś.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 50
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.
- Rejestracja: dni
- Ostatnio: dni
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
- Rejestracja: dni
- Ostatnio: dni
- Postów: 2520
- Rejestracja: dni
- Ostatnio: dni
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:
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
- Rejestracja: dni
- Ostatnio: dni
@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.
- Rejestracja: dni
- Ostatnio: dni
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
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Space: the final frontier
- Postów: 26433
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...
- Rejestracja: dni
- Ostatnio: dni
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...
- Rejestracja: dni
- Ostatnio: dni
Może jednak podam minimalistyczną alternatywę do kodu od @krwq
http://ideone.com/UUrajA