• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

C# - Metody numeryczne - Interpolacja

Object Storage Arubacloud
0 głosów
1,137 wizyt
pytanie zadane 31 maja 2018 w C# przez Matesel Nowicjusz (120 p.)

Witam, mam do realizacji na sobotę program zaliczeniowy na metody numeryczne do zaprogramowania okienkowego w języku c#.

Obliczyć pole obszaru znajdującego się pod wykresem wielomianu interpolacyjnego Lagrange'a. Jako dane wejściowe należy podać ilość węzłów interpolacji, a następnie uporządkowany ich zbiór. Wynikiem ma być liczba określająca pole powierzchni.

Na chwilę obecną mam program, w którym wpisuję ilość węzłów i wpisuję wartości X i Y dla każdego węzła. Niestety nie mam pojęcia co dalej. Na początek sprawa uporządkowania wzoru -> jak to zrealizować? Nie pozwolić na to, żeby kolejny wpisywany X nie był mniejszy od poprzedniego? Czy posortować odpowiednio? Próbowałem zająć się tym drugim rozwiązaniem, taką funkcję na sortowanie napisałem:

 

        public static void sortuj(int [] xx)
        {
            for(int i=0; i<w; i++)
            {
                xx2[i] = xx[i];
            }

            Array.Sort(xx);

            for(int i=0; i<w; i++)
            {
                for (int j=0; j<w; j++)
                {
                    if (xx[i] == xx2[j])
                        yy2[i] = yy[j];
                }
            }
        }

W to ilość węzłów.
Najpierw do drugiej tablicy xx2 dopisuję wartości z tablicy xx gdzie znajdują się wartości X wpisane przez użytkownika.
Następnie sortuję tablicę xx.
Kolejna pętla -> tutaj biorę od xx[0], czyli najmniejszego elementu. Szukam mu elementu równego z tablicy xx2.
Jak znajdę element, to do drugiej tablicy yy2[0] dopisuję wartość z tablicy yy (powinna ona odpowiadać wartości wpisanej przy X podczas wypełniania przez użytkownika).
Efekt: błędny wynik. wywołanie yy2[0] zawsze daje wynik 0.

 

Będę wdzięczny za wszelką pomoc. :)

 

komentarz 1 czerwca 2018 przez RafalS VIP (122,820 p.)
Dalej potrzebujesz?

1 odpowiedź

+1 głos
odpowiedź 1 czerwca 2018 przez RafalS VIP (122,820 p.)
edycja 1 czerwca 2018 przez RafalS
Co do samego pytania to zrób sobie głupią strukture Punkt z dwoma polami x i y, żeby je jakoś połączyć i sortuj tablice tych struktur a nie samo x bo to jest kłopotliwe.

Zrobiłbym tak: wczytaj punkty, posortuj je po iksach. Potem napisz funkcję, która liczy ten wzór interpolacyjny Lagrange'a. Jest np na wikipedii: https://pl.wikipedia.org/wiki/Interpolacja_wielomianowa. xi i yi to węzły. Jak będziesz miał tą funkcję to będziesz miał wzór wielomianu przybliżającego funkcje wyznaczoną przez węzły interpolacyjne. Przy pomocy tej funkcji, która zwraca y dla danego x policz pole powierzchni pod wykresem (klasyczna całka). Najłatwiej wzorem trapezów. Wybierz sobie krok np dx = 0.001, albo wybierz na ile punktów dzielisz Twój przedział i z tego wyznacz krok dx. Później przeleć po całym przedziale x dodając i*dx i w każdym tym punkcie licz pole trapezu (o przybliżaniu całki wzorem trapezów jest sporo na internecie, poszukaj gdzieś).

Jak będziesz miał problem z którąś częścią to pisz, pomoge

Podobne pytania

0 głosów
1 odpowiedź 678 wizyt
pytanie zadane 10 kwietnia 2020 w C i C++ przez dominik195k Obywatel (1,030 p.)
0 głosów
1 odpowiedź 1,473 wizyt
0 głosów
1 odpowiedź 319 wizyt
pytanie zadane 4 stycznia 2020 w C# przez assassin Gaduła (3,260 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...