Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Carlos Reales 1
1 Universidad de Córdoba
2 Ecuaciones no Lineales
2 Ecuaciones no Lineales
Comando Descripción
eye(m,n) Crea una matriz de orden m por n con unos en
la diagonal principal. Si m = n se obtendra la
matriz identidad de orden n.
ones(m,n) Crea una matriz de unos de orden m por n.
zeros(m,n) Crea una matriz de ceros de orden m por n.
a:b:c Genera un vector columna cuyo cuyo valor ini-
cial es a y un incremento b. El ultimo valor del
vector es es el numero mas grande de la for-
ma a + nb, con a + nb ≤ c y n entero. Si el
incremento es omitido se asume que su valor
es 1.
Comando Descripción
sum(v) Calcula la suma de los elementos del vector v .
size(A) Entrega un vector con dos elementos que con-
tiene el numero de filas y columnas de A.
length(v) Entrega el tamaño del vector v .
[a b c] Entrega el vector cuyas entradas son a, b y c.
, La coma separa columnas si se usa entre ele-
mentos de vectores o matrices. Tambien se
puede usar el espacio
; El punto y coma separa filas si se usa entre
elementos de vectores o matrices. Si se coloca
al final de una linea suprime la salida
Comando Descripción
A(:,j) Muestra la j-esima columna de la matriz A
A(j,:) Muestra la j-esima fila de la matriz A
+ Suma componente a componente
.* Multiplica componente a componente
./ Divide componente a componente
Comando Descripción
find(A) Entrega los indices de los elementos de A dis-
tintos de cero.
find(A>0) Entrega los indices de los elementos de A ma-
yores que cero.
fliplr(X) Da vuelta de izquierda a derecha las compo-
nentes del vector fila X .
flipud(X) Da vuelta de arriba a abajo las componentes
del vector columna X .
max/min(X) Muestra el elemento mas grande(pequeño) de
un arreglo.
sort(X) Ordena en forma descendentes los elementos
de un arreglo.
Comando Descripción
linspace(a,b,N) Genera N puntos equiespaciados entre
ayb
linspace(a,b) Genera 100 puntos equiespaciados en-
tre a y b
logspace(a,b,N) Genera N puntos logaritmicamente
equiespaciados entre 10a y 10b
logspace(a,b) Genera 50 puntos logaritmicamente
equiespaciados entre 10a y 10b
>>x = 3; y = 7;
>>z = fun (x,y)
z =
303
>>z = fun(3,7)
z =
303
function y = fun1(x)
y = x.^2-4;
La función debe ser llamada como sigue, para calcular el cero sobre el
dominio 0 ≤ x ≤ 3 :
>>fun1 = ’x.^2-4’;
>>fun_inline = inline(fun1);
>>x = fzero(fun_inline,[0, 3])
>>fun1 = ’x.^2-4’;
>>x = fzero(fun1,[0, 3])
o como
x − 5y − 2z = 11c
6x + 3y + z = 13c
7x + 3y − 5z = 10c
c=-10:1:10;
for i=1:length(c)
M(i,:)=misol(c(i));
end
M
plot(c,M(:,1),’b’,c,M(:,2),’g’,c,M(:,3),’m’)
2 Ecuaciones no Lineales
Teorema
Sea f : [a, b] → R una función continua en el intervalo [a, b] y
supongamos que f (a) < f (b). Entonces, para cada valor intermedio z
tal que f (a) < z < f (b), existe α ∈ (a, b) tal que f (α) = z. La misma
conclusión se obtiene para el caso que f (a) > f (b).
Dados a y b tales que a < b y f ∈ C([a, b]) tal que f (a)f (b) < 0, sean
a0 := a y b0 := b. Por lo tanto f tiene una raíz en el intervalo (a0 , b0 ).
Sea c0 := (a0 + b0 )/2.
(a) f (a0 )f (c0 ) = 0: en este caso se tiene que f (c0 ) = 0; por lo tanto ya
localizamos una raíz, c0 , y se finaliza el proceso;
(b) f (a0 )f (c0 ) < 0: por lo tanto f tiene una raíz en el intervalo (a0 , c0 )
y definimos a1 = a0 y b1 = c0 ;
(c) f (a0 )f (c0 ) > 0: por lo tanto f tiene una raíz en el intervalo (c0 , b0 )
y definimos a1 = c0 y b1 = b0 .
En los casos b y c anteriores f tiene una raíz en el nuevo intervalo
(a1 , b1 ). Por lo tanto, el proceso se vuelve a repetir con el nuevo
intervalo (a1 , b1 ) y c1 := (a0 + b0 )/2, hasta que se satisfaga algún
criterio de detención.
a2
a1 x1
a0
x0 b0
b1
x2 b2
Teorema
Suponga que f ∈ C[a, b] y f (a)f (b) < 0. El método de bisección
genera una sucesión {cn }∞
n=1 de aproximación de un cero c de f tal
que
k
1
|ck − α| ≤ (b − a) cuando n ≥ 1. (1)
2
Demostración.
Para cada k ≥ 1, tenemos bk − ak = (b − a)/2k y α ∈ (ak , bk ). Como
ck = (ak + bk )/2 para todo k ≥ 1 , resulta que
|ck − α| ≤ 12 (ak − bk ) = (b − a)/2k .
Solución
Por (1) tenemos que |ck − α| ≤ (b − a)/2k para k ≥ 1. Como
queremos que |ck − α| ≤ 10−4 , esto requiere que
|ck − α| ≤ (b − a)/2k = 2−k < 10−4 así, despejando k se obtiene
k > 4/ ln 2 = 13,2. Luego el numero minimo de iteraciones para
alcanzar una precisión de 10−4 es 14.
function raiz=bisec(funct,a,b,tol)
fa=feval(funct,a);
fb=feval(funct,b);
if (fb*fa>0)
error(’La funcion tiene el mismo signo en ambos ex
end
while (abs(b-a)>tol)
if (fa*fb==0)
if (fa==0)
raiz=a;
else
raiz=b;
end
else
raiz=(a+b)/2;
fraiz=feval(funct,raiz);
if fraiz==0;
disp(’El punto medio es la raiz!’)
break
elseif (fa*fraiz>0)
a=raiz;
fa=fraiz;
else
b=raiz;
fb=fraiz;
end
end
end
Ejemplo
√
Encuentre una aproximación a 3 25 correcta con una exactitud de
10−4 usando el método de bisección.
√
Para aproximar 3 25 utilizamos la ecuación f (x) = x 3 − 25 = 0. Para
establecer √ el intervalo
√ donde buscaremos la raiz tenemos en cuenta
3
que 2 = 3 8 y 3 = 27 y comprobamos que f (2).f (3) < 0. Así
utilizaremos el método de bisección en la función f (x) = x 3 − 25 = 0
en [2, 3].
Ejemplo
Aplique el método de bisección para encontrar soluciones exactas
dentro de 10−5 para el problema: x cos(2x) − (x + 1)2 = 0 para
−3 ≤ x ≤ −2 y para −1 ≤ x ≤ 0.
(b, f (b))
a α
c b
(a, f (a))
b−c c−a
=
f (b) −f (a)
Es fácil mostrar que
a−b b−a af (b) − bf (a)
c = b − f (b) = a − f (a) =
f (a) − f (b) f (b) − f (a) f (b) − f (a)
x2 x1 x0
f (xk )
xk +1 := xk − , k = 0, 1, 2, . . .
f 0 (xk )
|α − xk +1 | ≤ C|α − xk |p ∀k ∈ N.
Teorema
Sea f ∈ C 2 ([a, b]) con una raíz α ∈ (a, b) y sean m1 y M2 tales que
M2
|α − xk +1 | ≤ |α − xk |2 .
2m1
Por lo tanto, si x0 es cercano a α, se tiene la convergencia
Carlos Reales (Unicor) Métodos Numéricos 18 de agosto de 2020 42 / 50
function raiz=newton(f,Df,x0,tol,maxit)
k=0;
raiz=x0;
corr=tol+1;
while (k<maxit) & (abs(corr)>tol)
k=k+1;
xk=raiz;
fxk=feval(f,xk);
Dfxk=feval(Df,xk);
if (Dfxk==0)
error(’La derivada de la funcion se anula.’)
end
corr=fxk/Dfxk;
raiz=xk-corr;
end
if (abs(corr)>tol)
error(’Se excedio el numero maximo de iteraciones.
end
Carlos Reales (Unicor) Métodos Numéricos 18 de agosto de 2020 43 / 50
Ejemplo
Calcule mediante este programa las raíces de la ecuación
cos(x) − x = 0 con un error menor que 10−12 .
>> f3=inline(’cos(x)-x’);
>> Df3=inline(’-sin(x)-1’);
>> tol=1.e-12;
>> maxit=10;
>> x0=1;
>> format long
>> raiz=newton(f3,Df3,x0,tol,maxit)
raiz =
0.73908513321516
Bisección Newton–Raphson
1 1.50000000000000 2.00000000000000
2 1.25000000000000 1.50000000000000
3 1.37500000000000 1.41666666666667
4 1.43750000000000 1.41421568627451
5 1.40625000000000 1.41421356237469
6 1.42187500000000
7 1.41406250000000
.. ..
. .
15 1.41421508789063
16 1.41419982910156
17 1.41420745849609
f (xk ) − f (xk −1 )
.
xk − xk −1
Es decir,
xk − xk −1
xk +1 := xk − f (xk ) , (2)
f (xk ) − f (xk −1 )
para k = 1, 2, . . . , con x0 , x1 dados.
x2 x3 x1 x0
Teorema
Sea f ∈ C 2 ([a, b]) con una raíz α ∈ (a, b) y tal que f 0 (x) 6= 0 ∀x ∈ [a, b].
Dado x0 , x1 ∈ [a, b], sea {xk }k ∈N la sucesión obtenida por el método
de la secante. Supongamos que xk ∈ [a, b] ∀k ∈ N. Entonces
|α − xk +1 | ≤ C |α − xk |p ,
√
con p = (1 + 5)/2 y C > 0. Por lo tanto, si x0 se escoge
suficientemente cercano
√ a α, se tiene la convergencia lı́mk →∞ xk = α,
con orden p = (1 + 5)/2.
Carlos Reales (Unicor) Métodos Numéricos 18 de agosto de 2020 48 / 50