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

C# - Metody numeryczne - Interpolacja

VPS Starter Arubacloud
0 głosów
1,118 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ź 648 wizyt
pytanie zadane 10 kwietnia 2020 w C i C++ przez dominik195k Obywatel (1,030 p.)
0 głosów
1 odpowiedź 1,461 wizyt
0 głosów
1 odpowiedź 301 wizyt
pytanie zadane 4 stycznia 2020 w C# przez assassin Gaduła (3,260 p.)

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...