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)');

image.png

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);

image.png