Está en la página 1de 5

IntroPartII

September 20, 2021

1 Introducción a Octave Parte II / Kerin Cardona


1.1 Funciones
En esta sección trataremos las funciones reales en Octave. Por ejemplo dada una función f definida
en (a, b), nos interesa poder definir dicha función y poder más adelante calcular sus ceros, integrales
definidas y derivadas, así como generar su respectiva gráfica.
Considere la función f (x) = 1/(1 + x2 ). La forma más sencilla de definirla consiste en utilizar
funciones anónimas o handle utilizando ‘@’.
[1]: fun=@(x) 1/(1+x^2)

fun =

@(x) 1 / (1 + x ^ 2)

[2]: y=fun(3)

y = 0.1000
El comando fplot ( fun , lims ) grafica la función ‘fun’ en el intervalo (lims(1), lims(2))

[5]: graphics_toolkit ("gnuplot");

[8]: fplot(fun,[-5,5]);

warning: fplot: FN is not a vectorized function which reduces performance


warning: called from
fplot at line 175 column 5

1
De forma alternativa el comando plot
[13]: x=linspace(-5,5,500);
fun=@(x) 1./(1+x.^2);
y=fun(x);
plot(x,y,'Linewidth',3); grid on

2
1.2 Polinomios
Para definir un polinomio ingresamos un vector con los coeficientes, por ejemplo p(x) = x7 +3x2 −1
se define de la forma
[14]: p=[1 0 0 0 0 3 0 -1];

Luego podemos evaluar p(x) con el comando ‘polyval’

[15]: y=polyval(p,1.23)

y = 7.7980
También lo podemos evaluar en un vector
[16]: x=-1:0.25:1

x =

Columns 1 through 8:

-1.0000 -0.7500 -0.5000 -0.2500 0 0.2500 0.5000 0.7500

3
Column 9:

1.0000

[17]: y=polyval(p,x)

y =

Columns 1 through 8:

1.0000 0.5540 -0.2578 -0.8126 -1.0000 -0.8124 -0.2422 0.8210

Column 9:

3.0000

El comando ‘roots’ ofrece una aproximación de los ceros de un polinomio


[18]: roots(p)

ans =

0.9698 + 0.7716i
0.9698 - 0.7716i
-0.3739 + 1.2305i
-0.3739 - 1.2305i
0.5716 + 0i
-1.1793 + 0i
-0.5840 + 0i

Desafortunadamente no siempre nos da resultados lo suficientemente precisos. En las siguientes


secciones se estudiaran métodos mas avanzados para encontrar ceros de funciones.

1.3 El lenguaje Octave


1.3.1 Ejemplo ’ if ’

[30]: a=5;b=4;c=3;

[31]: if a ~= 0
sq = sqrt(b*b - 4*a*c);
x1(1) = 0.5*(-b + sq)/a;
x1(2) = 0.5*(-b - sq)/a;
elseif b ~= 0
x1(1) = -c/b;

4
elseif c ~= 0
disp(' Impossible equation');
else
disp(' The given equation is an identity');
end

[33]: x1(1),x(2)

ans = -0.4000 + 0.6633i


ans = -0.7500

1.3.2 Ejemplo ’ while ’

[35]: f (1) = 0; f (2) = 1; k = 3;

[38]: while k <= 10


f ( k ) = f (k -1) + f (k -2); k = k + 1;
end

1.4 Ejercicios
1. Dado que π es la suma de

∑ ( )
−n 4 2 1 1
π= 16 − − −
8n + 1 8n + 4 8n + 5 8n + 6
n=0

podemos aproximar π sumando para un n lo suficientemente grande. Escribir un programa


que calcule la suma finita de la serie anterior.
[48]: suma_pi=@(n) 16.^(-n).*(4./(8*n+1)-2./(8*n+4)-1./(8*n+5)-1./(8*n+6))

suma_pi =

@(n) 16 .^ (-n) .* (4 ./ (8 * n + 1) - 2 ./ (8 * n + 4) - 1 ./ (8 * n + 5) - 1
./ (8 * n + 6))

[51]: x=0:100; format long

sum(suma_pi(x))

ans = 3.141592653589793

[52]: pi

ans = 3.141592653589793

[ ]:

También podría gustarte