Matroids Matheplanet Forum Index
Moderiert von mire2
Mathematische Software & Apps » Matlab » Polynominterpolation mit Lagrange-Polynomen
Druckversion
Druckversion
Autor
Universität/Hochschule J Polynominterpolation mit Lagrange-Polynomen
s-amalgh
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 16.12.2020
Mitteilungen: 103
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Themenstart: 2021-05-30


Hallo zusammen, ich habe diese Aufgabe

 



Ich weiß es nicht wie ich die Auswertungen p(t_i) bestimme. Das ist mein Code

matlab
function Alghabra07   
   function Lagrange(k)
 
    n = length(x) -1;
    xp = k;
    smx = 0;
 
 
    for i = 1:n+1
      Lx = 1;
 
      for j = 1:n+1 
        if j~=i
 
          Lx = Lx * (xp -x(j)) / (x(i) - x(j));
 
        end
      end  
      smx = smx + y(i) * Lx;
 
 
    end
    py = smx
 
  end
 
x = [-4 -2 0 1 2 3 4 5]
y = [3 -1 -4 -2 -1 1 2 2] 
 
 
for i = 1:901
t(i) = (-4) + (i/100) -0.01 ;
end  
 
Lagrange(3)
 
 
 
end
 
 





Könnte mir jemand bitte dabei helfen?

Danke im Voraus! :)



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
majoka
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 25.02.2014
Mitteilungen: 798
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.1, eingetragen 2021-06-01


Hallo

Warum sollte
Matlab
xp = k;
 
sein?


Matlab
function Alghabra07
    function Lagrange(t)
 
        n = length(x) - 1;
        xp = t;
        smx = 0;
 
        for i = 1:n+1
            Lx = 1;
            for j = 1:n+1
                if j~=i
                    Lx = Lx .* (xp -x(j)) / (x(i) - x(j));
                end
            end
            smx = smx + y(i) * Lx;
        end
        py = smx;
        figure(1)
        plot(x, y, '+r', t, py, 'b')
    end
 
x = [-4 -2 0 1 2 3 4 5];
y = [3 -1 -4 -2 -1 1 2 2];
 
t = linspace(-4, 5, 901);
 
Lagrange(t)
 
end



Ich hätte erwartet, dass die Aufgabenstellung eigentlich folgenden Aufruf der Funktion erwartet:
Matlab
p = Lagrange(x, y, t);



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
s-amalgh
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 16.12.2020
Mitteilungen: 103
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.2, vom Themenstarter, eingetragen 2021-06-01


Danke erstmal für deine Antwort!

Hast du so erwartet ?
matlab
function Alghabra07
    function p = Lagrange(x, y, t)
 
        n = length(x) - 1;
        xp = t;
        sm = 0;
 
        for i = 1:n+1
            L = 1;
            for j = 1:n+1
                if j~=i
                    L = L .* (xp -x(j)) / (x(i) - x(j));
                end
            end
            sm = sm + y(i) * L;
        end
        p = sm;
        figure(1)
        plot(x, y, '+r', t, p, 'b')
    end
 
x = [-4 -2 0 1 2 3 4 5];
y = [3 -1 -4 -2 -1 1 2 2];
 
t = linspace(-4, 5, 901);
 
p = Lagrange(x,y,t)
 
end
 



Danke im Voraus für die Antwort! :)



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
majoka
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 25.02.2014
Mitteilungen: 798
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.3, eingetragen 2021-06-01


Ja, aber den Aufruf der Plot-Funktion würde ich auch noch rausziehen.
Matlab
function Alghabra07
    function p = Lagrange(x, y, t)
 
        n = length(x) - 1;
        xp = t;
        sm = 0;
 
        for i = 1:n+1
            L = 1;
            for j = 1:n+1
                if j~=i
                    L = L .* (xp -x(j)) / (x(i) - x(j));
                end
            end
            sm = sm + y(i) * L;
        end
        p = sm;
 
    end
 
x = [-4 -2 0 1 2 3 4 5];
y = [3 -1 -4 -2 -1 1 2 2];
 
t = linspace(-4, 5, 901);
 
p = Lagrange(x,y,t)
figure(1)
plot(x, y, '+r', t, p, 'b')
 
end



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
s-amalgh
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 16.12.2020
Mitteilungen: 103
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.4, vom Themenstarter, eingetragen 2021-06-01


Ich habe eine Frage
Wieso hast du . Vor * geschrieben? Also L = L .* …..
und wenn ich . lösche , funktioniert das Programm nicht mehr?



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
majoka
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 25.02.2014
Mitteilungen: 798
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.5, eingetragen 2021-06-02


$L$ ist ein Vektor. In $(xp -x(j)) / (x(i) - x(j))$ ist $xp$ ein Vektor und daher der gesamte Term ebenfalls. Mit $.*$ werden die jeweiligen Einträge der beiden Vektoren multipliziert. Ohne den Punkt versucht Matlab das Skalarprodukt der beiden Ausdrücke zu berechnen.
Matlab
a = [1 2 3 4];
>> a.*a
 
ans =
 
     1     4     9    16

Beachte auch
Matlab
% Vektor - Skalar ergibt Vektor
a-1
 
ans =
 
     0     1     2     3





Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
s-amalgh
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 16.12.2020
Mitteilungen: 103
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.6, vom Themenstarter, eingetragen 2021-06-06


Hallo Majoka,
Könntest du mir bitte dabei helfen ?
LinkPolynominterpolation mit Dividierten Differenzen
Danke im Voraus! :)



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
s-amalgh hat die Antworten auf ihre/seine Frage gesehen.
s-amalgh hat selbst das Ok-Häkchen gesetzt.
s-amalgh wird per Mail über neue Antworten informiert.
Neues Thema [Neues Thema]  Druckversion [Druckversion]

 


Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2021 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]