[C] Interpolacja Lagrange'a

Mens
Użytkownik
Użytkownik
Posty: 97
Rejestracja: 14 paź 2011, o 23:09
Płeć: Mężczyzna
Lokalizacja: Trn
Podziękował: 6 razy

[C] Interpolacja Lagrange'a

Post autor: Mens »

W ramach domowej próby zrozumienia metod numerycznych postanowiłem napisać w C program (dodam że nie jestem orłem ani w C ani w metodach numerycznych) do obliczania wielomianu dla określonej wartości x, jednak jestem pewien że zrobiłem to źle, ale nie jestem pewien co:

Kod: Zaznacz cały

#include <stdio.h>
#include <stdlib.h>


main()

{
    int i, j, n, a, k;
    int c=1;
    float e = 1;
    float z = 0;


    float y[100];
    int x[100];



    printf("Podaj ilosc wezlow interpolacyjnych: ");
    scanf("%d",&n);
    printf("Podaj punkt w ktorym chcesz obliczyc funkcje: ");
    scanf("%d", &a);
for(i=0;i<n;i++)
    {
       printf("Podaj wezel %d:", i);
       scanf("%d",&x[i]);
       printf("I jego wartosc:");
       scanf("%d",&y[i]);


for(k=1; k<=n; k++){
 if(k!=i){
  c *=(a-x[k])/(x[i]-x[k]);

}}
z+=y[i]*c;
}
printf("Wartosc funkcji w punkcie %d to: %f
", a, z);
}

Mógłby ktoś pomóc i rozwiać moje wątpliwości po wielogodzinnym i pewnie próżnym pisaniu ?
royas
Użytkownik
Użytkownik
Posty: 363
Rejestracja: 24 sie 2012, o 09:27
Płeć: Mężczyzna
Lokalizacja: Cieszyn
Pomógł: 80 razy

Interpolacja Lagrange'a w C

Post autor: royas »

Nie wnikałem w sam algorytm, prawdopodobnie, błąd jest na etapie wczytywania danych. Wczytujesz floaty przy pomocy scanf("%d", spróbuj %f.
ODPOWIEDZ