MATLAB Coding Notes
MATLAB Coding Notes
MÉTODO NEWTON-RAPHSON
clc, clear, format compact
% Método Newton-Raphson
p = 1;
while p==1
x0 = input('Introducir estimado de x0: ');
pol = [1 6 7 -6 -8];
fx = polyval(pol, x0);
if fx == 0
disp('La raíz es x0'), disp(x0);
end
tol = 1e-9;
iter = 0;
while abs(fx) > tol
fx = polyval(pol, x0);
fxd = polyder(pol);
fxp = polyval(fxd,x0);
x = x0-(fx/fxp);
x0 = x;
iter = iter + 1;
end
disp('x0 = '), disp(x0);
disp('x = '), disp(x);
disp('El número de iteraciones fue:')
disp(iter)
p = input('¿Quieres repetir el programa? si = 1, no = 0');
clc
end
disp('fin de programa')
ECUACIÓN FUNCTION
function fun = ecuacion(var)
% declarar variables
x = var(1);
% datos
% ec. aux
% funciones igualadas a cero
fun(1) = (x^4)+(6*x^3)+(7*x^2)-(6*x)-(8);
PROBLEMA 1 DOC 8
function fun = prob1doc8(V)
a = 1.56414e8;
b = 44.897;
R = 83.14;
T = 333;
P = 13.76;
fun(1) = ((R*T)/(V-b))-(a/(T^0.5*V*(V+b)))-P;
% Archivo de función
function fun = prob1doc8(V)
a = 1.56414e8;
b = 44.897;
R = 83.14;
T = 333;
P = 13.76;
fun(1) = ((R*T)/(V-b))-(a/(T^0.5*V*(V+b)))-P;
end
PROBLEMA 2 DOC 8
function fun = prob2doc8(var)
% help fsolve
% renombrar variables
z = var(1);
y = var(2);
% funciones igualadas a cero
fun(1) = z*exp(z*y+0.8) + exp(y^2)-3;
fun(2) = z^2 - y^2 - 0.5*exp(z*y);
PROBLEMA 3 DOC 8
function fun = prob3doc8(var)
vf = var(1);
g = 9.8066;
p = 1.23;
pp = 7860;
Dp = 0.0005;
u = 1.79e-5;
Re = (vf*Dp*p)/u;
if Re < 0.1
Cd = 24/Re;
fun(1) = (sqrt((4*g*(pp-p)*Dp)/(3*Cd*p)))-vf;
elseif Re > 0.1 && Re < 1000
Cd = (24/Re)*(1+0.14*(Re^0.7));
fun(1) = (sqrt((4*g*(pp-p)*Dp)/(3*Cd*p)))-vf;
end
end
PROBLEMA 4 DOC 8
clc, clear, format compact
T0 = 400;
[T,feval, flag] = fsolve(@prob4doc8, T0)
% sol: cuando T0 = 2000, T = 554.6002
% sol: cuando T0 = 298, T = 306.2263
k = 650*exp(-3800/T);
x = (12*k)/(1+(12*k));
disp('La temperatura es: '), disp(T)
disp('La conversión es: '), disp(x)
PROBLEMA 1 DOC 9
clc, clear, format compact, close all
global P
a0 = 1;
Pvec = (20:2:30).*760;
for i = 1:length(Pvec)
P = Pvec(i);
[a(i), feval(i), flag(i)] = fsolve(@prob1doc9, a0)
end
plot (Pvec, a), title('Alpha vs. P'), xlabel('P'), ylabel('alpha'), grid
function fun = prob1doc9(a)
global P
T = 60;
A = [6.8522 6.80776 6.6118 6.82915];
B = [1064.63 935.77 389.93 663.72];
C = [232.0 238.789 266.0 256.681];
z = [0.20 0.15 0.40 0.25];
Pvap = 10.^(A-(B./(C+T)));
k = Pvap./P;
x = z./(1+a.*(k-1));
y = k.*x;
fun(1) = sum(x-y);
end
PROBLEMA 2 DOC 9
clc, clear, format compact, close
global P
var0 = [1 1 1];
Pvec = linspace(2,8,10);
for i = 1:10
P = Pvec(i);
[var(i,:),feval(i,:),flag(i)] = fsolve(@prob2doc9, var0)
end
Fa = var(1); % 0.2271
Fb = var(2); % 2.2932
Fc = var(3); % 0.1365
% Euler semi-implícito
for i=1:n
x(i+1) = x(i) + h;
ypr(i+1) = y(i) + h*(y(i) - 4*exp(-3*x(i)));
y(i+1) = y(i) + (h/2)*((y(i) - 4*exp(-3*x(i))) + ypr(i) - 4*exp(-3*x(i+1)));
end
x3=x;
y3=y;
%
figure(1)
plot(x1,y1,x2,y2,x3,y3), xlabel('x'), ylabel('y'), grid, xlim([0 xf]), legend('Euler explícito','Euler
implícito','Euler semi-implícito', 'Runge Kutta 2^{do}', 'Runge Kutta 3^{er}', 'Location', 'NE'),
xlim([0 xf])
% ODE45
xr = [0 1.5]; %
yi = 1;
[x,y] = ode45(@ec_ode,xr,yi)
figure(2)
plot(x,y,x1,y1,x2,y2,x3,y3,x4,y4,x5,y5), xlabel('x'), ylabel('y'), grid
EC ODE
function dydx = ec_ode(x,y)
% renombrar varaibles
% dydx = y-4*exp(-3*x);
dydx(1) = y-4*exp(-3*x);
% Transponer vector de funciones
dydx = dydx';
% Ecuaciones diferenciales
dTrdt = (U*A*(Tv-Tr))/(m*Cp);
dTrdt = dTrdt'; % OJO
end
dvardt(1) = ra;
dvardt(2) = -ra;
dvardt(3) = -ra;
dvardt(4) = (-ra*(-H))/((FA*Cpa)+(FB*Cpb)+(FC*Cpc));
dvardt = dvardt';
end