Está en la página 1de 2

5,

hacer un escrip rutero

Biseccion

% Funci�n del m�todo de Bisecci�n para c�lculo de cruces por cero.


% de una funci�n no lineal que se mueve en plano real.
%
% El m�todo calcula un cruce por cero.
%
% La funci�n se llama de la siguiente manera:
%
% [Cero,Mat]=Biseccion(a,b)
%
% Entradas:
% a -- L�mite inferior del intervalo.
% b -- L�mite superior del intervalo.
%
% Salida:
% Cero -- Valor de la variable para la cual la magnitud de la funci�n es
% cero o menor a una tolerancia especificada previamente.
% Mat -- Vector que contiene todas las iteraciones hasta converger.
%
function[Cero,Mat] = Biseccion(f,a,b);
Err = 1; % Inicializa el error para ingresar al ciclo iterativo.
tol = 1e-8; % Tolerancia especificada para la convergencia.
c = 0; % Inicializa el contador de iteraciones.
while Err > tol & c < 30
% Valor de la funci�n al inicio del intervalo
fa=f(a)%fa = 1 + 2.*a - 3.*a.^2.*exp(-a) + 2.*a.^3.*sin(a).*exp(-a./5);
% Valor de la funci�n al final del intervalo
fb=f(b)%fb = 1 + 2.*b - 3.*b.^2.*exp(-b) + 2.*b.^3.*sin(b).*exp(-b./5);
% C�lculo del punto medio.
h = (a+b)/2;
% Valor de la funci�n en el punto medio
fh=f(h)%fh = 1 + 2.*h - 3.*h.^2.*exp(-h) + 2.*h.^3.*sin(h).*exp(-h./5);
% Contador de iteraciones para no dejar en un ciclo el programa en caso de alguna
% inconsistencia.
c = c + 1;
% Matriz que almacena los resultados de cada iteraci�n.
Mat(c,:) = [a fa b fb h fh];
% Discriminante para determinar el nuevo intervalo.
disc = fh*fa;
% El cruce por cero cumple con el criterio de error.
if abs(disc) <= tol
Err = 0;
Cero = h;
% Definici�n del nuevo intervalo al no cumplir el criterio de error.
elseif disc > tol
a = h;
b = b;
% Definici�n del nuevo intervalo al no cumplir el criterio de error.
elseif disc < tol
a = a;
b = h;
end
Err = abs(disc); % Criterio de error.
end
% Cruce por cero que determina el m�todo de bisecci�n.
Cero = h;

-----------------------------------------------------------

function [z]= jacob(T)


Ta=T+273.15
osf= 8
[z]=(-139.34411+(157570.1./Ta)-(66423080./Ta.^2)+(12438000000./Ta.^3)-
(862194900000./Ta.^4))-log(osf)
end

t= 0:0.01:40
[z]= jacob(T)
plot(T,z)
grid on

function [z]= jacob1(T)


Ta=T+273.15
osf= 10
[z]=(-139.34411+(157570.1./Ta)-(66423080./Ta.^2)+(12438000000./Ta.^3)-
(862194900000./Ta.^4))-log(osf)
end

t= 0:0.01:40
[z]= jacob1(T)
plot(T,z)
grid on

function [z]= jacob2(T)


Ta=T+273.15
osf= 12
[z]=(-139.34411+(157570.1./Ta)-(66423080./Ta.^2)+(12438000000./Ta.^3)-
(862194900000./Ta.^4))-log(osf)
end

t= 0:0.01:40
[z]= jacob(T)
plot(T,z)
grid on

También podría gustarte