[ mayc @ 16.01.2003. 09:54 ] @
Molim vas da mi pomognete.
Trebam neku metodu za pronalazenje nul-tocki nekog polinoma.

Hvala!
[ avmusa @ 06.02.2003. 23:44 ] @
Postoji jedna tvrdnja (sledi iz Vietovif formula) da ako je nula celobrojna, onda ona deli slobodan clan polinoma... sto ce reci u primeru

x^2-5x+6 = (x-2)(x-3)

Nule polinoma su 2 i 3
Ti uzimas sa potencijalna resenja sve delioce broja 6 (opet, ako su resenja celobrojna)
Dakle, uzimas u obzir -1, 1, -2, 2, -3, 3, -6, 6 i ispitas da li je polinom u nekoj od tacaka jednak 0. AKo jeste, onda ga proglasavas za jednu nulu

Inace, verovatno znas da polinom n-tog stepena u ma tacno n nula u polju kompleksnih brojeva... i da ako je broj c kompleksna nula polinoma, onda je i njegova konjugovano-kompleksna vrednost takodje nula tog polinoma...
[ _owl_ @ 07.02.2003. 22:20 ] @
Jedna od najjednostavnijih metoda je metoda polovljenja intervala (zasniva se na I Kosi-Bolcanovoj teoremi). Prvo treba da nadjes interval na kome se nalazi samo jedna realna nula polinoma a na cijim je krajevima vrednost polinoma razlicitog znaka. Na intervalu postoji samo jedna nula ako je funkcija (u ovom slucaju polinom) monotona (sto se ispituje preko prvog izvoda). Kada utvrdis takav interval onda ga prepolovis (otud i ime metode) tj dobijes tacku cija je vrednost jednaka:
x=(a+b)/2
a i b granice intervala.
U sledecoj iteraciji suzavas interval i sa x zamenjujes a ili b (nula polinoma treba da ostane u intervalu). I tako sve dok f(x) ne postane blisko nuli.
Bilo bi zgodno da svako ko ostavi pitanje kaze i sa kolikim znanjem raspolaze (srednja/faks).
Normalno postoje i druge metode sa kojima mozes jos brze i efikasnije doci do realnih nula.
[ jeremy @ 30.04.2003. 13:56 ] @
Metoda polovljenja intervala kao i nesto brze konvergentne metode (secica, tangenta) su nestabilne u opstem slucaju (mala promena ulaznih parametara - koeficijenta polinoma mnogo utice na krajnji rezultat) bolja varijanta je pristupiti problemu sa druge strane, napisati matricu cije ce sopstvene vrednosti biti upravo nule trazenog polinoma, a zatim nekom numerickom metodom (npr QR) za odredjivanje sopstvenih vrednosti i sopstvenih vektora naci iste.

tako se problem moze mnogo stabilnije resiti,
da ovo nije lose pokazuje da tako matlab nalazi nule polinoma, mozes pogledati source matlabove funkcije za nule polinoma i videces da je jednostavna

[ jeremy @ 01.05.2003. 18:10 ] @
evo funkcije koju sam spomenuo
(za pronalazenje korena polinoma pomocu sopstvenih vrednosti)


function r = roots(c)
%ROOTS Find polynomial roots.
% ROOTS(C) computes the roots of the polynomial whose coefficients
% are the elements of the vector C. If C has N+1 components,
% the polynomial is C(1)*X^N + ... + C(N)*X + C(N+1).
%
% See also POLY, RESIDUE, FZERO.

% J.N. Little 3-17-86
% Copyright 1984-2000 The MathWorks, Inc.
% $Revision: 5.10 $ $Date: 2000/01/31 04:12:19 $

% ROOTS finds the eigenvalues of the associated companion matrix.

if size(c,1)>1 & size(c,2)>1
error('Must be a vector.')
end
c = c(:).';
n = size(c,2);
r = zeros(0,1);

inz = find(c);
if isempty(inz),
% All elements are zero
return
end

% Strip leading zeros and throw away.
% Strip trailing zeros, but remember them as roots at zero.
nnz = length(inz);
c = c(inz(1):inz(nnz));
r = zeros(n-inz(nnz),1);

% Polynomial roots via a companion matrix
n = length(c);
if n > 1
a = diag(ones(1,n-2),-1);
a(1,:) = -c(2:n) ./ c(1);
r = [r;eig(a)];
end
[ Neflernis @ 29.08.2003. 16:18 ] @
Koristi Hornerovu semu.