Beruflich Dokumente
Kultur Dokumente
Clculo de Raices
Matlab incluye tres funciones bsicas para calcular raices de funciones.
fzero
fsolve
roots
Empleando fzero
Comandos utilizados
en esta gua
fzero
fsolve
roots
ezplot
inline
hold
grid
El comando fzero admite diferentes maneras de introducir la funcin, todas ellas respondiendo a
declaraciones de funciones de tipo inline Por ejemplo, sea la siguiente funcin:
10 10 * x + x 2
f ( x) =
(1 x)
Puede escribirse de las siguientes maneras:
>> fzero('10+x^2/(1-x)',10)
ans =
8.8730
en este caso la variable debe declararse como x (equis). Si se necesita utilizar otro nombre de variable
puede escribirse as:
>> fzero(inline('10+m^2/(1-m)'),10)
ans =
8.8730
y si se desea declarar en pasos separados,
>> g = inline ('10+m^2/(1-m)'); fzero(g,10)
ans =
8.8730
tambin admite invocar a una funcin declarada en un archivo m.
function fun = f(x)
Mario R. ROSENBERGER
1 de 7
Clculo de races
fun = 10+x^2/(1-x);
>> fzero ( fun' , 10 )
a ans =
8.8730
raices
En la figura se destacan ambas raices encerradas con una elipse. Una manera ms directa de calcular
a el valor de una de las races en particular requiere de introducir el intervalo, observado a priori,
donde el programa buscar las races, en este caso las imgenes de los extremos del intervalo deben
tener signos opuestos. Por ejemplo:
>> fzero ( inline ( ' 10+m^2/(1-m) ' ) , [ 2 , 10 ] )
ans =
8.8730
>> fzero(inline('10+m^2/(1-m)'),[1.1,2])
ans =
1.1270
Mario R. ROSENBERGER
2 de 7
Clculo de races
Empleando fsolve
El formato de este comando se describe en el siguiente esquema:
La funcin debe definirse como vector columna, donde cada elemento corresponde a una de las
funciones. Por ejemplo para el caso de tratarse de las siguientes funciones:
x1 x2 = 0
2 x1 + 2 x2 = 0
3
El vector a definir debe tener la forma:
x1 x2
3
2
x
2
x
+
1
2
Mario R. ROSENBERGER
3 de 7
Clculo de races
>>fsolve(inline('[(2.*x(1)+2)^(1/3)-x(2);x(1)-x(2)]'),[1;1], optimset('display','iter'))
Norm of
First-order Trust-region
Iteration Func-count f(x)
step
optimality radius
1
3
0.34504
0.587
1
2
6
0.00208249
1
0.0315
1
3
9 3.06173e-008
0.0924342
0.000175
4
12 1.6094e-018 0.000314412
1.27e-009
Optimization terminated successfully:
First-order optimality is less than options.TolFun.
ans =
1.7693
1.7693
2.5
2.5
En cambio cuando se tienen mayores dimensiones, 4 o ms, la visualizacin grfica pierde utilidad y el
criterio para seleccionar el punto inicial parte de las caractersticas del problema que se intenta
resolver, algunas veces muy complejas, por lo que debe estudiarse las soluciones obtenidas en
relacin con el punto inicial adoptado, determinando su influencia, y con ello la estabilidad y
Condicionamiento del sistema.
Empleando roots
El comando roots calcula las races reales o complejas de polinomios. El formato de este comando se
ilustra en el siguiente esquema:
Mario R. ROSENBERGER
4 de 7
Clculo de races
roots ([ an an 1 an 2 .... a2 a1 a0 ])
coeficientes del
polinomio de grado N
Por ejemplo si se desea calcular las races del polinomio siguiente:
x3 2x 2 = 0
debera escribirse algo as:
>> roots ([1 0 -2 -2])
ans =
1.7693
-0.8846 + 0.5897i
-0.8846 - 0.5897i
El vector tambin puede asignarse a una variable, y luego invocarla con el comando roots, as:
>> p =[1 0 -2 -2]
p=
1 0 -2 -2
>> roots(p)
ans =
1.7693
-0.8846 + 0.5897i
-0.8846 - 0.5897i
Mario R. ROSENBERGER
5 de 7
Clculo de races
Aplicacin de clculo de races
k
A
B+C
Sistema de Ecuaciones:
F
F
dX A3 F1
= X A1 + 6 X A60 3 X A3 k X A3 (1)
dt
V1
V1
V1
F
F
dX B 3
=
+ 6 X B 60 3 X B 3 + k X A3 (2)
dt
V1
V1
F
dX C 3
=
3 X C 3 + k X A3 (3)
dt
V1
dM totales
= F3 (F4 + F5 + F6 ) (4)
dt
F
dX A6 F3
= X A3
6 X A6 (5)
dt
V2
V2
F F
dX B 6 F3
= X B 3
5 6 X B 6 (6)
dt
V2
V2 V2
F
dX C 6 F3
= X C 3 4 (7)
dt
V2
V2
F3 * X A3 = 0,6 * (F1 * X A1 + F6 * X A6 ) (8)
9
9
9
9
9
9
9
9
V1 = 1 m3
V2 = 2 m3
= constante
Reaccin de primer orden
rA = -k*XA
rB = k*XA
rC = rB
XA1 = 1
Mario R. ROSENBERGER
6 de 7
Clculo de races
Luego en la ventana de comando utilizamos la funcin fsolve, donde los valores entre corchetes son los
valores de las variables elegidos en forma conveniente para iniciar la iteracin.
options=(optimset('MaxFunEvals',10000,'Maxiter',1000,'TolFun',1e-10))
fsolve(@fun,[110,40,150,.5,.1,.3,.2,60],options)
Optimization terminated: first-order optimality is less than options.TolFun.
ans =
50.0000
93.7500 193.7500
0.3871
0.1292
0.3548
0.2581
50.0000
Mario R. ROSENBERGER
7 de 7