El documento presenta tres métodos numéricos para encontrar raíces de ecuaciones: el método de la bisección, el método de la regula falsi y el método de Newton. Describe la lógica y las fórmulas matemáticas utilizadas en cada método y proporciona ejemplos de código MATLAB para implementarlos.
Elaboración de la estructura del ADN y ARN en papel.pdf
MétodosNuméricosBisecciónRegulaFalsaNewton
1. GRADO INGENIERÍA CIVIL MÉTODOS NUMÉRICOS
MÉTODO DE LA BISECCIÓN - MATLAB (TEMA 2)
function [raiz]=biseccion(def,x0,x1,tol)
f=inline(def); % para poder declarar f(x0), f(x1)...
if f(x0)*f(x1)<0 % para asegurarnos que existe raíz en mi intervalo
x=x0; % el punto medio empieza siendo x0
while abs(f(x)) > tol % comienza el bucle, mientras el valor de la
función supere a la tolerancia
x=(x0+x1)/2; % fórmula bisección(punto medio del intervalo es
"x")
if f(x0)*f(x)<0 % si cambia de signo entre el punto medio y x0
x1=x; % x1 ahora es el punto medio calculado
else % de lo contrario
x0=x; % x0 es el punto medio calculado
end
end
raiz=x; % la raíz es el último punto medio
elseif f(x0)*f(x1) > 0
raiz ='no hay cambio de signo'; % la funcion no corta al eje x
elseif f(x0)*f(x1) == 0
raiz = 'la raiz es uno de los extremos';
end
end
EJECUCIÓN DEL PROGRAMA EN COMMAND WINDOW
Ejemplos:
>> [raiz]=biseccion('x^2',0,2,0.001)
raiz =
'la funcion es uno de los extremos'
>> [raiz]=biseccion('x^2',1,2,0.001)
raiz =
'no hay cambio de signo'
>> [raiz]=biseccion('x^2-2',0,2,0.001)
raiz =
1.4141
2. GRADO INGENIERÍA CIVIL MÉTODOS NUMÉRICOS
MÉTODO DE LA RÉGULA FALSI
function [y]=falsap(h,a,b,tol)
f = inline(h); % declaro la función
c = (a*f(b)-b*f(a))/(f(b)-f(a)); % declaro el punto intermedio
error = abs(f(c)); % declaro el error
while (error > tol)
c = (a*f(b)-b*f(a))/(f(b)-f(a)); % calculo el punto intermedio
entre a y b
if f(a)*f(c) < 0 % si cambia de signo en el intervalo [a,c]
b = c; % sustituye el punto b por el c
else % si no ocurre lo anterior
a = c; % sustituye el punto a por el c
end
error = f(c); % el error que indica el "while" es f(c)
end
y = c; % la raiz, que he llamado y, es el último punto c
end
EJECUCIÓN DEL PROGRAMA EN COMMAND WINDOW
Ejemplos:
>> [y]=falsap('x^3-2*x+3',1,1.5,0.01)
y =
-3.1014
>> [y]=falsap('x^3-2',1,1.5,0.01)
y =
1.2105
>> [y]=falsap('asin(x)',0,1,0.01)
y =
0
3. GRADO INGENIERÍA CIVIL MÉTODOS NUMÉRICOS
MÉTODO DE NEWTON
function[raiz]=newton(def,x0,c,tol)
syms x
f = str2sym(def);
df = diff(f);
fx = inline (char(f));
dfx = inline (char(df));
k = 1;
while abs (fx(x0)) > tol || k > c
x0 = x0 - fx (x0)/dfx(x0);
k = k + 1;
end
if k > c
raiz = 'no converge';
else
raiz = x0;
end
Ejemplos:
>> [raiz]=newton('x^3-2',1.2,5,0.01)
raiz =
1.2599
>> [raiz]=newton('exp(x-5)+sin(x)',3,5,0.01)
raiz =
3.3235
>> [raiz]=newton('(2*sin(x)+2*x-5)/(2*cos(x)-4)',1,5,0.01)
raiz =
1.5019