0 Daumen
1,1k Aufrufe
Annahme: Matlab hat keine integrierte Sinusfunktion.
Gegeben: Stützstellen x,y 
Gesucht: der Wert von sinus(z) für \(z\in[0,2\pi]\)
Habe eine Funktion für die LagrangeInterpolation:function p = lagrangeinterpol(b, x, z)
n = length(x);p = 0;for j = 1:nL = 1;for k = 1:nif k~=jL  = (z - x(k)) / (x(j) - x(k));endendp = L.*b(j);end
end
Weiss nun aber nicht was ich ändern muss für den Sinus`?
Avatar von

2 Antworten

+1 Daumen

Hi,
die Lagrange Interpolation berechnet sich ja als
$$ P(x) = \sum_{i=1}^n f_i l_i(x) $$ mit
$$ l_i(x) = \prod_{j=1 \atop j\ne i}^n \frac{x-x_j}{x_i-x_j} $$
Du berechnest aber das Produkt und die Summe nicht korrekt. In der Schleife für das Produkt lautet die richtige Formel $$ L = L \cdot \frac{x-x_j}{x_i-x_j} $$ und bei der Berechnung von \( p \) am Schluss muss es heissen $$ p = p + L \cdot b(j) $$ Initialisiert hast Du die Größen \( p \) und \( L \) aber richtig,.

Avatar von 39 k

Und so sieht die Aproximation ausBild Mathematik

0 Daumen

Du musst wohl nur vor dem Aufruf von    lagrangeinterpol(b, x, z)

Die Stützstellen irgendwie initialisieren, Vielleicht reicht ja für grobe Ergebnisse schon

x1:=0     y1:=0

x2:= pi/2     y2:= 1 

x3:= pi     y3:=0

x4:= 3*pi/2     y2:= -1 

x5:= 2*pi       y5 :=0

Die y-Werte sind wohl die b 's.
und wenn die Werte noch arg schlecht sind vielleicht
noch die Vielfachen von pi/4 dazwischen packen.
Avatar von 288 k 🚀

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Mathelounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community