B
BAT_MAN
Guest
Kan noen forklare meg logikken for funksjonen filen selv kommentar er gitt, men jeg var ikke i stand til å forstå
funksjon Factors = faktorisera (polyn)
format long; Faktorer = [];
% Bruk terskel 1e-8 i stedet for 0 til konto for
% Presisjon effekter
Treske = 1e-8;
%
proots = røtter (polyn);% få nuller av polynom
len = lengde (proots);% få antall nuller
%
while (len> 1)
if (abs (forestille (proots (1))) <treske)% hvis null er en reell null
fac = [1-real (proots (1))];
% Konstruere faktor med proots (1) som null
Faktorer = [Factors; [fac 0]];
else% hvis zero har imaginære delen får alle nuller hvis
% Forestille del er-ve av imaginære delen av proots (1)
negimag = forestille (proots) forestille (proots (1));
% Får alle nuller som har samme reell rolle som proot (1)
samereal = real (proots)-real (proots (1));
% finner det komplekse konjugerte null
index = find (abs (negimag) <treske og abs (samereal) <treske);
if (index)% hvis de komplekse konjugerte eksisterer
fac = [1 -2 * real (proots (1)) ABS (proots (1)) ^ 2];
% form 2dre orden faktoren
Faktorer = [Factors; fac];
else% hvis kompleks konjugert finnes ikke
fac = [1-proots (1)];
Faktorer = [Factors; [fac 0]];
slutt
slutt
polyn = deconv (polyn, fac);
% deconvolve den 1st/2nd rekkefølgen faktor fra polyn
proots = røtter (polyn);% fastsette nye nuller
len = lengde (polyn);% fastslå antall nuller
slutt
funksjon Factors = faktorisera (polyn)
format long; Faktorer = [];
% Bruk terskel 1e-8 i stedet for 0 til konto for
% Presisjon effekter
Treske = 1e-8;
%
proots = røtter (polyn);% få nuller av polynom
len = lengde (proots);% få antall nuller
%
while (len> 1)
if (abs (forestille (proots (1))) <treske)% hvis null er en reell null
fac = [1-real (proots (1))];
% Konstruere faktor med proots (1) som null
Faktorer = [Factors; [fac 0]];
else% hvis zero har imaginære delen får alle nuller hvis
% Forestille del er-ve av imaginære delen av proots (1)
negimag = forestille (proots) forestille (proots (1));
% Får alle nuller som har samme reell rolle som proot (1)
samereal = real (proots)-real (proots (1));
% finner det komplekse konjugerte null
index = find (abs (negimag) <treske og abs (samereal) <treske);
if (index)% hvis de komplekse konjugerte eksisterer
fac = [1 -2 * real (proots (1)) ABS (proots (1)) ^ 2];
% form 2dre orden faktoren
Faktorer = [Factors; fac];
else% hvis kompleks konjugert finnes ikke
fac = [1-proots (1)];
Faktorer = [Factors; [fac 0]];
slutt
slutt
polyn = deconv (polyn, fac);
% deconvolve den 1st/2nd rekkefølgen faktor fra polyn
proots = røtter (polyn);% fastsette nye nuller
len = lengde (polyn);% fastslå antall nuller
slutt