[go: up one dir, main page]

0% encontró este documento útil (0 votos)
31 vistas6 páginas

Tarea para Primer Parcial

El documento detalla dos ejercicios de un laboratorio de Análisis Numérico en la Universidad Mariano Gálvez de Guatemala, centrados en el método de bisección para encontrar raíces de funciones. Se presentan códigos en MATLAB que implementan este método, incluyendo la creación de gráficos y tablas de resultados. El primer ejercicio utiliza una función específica, mientras que el segundo permite al usuario ingresar una función y límites para calcular la raíz aproximada.

Cargado por

josuereguan
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
31 vistas6 páginas

Tarea para Primer Parcial

El documento detalla dos ejercicios de un laboratorio de Análisis Numérico en la Universidad Mariano Gálvez de Guatemala, centrados en el método de bisección para encontrar raíces de funciones. Se presentan códigos en MATLAB que implementan este método, incluyendo la creación de gráficos y tablas de resultados. El primer ejercicio utiliza una función específica, mientras que el segundo permite al usuario ingresar una función y límites para calcular la raíz aproximada.

Cargado por

josuereguan
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 6

Universidad Mariano Galvez de Guatemala.

Catedratico: Ing. Mario Alberto Tucubal.

Curso: Analisis Numerico

Código: 1012 – 135

Sede: Central.

Jornada: Matutina

“Laboratorio de viernes 21 de Febrero”

Alumno: Josué Miguel Reguán Villatoro.

Carné: 010 17 1146


EJERCICIO #1
CORRIDA DEL PROGRAMA:

TABLA DE ERRORES

CÓDIGO DE EJERCICIO #1:


func = (9.8(68.1))/C*(1-e{(c/68.1)*10})-40 %Función de la cual se desea conocer las raices
lin = -20; %Valor del límite inferior para los ejes de la gráfica
lsup = 20; %Valor del límite superior para los ejes de la gráfica
paso = 2
; %Paso o resolución para el gráfico
x=(lin:paso:lsup);
y = func(x);
plot(x,y);
title('Gráfica de la función') %Título de la gráfica
xlabel('Eje x') %Título del eje x de la gráfica
ylabel('Eje y') %Título del eje y de la gráfica
grid on; %Activa la cuadricula en la gráfica
xl = 4
xu = 20
test = func(xl)*func(xu)
if test>0,error('no hay cambio de signo'),end
A = [xl xu];
B = [0 0];
C1 = xr;
C2 = 0;
plot(A,B,'-o','MarkerSize',10,'MarkerEdgeColor','k','MarkerFaceColor','k')
grid on
axis1 = (xl-1);
axis2 = (xu+1);
axis([axis1 axis2 -0.5 0.5])
hold on
plot(C1,C2,'-o','MarkerSize',10,'MarkerEdgeColor','r','MarkerFaceColor','r')
line(A,B)
hold off
title('Gráfica de los puntos xl xr xu') %Título de la gráfica
xlabel('Eje x') %Título del eje x de la gráfica
ylabel('Eje y') %Título del eje y de la gráfica
grid on; %Activa la cuadricula en la gráfica
test2 = func(xl)*func(xr)
if test2 < 0
xu = xr
elseif test2 > 0
xl = xr
elseif test2 == 0
xr = 0
end
xrold = xr;
xr = (xl + xu)/2
ea = abs((xr - xrold)/xr) * 100
Es = 0.01; %Criterio de paro para el método de Bisección
Resultados = biseccion(func,xl,xu,Es)
function Resultados = biseccion(f,xl,xu,Es)
xr=xl; % Da un valor inicial a xr
iter=0; % variable de conteo de iteraciones
ea=100;
R=[]; %Matriz que contendrá los datos para realizar la tabla
while (1) %Ciclo while para realizar las iteraciones
xrold=xr; %Definición incial de xr
xr=(xl+xu)/2; %Cálculo del xr nuevo para el método de Bisección
iter=iter+1; %Incremento del número de iteración.
fxlxr=f(xl)*f(xr); %Cálculo de la función evaluada en xl y xr para ver si hay cambio de signo
if xr ~= 0 %Si xr es distinto a 0, se calcula el valor del error aproximado
ea = abs((xr - xrold)/xr) * 100;
end
F=[iter xl xu xr f(xl) f(xr) fxlxr ea]; %Vector fila con los datos de cada iteración
%F=[iter xl f(xl) xu f(xu) xr f(xr) ea]; %Vector fila con los datos de cada iteración
R=[R;F]; %Adición del vector fila F a la tabla con los resultados del programa.
producto = f(xl)*f(xr); %Variable para verificar el producto de f(xl) y f(xu)
if producto < 0 %Si el producto es menor a 0, xu se sustituye por xr
xu = xr;
elseif producto > 0 %Si el producto es mayor a 0, xl se sustituye por xr
xl = xr;
else
ea = 0; %Si el error absoluto es igual a 0, el ciclo termina (eso indica que ya se encontró el valor de xr
%para la cual la función es 0, por tanto en ese caso xr sería la raíz).
end
if ea <= Es %Si el error relativo aproximado es menor que la tolerancia, se termina el método.
break
end
end
Resultados=array2table(R,'VariableNames', {'i' 'xl' 'xu' 'xr' 'f(xl)' 'f(xr)' 'f(xl)*f(xr)' 'ea'}); %Creación de la tabla
end

EJERCICIO #2
CORRIDA DEL PROGRAMA:
CODIGO DEL PROGRAMA:
disp('METODO GRAFICO POR MEDIO DE BISECCIÓN ') %titulo
disp('___________________')
Fun=input('Ingrese la función: ','s');
a=input('Ingrese el limite inferior: ');
b=input('Ingrese el limite superior: ');
e=input('Ingrese el paso entre funciones: ');
Funcion= inline(Fun);
fa=Funcion(a); %evalua la funcion en el limite inferior
fb=Funcion(b); %evalua la funcion en el limite superior
cont=0; % contador se inicializa en cero
fprintf(' \n %1s %8s %9s %10s %10s %10s %10s \n ','cont', 'a', 'b','c','fa','fb','fc'); % imprime el encabezado,
el titulo de la tabla
while((abs(b-a))> e) % cilclo while, mietras el valor de la diferencia del limite sup - limite inf sea mayor que
el porcentaje de error haga
c=(a+b)/2; %variable para el promedio de los limites
fc=Funcion(c); %la funcion se evalua en el promedio c

if((fa*fc)<0) % si el producto de las funciones fa y fc es menor que cero imprime en la tabla


fprintf('\n %7f %8f %9f %10f %10f %10f %10f \n ',cont,a,b,c,fa,fb,fc);
b=c;
else
if((fc*fb)<0) %si el producto de las funciones fc y fb es menor que cero imprime en la tabla
fprintf('\n %7f %8f %9f %10f %10f %10f %10f \n ',cont,a,b,c,fa,fb,fc);
a=c;
end
end
cont=cont+1; %aumentamos el contador en 1
end %fin while
fprintf(' \n El valor aproximado de la raiz es:');
disp(c) %imprimimos la raiz aproximada
fprintf(' \n El numero de iteraciones es:');
disp(cont)

También podría gustarte