lagrange.m

来自「This is a Matlab v6.5 implementation of 」· M 代码 · 共 36 行

M
36
字号
% Do funkcji dostarczamy wartosci x = wezly 
% np. wezly = [1, 3, 6, 7] =&ht; wielomian 3-go stopnia
% W(x) = a + bx + cx^2 + dx^3 (cztery wspolczynniki: a,b,c,d )
% stopien_n = stopien wielomianu + 1 (ile wspolczynnikow)
%    
% U縴wamy tak:
% p = lagrange(wart_x, wart_y, punkt_x)
% 
% Uwaga! 
% punkt_x = x w ktorym chcemy znalezc wartosc W(x)
% punkt_x musi byc r罂ny od wszystkich wartosci wezlow x

function [wyn] = lagrange(wart_x, wart_y, punkt)
    
    size_x = size(wart_x);          % tutaj obliczamy wielko舵 tablicy x-體
    ilosc_x = size_x(2);            % tutaj pobieramy z tablicy wielko禼i ilo舵 kolumn
    omw = 1;                        % na poczatku omw = 1 aby przy mnozeniu nie wyszlo 0
    s = 0;                          % to jest suma - na poczatku rowna 0
    
    % Robimy petle, ktora iteruje wszystkie wezly i tworzy sume wzoru Lagrange'a 
    for i = 1 : ilosc_x
        
        if wart_x(i) ~= punkt
            % Jesli punkt jest rozny od wart_x
            
            omw = omw * (punkt - wart_x(i));        % Omega (w liczniku)
            omp = 1;                                % Pierwsza pochodna omegi
                                                    % na pocz眛ku p阾li = 1
            for j = 1 : ilosc_x
                if j ~= i
                    % i != j aby nie odejmowac tej samej wartosci %
                    omp = omp * (wart_x(i) - wart_x(j));    
                    % Pierwsza pochodna omegi
                end
            end
            % Dodaje do sumy nowo obliczon

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?