Wzor interpolacyjny Lagrange'a [c/c++]

0

Moze ktos kiedys pisal cos takiego i zechcialby sie podzielic swoja tworczoscia? :>

0

Jezeli chcesz napisac dobry interpreter to zapoznaj sie z gramatyka formalna. taka jak np. gramatyka chomsky'ego a glownie gramatyka bezkontekstowa. Sa to glowne podstawy do tworzenia dobrego interpretera danego jezyka.

0

witam
jesli jestes zainteresowany moge ci przesłać pliki w matlabie ale mosisz sam podochodzic co jest co bo juz nie pamietam.

0

do: maniek_2
interpolacyjny wzóz Lagrange'a, to nie jest żaden inerpretator, więc chyba źle się zrozumieliśmy :)
Jest to raczej takie podstawowe zagadnienie z powiedzmy metod numerycznych

0

A przegladales serwis?
http://4programmers.net/file.php?id=1613

0
Tu jest opracowany prosty przykład interpolacji za pomocą wielomianu Lagrange'a
Zrobiony w BC++5.0
#include <iostream.h>
#include <conio.h>
class IntLagr
{public:
 int i,n;
 float xw[5],yw[5]; //wspolrzedne wezlow(przykladowo 50
 float w1,w2;
 float x,y; //x-zadajesz jako rozny od wezla i w nim liczysz wartosc y
 IntLagr(float*,float*); //deklaracja konstruktora
 void procLagr(float* xw,float* yw); //metoda w klasie
};
void main() //funkcja glowna
{

 float xw[5],yw[5];

  IntLagr kl(xw,yw); //powolanie obiektu klasy
  kl.procLagr(xw,yw); //wywolanieb metody
  getch();
}
IntLagr::IntLagr(float* xw,float* yw)//definicja konstruktora klasy
{
  cout<<"podaj ilosc wezlow n<=5\n";
  cin>>n;
   for(i=1;i<=n;i++)
    {
     cout<<"podaj wsp. wezlow xw["<<i<<"]\n";
     cin>>xw[i];
     cout<<"podaj wsp. wezlow yw["<<i<<"]\n";
     cin>>yw[i];
    }

}
void IntLagr::procLagr(float* xw,float* yw) //definicja funkcji wlasnej
{
 int j,i;
 float x,y,w1,w2,s;
 cout<<"podaj punkt x rozny od wezla\n"; //tu jest Twoje x rozne od x-ow wezla
 cin>>x;
  s=0;
  w1=1;
   for(j=1;j<=n;j++)
    {
     w1*=x-xw[j];
     w2=1;
      for(i=1;i<=n;i++)

        if(i!=j)
         w2*=xw[j]-xw[i];
        s+=yw[j]/(w2*(x-xw[j]));
     }
    y=w1*s; //obliczona wartosc w x
    cout<<"wartosc wielomianu Lagrange'a dla x="<<x<<" wynosi y="<<y ;
}

Możesz go łatwo rozbudować na większą ilość węzłow i na wiecej szukanych x
różnych od x węzła.
0

polecam ksiazek Bernarda Barona (prof na P.Śląskiej) - "Metody numeryczne w C++ Builder" - tam jest wiele metod aproksymacji, interpolacji itd. Miedzy innymi jest tez wlasnie metoda Lagrange'a.

0

mam program obliczający wielomian interpolacyjny (a raczej zbiór punktów wzoru), który jest dość ciekawy .. użyto wzór lagrange'a.. pisaliśmy go właśnie na ostatnich mn'ach.. jak ktoś chce, to niech podeśle mi maila z odpowiednim zapytaniem

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