Zum Inhalt springen

Algorithmensammlung: Numerik: Quadratur: Newton-Cotes-Quadratur

Aus Wikibooks

Algorithmensammlung: Numerik: Quadratur

Newton-Cotes-Quadratur

[Bearbeiten]

Die Newton-Cotes-Quadratur basiert auf den  Newton-Cotes-Formeln. Diese basieren darauf, dass ein Polynom einfach integriert werden kann – die zu integrierende Funktion wird zunächst interpoliert und dann integriert.

Die Implementierungen auf dieser Seite sind solche der summierten Form der Quadratur (sog. summierte Quadraturformel). Dabei wird die Funktion nochmals durch ein Gitter in Intervalle unterteilt und auf den Intervallen getrennt integriert.

Die für den Algorithmus notwendigen Gewichte mit (aufsteigend sortiert) sind dabei:

Name Gewichte
 Mittelpunktsregel
 Trapezregel
 Simpson-Regel
3/8-Regel
Milne-Regel

Matlab

[Bearbeiten]

Siehe Octave

Octave

[Bearbeiten]
function integral = newtoncotes(f, gitter, gewichte)
    % f ist die Funktion.
    % Das Gitter ist ein Gitter auf dem Integrationsgebiet,
    % am einfachsten ist [a, b].
    % Die Gewichte sind vorbestimmt und können der Formel auf
    %  https://de.wikipedia.org/wiki/Newton-Cotes-Formel
    % entnommen werden.
    %
    if ! exist('gewichte')
        gewichte = [1/8 3/8 3/8 1/8]; % 3/8-Regel
    end
    integral = 0;
    for i = 1:length(gitter) - 1
        a = gitter(i);
        b = gitter(i + 1);
        % disp([' Im Teil ' num2str(a) ' - ' num2str(b) ]);
        intTeil = 0;
        for n = 1:length(gewichte)
            % disp(['  ' num2str(gewichte(n)) ' *  f(' num2str(a + (b - a) * (n - 1) / (length(gewichte) - 1)) ')' ]);
            intTeil = intTeil + gewichte(n) * f(a + (b - a) * (n - 1) / (length(gewichte) - 1));
        end
        integral = integral + intTeil * (b - a);
    end
end;