eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingSimpson vs. Niski CotesRe: Simpson vs. Niski Cotes
  • Data: 2012-11-13 11:53:39
    Temat: Re: Simpson vs. Niski Cotes
    Od: Roman W <r...@g...com> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    W dniu wtorek, 13 listopada 2012 10:33:09 UTC użytkownik slawek napisał:
    > Użytkownik "bartekltg" napisał w wiadomości grup
    > dyskusyjnych:k7rnav$8eq$...@n...news.atman.pl...
    >
    > >Sławek schrzaniał algorytm i tyle. Pewnie źle dobrał
    > >epsilon maszynowy;)
    >
    > A konkretnie - poza błędem w komentarzu?

    Poprawnie zaimplementowany Simpson (wg.
    http://en.wikipedia.org/wiki/Simpson%27s_rule#Compos
    ite_Simpson.27s_rule) daje wartosc, dla Twoich danych, 0.5022749400837603, czyli
    znacznie blizej prawdziwej wartosci niz Twoje
    trapezy.

    Kod ponizej (C++):

    #include <cmath>
    #include <iostream>
    #include <iomanip>

    double function(double x)
    {
    return sin(x) * exp(-x);
    }

    template <class F>
    double integrate_simpson(F f, double x0, double x1, size_t k)
    {
    const size_t n = 2 * k;
    const double h = (x1 - x0) / n;
    double sum = f(x0) + f(x1);
    for (size_t j = 1; j < k; ++j) {
    sum += 2 * f(x0 + 2 * j * h);
    }
    for (size_t j = 1; j <= k; ++j) {
    sum += 4 * f(x0 + (2 * j - 1) * h);
    }
    return h * sum / 3.0;
    }

    int main()
    {
    std::cout << std::setprecision(16) << integrate_simpson(function, 0.0, 5.0, 10000/2)
    << std::endl;
    }


    RW

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: