liczenie pierwiastkow wielomianu

0

nie wiem czy to dobry dzial na zamieszczenie tego postu, ale zaryzykuje (najwyzej dostane w skore)

Mam do napisania program, ktory liczy pierwiastki wielomianu - mam juz napisane czesc wg ktorej do wielomianu obojetnie jakiej formy podstawia sie za x dowolna liczba...

i mam problem z petla ktorej istota jest taka, ze - za x w wielomianie podstawiamy np. -1 i 1 potem wyliczamy pierwiastki (miejsca zerowe) tychze wielomianow - jezeli wyniki sa przeciwnych znakow to ze sredniej tych x wyliczamy kolejny x i wyliczamy dla niego miejsce zerowe. teraz trzeba sprawdzic ktore miejsce zerowe jest +a ktore - i z tych dwoch wyciagnac srednia ... i znowy obliczamy miejsce zerowe i sprawdzamy ktore jest + a ktore - no i tak iles tam razy...

no i nie mam pomyslu na petle ktora sprawdzalaby czy kolejne miejsca zerowe sa ujemne czy dodatnie no i wyliczala srednia....

jazeli ktos mialby jakis pomysl lub sugestie to bardzo prosze o pomoc/wypowiedz

pozdrawiam
KorKi

0
function Licz_Wiel(x:real):real;
begin
// (...)
  Result:=Wartość_Wielomianu_dla_podanego_x; // bo mówiłeś że wiesz jak to zrobic :P
end;

procedure TForm1.Button1Click(Sender: TObject);
var licznik:integer;
    Wiel:packed
    record
      X1,X2:real;  // granice przedziału dla którego liczysz
      XTemp:real;
      FX1,FX2:real;
      FTemp:real;
    end;
begin
  licznik:=0;
  Wiel.X1:=-100;  // albo jakieś inne wartości od których
  Wiel.X2:=100;   //  chcesz zacząć wyszukiwanie
  repeat
    licznik:=licznik+1;
    Wiel.XTemp:=(Wiel.X1+wiel.X2)/2;
    Wiel.FX1:=Licz_Wiel(Wiel.X1);
    Wiel.FX2:=Licz_Wiel(Wiel.X2);
    Wiel.FTemp:=Licz_Wiel((Wiel.X1+wiel.X2)/2);
    if not ((Wiel.FX1>0)and(Wiel.FX2>0))or((Wiel.FX1<0)and(Wiel.FX2<0)) then
    if (Wiel.FX1>0)and(Wiel.FTemp>0) then Wiel.X1:=Wiel.XTemp else Wiel.X2:=Wiel.XTemp
    else Showmessage('Ni ma :P');
  until licznik=40;  // tu podaj ile razy to ma zrobić
end;

Głowy nie dam że to działa bo nie chce mi sie sprawdzać :P ale przynajmniej juz masz jakiś trop :>

//// wiem że real nie powinno sie używać ale ja się do neigo przywiązałem :P

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