Documentos de Académico
Documentos de Profesional
Documentos de Cultura
DEPARTAMENTO DE
MATEMÁTICAS.
MATEMÁTICAS II. CURSO 2021_22.
Prof. Manuel Gómez (mnavarre@ujaen.es)
Semana 14/02/2022
▲ RESOLUCIÓN NUMÉRICA DE ECUACIONES NO LINEALES (I).
ÍNDICE
1. Planteamiento general del problema de resolución numérica de ecuaciones no lineales.
Existencia y unicidad de solución.
2. Métodos cerrados de resolución numérica de ecuaciones no lineales.
2.1. Método de bisección.
2.2. Método de regula falsi.
In[1]:= Clear["Global`*"]
borra
f[x_] := x * Log[x] - 2
logaritmo
f[1.5] * f[3]
Solve[f '[x] ⩵ 0, x] // N
resuelve valor numérico
Plot[f[x], {x, 0.5, 3.5}]
representación gráfica
Plot[f '[x], {x, 0.5, 3.5}]
representación gráfica
La solución se encuentra en el intervalo [xm ,x1 ] ya que se cumple que f(xm )·f(x1 )<0. Redefinimos
ahora los valores x0 y x1 de tal forma que x0 = xm y x1 = x1 y calculamos nuevamente xm (segunda
iteración). Gráficamente:
La alternancia de signo es ahora en el intervalo [x0 ,xm ] por lo que los valores del intervalo para la
siguiente iteración serán
x0 =x0 y x1 = xm . Así seguiremos iterando hasta que se cumpla el criterio de parada.
Ejemplo 2.
Calcula 3 iteraciones del método de bisección para encontrar la solución de la ecuación x+senx=1
In[7]:= Clear["Global`*"]
borra
f[x_] = x + Sin[x] - 1
seno
Plot[f[x], {x, - 3, 3}]
representación gráfica
Plot[f '[x], {x, - 3, 3}]
representación gráfica
La función tiene un cero en el intervalo [0,1] y su derivada en este intervalo es positiva, por lo que
tiene solución única en este intervalo. Definimos los valores iniciales y calculamos la primera
iteración:
In[11]:= x0 = 0
x1 = 1
x0 + x1
xm = // N
2 valor numérico
f[x0] * f[xm] // N
valor numérico
f[xm] * f[x1] // N
valor numérico
f[x0] * f[xm] // N
valor numérico
f[xm] * f[x1] // N
valor numérico
En esta segunda iteración, la solución es 0.75 y el intervalo a considerar para la siguiente iteración
será el de extremos x0 y xm
In[21]:= x0 = x0
x1 = xm
x0 + x1
xm = // N
2 valor numérico
f[x0] * f[xm] // N
valor numérico
f[xm] * f[x1] // N
valor numérico
En esta iteración, la solución es 0.625, como el criterio de parada se ha alcanzado (tres iteraciones),
daríamos esta aproximación como solución.
Ejemplo 3.
Utilizando el método de bisección, calcula la solución de la ecuación x+sen x = 1 con un error menor que 10 -3
In[26]:= Clear["Global`*"]
borra
f[x_] = x + Sin[x] - 1
seno
x0 = 0
x1 = 1
x0 + x1
xm1 = // N
2 valor numérico
f[x0] * f[xm1] // N
valor numérico
f[xm1] * f[x1] // N
valor numérico
epsilon = 10 ^ - 3
In[34]:= x0 = xm1
x1 = 1
x0 + x1
xm2 = // N
2 valor numérico
f[x0] * f[xm2] // N
valor numérico
f[xm2] * f[x1] // N
valor numérico
If [Abs[xm2 - xm1] < epsilon, Print["La solución es ", xm2], Print["Sigue iterando."]]
si valor absoluto escribe escribe
In[40]:= x0 = x0
x1 = xm2
x0 + x1
xm3 = // N
2 valor numérico
f[x0] * f[xm3] // N
valor numérico
f[xm3] * f[x1] // N
valor numérico
If [Abs[xm3 - xm2] < epsilon, Print["La solución es ", xm3], Print["Sigue iterando."]]
si valor absoluto escribe escribe
In[46]:= x0 = x0
x1 = xm3
x0 + x1
xm4 = // N
2 valor numérico
f[x0] * f[xm4] // N
valor numérico
f[xm4] * f[x1] // N
valor numérico
If [Abs[xm4 - xm3] < epsilon, Print["La solución es ", xm4], Print["Sigue iterando."]]
si valor absoluto escribe escribe
In[52]:= x0 = x0
x1 = xm4
x0 + x1
xm5 = // N
2 valor numérico
f[x0] * f[xm5] // N
valor numérico
f[xm5] * f[x1] // N
valor numérico
If [Abs[xm5 - xm4] < epsilon, Print["La solución es ", xm5], Print["Sigue iterando."]]
si valor absoluto escribe escribe
In[58]:= x0 = x0
x1 = xm5
x0 + x1
xm6 = // N
2 valor numérico
f[x0] * f[xm6] // N
valor numérico
f[xm6] * f[x1] // N
valor numérico
If [Abs[xm6 - xm5] < epsilon, Print["La solución es ", xm6], Print["Sigue iterando."]]
si valor absoluto escribe escribe
In[64]:= x0 = x0
x1 = xm6
x0 + x1
xm7 = // N
2 valor numérico
f[x0] * f[xm7] // N
valor numérico
f[xm7] * f[x1] // N
valor numérico
If [Abs[xm7 - xm6] < epsilon, Print["La solución es ", xm7], Print["Sigue iterando."]]
si valor absoluto escribe escribe
In[70]:= x0 = xm7
x1 = x1
x0 + x1
xm8 = // N
2 valor numérico
f[x0] * f[xm8] // N
valor numérico
f[xm8] * f[x1] // N
valor numérico
If [Abs[xm8 - xm7] < epsilon, Print["La solución es ", xm8], Print["Sigue iterando."]]
si valor absoluto escribe escribe
In[76]:= x0 = x0
x1 = xm8
x0 + x1
xm9 = // N
2 valor numérico
f[x0] * f[xm9] // N
valor numérico
f[xm9] * f[x1] // N
valor numérico
If [Abs[xm9 - xm8] < epsilon, Print["La solución es ", xm9], Print["Sigue iterando."]]
si valor absoluto escribe escribe
In[82]:= x0 = xm9
x1 = x1
x0 + x1
xm10 = // N
2 valor numérico
f[x0] * f[xm10] // N
valor numérico
f[xm10] * f[x1] // N
valor numérico
If Abs[xm10 - xm9] < epsilon,
si valor absoluto
Print"La solución, con un error menor que 10-3 , es ", xm10,
escribe
Print["Sigue iterando."]
escribe
Ejemplo 4.
Utilizando el método regula-falsi, calcula la solución de la ecuación x+sen x = 1 con un error menor que 10 -3
In[88]:= Clear["Global`*"]
borra
f[x_] := x + Sin[x] - 1
seno
x0 = 0
x1 = 1
x1 - x0 * f[x0]
xf1 = x0 - // N
f[x1] - f[x0] valor numérico
f[x0] * f[xf1] // N
valor numérico
f[xf1] * f[x1] // N
valor numérico
epsilon = 10 ^ - 3
In[96]:= x0 = x0
x1 = xf1
x1 - x0 * f[x0]
xf2 = x0 - // N
f[x1] - f[x0] valor numérico
f[x0] * f[xf2] // N
valor numérico
f[xf2] * f[x1] // N
valor numérico
If [Abs[xf2 - xf1] < epsilon, Print["La solución es ", xf2], Print["Sigue iterando."]]
si valor absoluto escribe escribe
In[108]:= x0 = x0
x1 = xf2
x1 - x0 * f[x0]
xf3 = x0 - // N
f[x1] - f[x0] valor numérico
f[x0] * f[xf3] // N
valor numérico
f[xf3] * f[x1] // N
valor numérico
If [Abs[xf3 - xf2] < epsilon, Print["La solución es ", xf3], Print["Sigue iterando."]]
si valor absoluto escribe escribe
In[114]:= x0 = x0
x1 = xf3
x1 - x0 * f[x0]
xf4 = x0 - // N
f[x1] - f[x0] valor numérico
f[x0] * f[xf4] // N
valor numérico
f[xf4] * f[x1] // N
valor numérico
If [Abs[xf4 - xf3] < epsilon, Print["La solución es ", xf3], Print["Sigue iterando."]]
si valor absoluto escribe escribe
Observa que hemos necesitado cuatro iteraciones en este método para conseguir
la tolerancia pedida, mientras que en el de bisección fueron 10 iteraciones.