[C++] miejsce zerowe wielomianu

0

Witam.

Chcialbym napisac program obliczajacy rekurencyjnie miejsce zerowe wielomianu. napisalem juz czesc, ale wiecej niestety nie potrafie, nie mam pomyslu. Wklejam napisany kod, prosze o pomoc. #include <cstdlib>
#include <iostream>

using namespace std;

float horner(int k, float tablica[], float x)
{
if (k==0)
return tablica[0]*x;
else
return horner(k-1,tablica,x)*x+tablica[k];
}

int main(int argc, char *argv[])
{
int k;
int x;
float tablica[];

cout << "podaj stopien wielomianu ";
cin >> k;

for(int i=1; i=k; i++)
{
cout << "podaj wspolczynniki ";
cin >> tablica[];
}

cout << " podaj wartosc argumentu ";
cin >> x;

horner(k);

getchar();
cin.ignore();
return 0;
}

0

Nie wiem, czy rekurencyjnie jest najlepiej do wykorzystywać. Myślę że wystarczy to robić iteracyjnie, np. przez połowienie przedziału, co sądzę że jest najprostszym rozwiązaniem.
Miejsca zerowe znajduje tylko na pewnym przedziale, jak kazdy sposób.
Zwraca niestety tylko jedno miejsce zerowe.

Jest jeszcze metoda newtona ma ten sam minus, zwracaniatylko jednego miejsca zerowego.
To wszystko da się przystosować, ale aby to odpowiednio zrobić trzeba jednak wykorzystać trochę matematyki.
Wprzypadlku Newtona oprócz podstaw będą to jeszcze informacje o stycznych(najlepiej wprowadzić granicę błędu bo może nie znaleŹć). Jednak z tego co pamiętam oblicza szybciej.

0

Czy ty aby na pewno chcesz liczyc miejsca zerowe? Bo jak na moje oko to probujesz liczyc wartosc funkcji w punkcie.

A jezeli chodzi o miejsca zerowe, to dodam tylko ze najkorzystniejsza chyba i w miare prosta do zaimplementowania by byla metoda mieszana - polowienie przedzialu aby znalezc pierwsze przyblizenie, a potem metoda Newtona.
Oczywiscie to ma sens tylko w przypadku pierwiastkow jednokrotnych. Dla wielokrotnych mozna by bylo liczyc pierwiastki pochodnych aby obnizyc krotnosc i weryfikowac je...... itd.

0

Na poczatek Ciag Sturma.
Pozniej badanie przedzialow; dalej to polecam metode stycznych lub siecznych sa duzo szybsze niz metoda polowienia przedzialow.

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