Octave: Vektorová funkce k porovnání Taylorova polynomu
Vytvořím rozmezí, na kterém se zobrazuje graf funkcí (mezitím dělím na 1000 dílků):
x = linspace(0,pi,1000);
- Pokud bych nechtěl použít linspace():
n = 1000; a = 0; b = pi; h = (b - a)/n; x = a + (0:n)*h;
Určím anonymní funkci (nemusí existovat ve vlastním souboru, nemusí se nějak jmenovat)
f = @(x)
Jako funkci zvolím polynom pomocí polyvalu, která odpovídá Taylorovu polynomu 5. stupně na intervalu x:
f = @(x) polyval([1/factorial(9) 0 -1/factorial(7) 0 1/factorial(5) 0 -1/factorial(3) 0 1 0],x);
Vytvořím vektorovou funkci, která obsahuje funkce, které porovnávám:
F = @(x)[f(x);sin(x)];
Přiřadím definičnímu x-ům funkční hodnoty Y a pojmenuji osy:
Y = F(x)
plot(x,Y);
legend('T_5', 'sin(x)');
Hotovo! :
x = linspace(0,pi,1000);
f = @(x) polyval([1/factorial(9) 0 -1/factorial(7) 0 1/factorial(5) 0 -1/factorial(3) 0 1 0],x);
F = @(x) [f(x);sin(x)];
Y = F(x);
plot(x,Y); legend('T_5','sin(x)');
Pozn.: Pokud chci vytvořit místo spojité funkce posloupnost:
n = 0:3;
a = polyval([1/factorial(9) 0 -1/factorial(7) 0 1/factorial(5) 0 -1/factorial(3) 0 1 0],n);
stem(n,a);