Está en la página 1de 2

MAXIMO for i = 1:nf

if i == 1 && j == 1
function [x,y,z]=fmaxz(X,Y,Z) M(i, j) = 1;
[nf , nc]= size(X); [nfy , ncy]= elseif j == 1
size(Y); M(i, j) = M(i 1, j) +nc;
[nfz , ncz]= size(Z); m = M(i, j);
for i=1:nfz if m == n
f1=Z(i,:); x = X(i, j);
[v c]=max(f1); end
maxs(i)=v; else
p(i)=c; M(i, j) = M(i, j - 1)+1;
end m = M(i, j);
[v1 c1]=max(maxs); if m == n
z=Z(c1,p(c1)); y=Y(c1,p(c1)); x = X(i, j);
n=p(c1); end
for j=1:nc end
for i=1:nf end
if i==1 && j==1 end
M(i,j)=1; end
elseif j==1
M(i,j)=M(i-1,j)+nc;
m=M(i,j); PROMEDIO
if m==n
x=X(i,j);
end function [x, y, z] = fmidpoint(X, Y,
else Z)
M(i,j)=M(i,j-1)+1; avg_x = mean(X(:)); % Promedio de
m=M(i,j); todas las coordenadas X
if m==n avg_y = mean(Y(:)); % Promedio de
x=X(i,j); todas las coordenadas Y
end avg_z = mean(Z(:)); % Promedio de
end todos los valores Z
end x = avg_x;
end y = avg_y;
end z = avg_z;
end
MINIMO RAICES REALES DE UN POLINOMIO
CULAQUIERA.
function [x, y, z] = fminz(X, Y, Z)
[nf, nc] = size(X); function y =fy(x)
[nfy, ncy] = size(Y); y=-3*x.^3+50*x.^2+15*x-500;
[nfz, ncz] = size(Z); end
for i = 1:nfz
f1 = Z(i, :); function
[v, c] = min(f1); [rx,ry]=raices(f,xspan,n)%los
mins(i) = v; argumentos o salidadadas pueden
p(i) = c; tener cualquier nombre solo debenser
end los mismos en la funcion
[v1, c1] = min(mins); x=linspace(xspan(1),xspan(2),n);
z = Z(c1, p(c1)); y=f(x);
y = Y(c1, p(c1)); rx=[]; ry=[];%inicializados
n = p(c1); deelementos de salida
x = X(c1, p(c1)); % Agregamos esta k=0;%contador
línea para asignar la coordenada x for i=1:n-1
for j = 1:nc if y(i)==0
k=k+1;%cuantas raices tengo Ynum = NaN(1,nmax);
%que elemeto es Ynum(1) = yo;
rx(k)=x(i); % utilizar un lazo de iteracion
ry(k)=y(i); numerica
elseif y(i)*y(i+1)<0 %cuando es for n=1:nmax-1
falso k1 = yprima(Tnum(n),Ynum(n)); %
k=k+1; cambio de Euler simple
rx(k)=(x(i)+x(i+1))/2; k2 =
ry(k)=f(rx(k)); yprima(Tnum(n)+h/2,Ynum(n)+k1*h/2);
end % cambio estimado en el punto futuro
end de Euler simple
end k3 =
yprima(Tnum(n)+h/2,Ynum(n)+k2*h/2);
EULER SIMPLE k4 =
yprima(Tnum(n)+h,Ynum(n)+k3*h);
function y=yex(t) % calcular nuevo valor con el
y=t.^2-2*t-2*exp(-t)+4 promedio de cambios
end cambio = (k1+2*k2+2*k3+k4)*h/6;
function dy=yprima(t,y) Ynum(n+1)=Ynum(n)+cambio;
dy=t^2-y+2; end
end end
function[t,y]=euler_simple(yp,tspam, FUNCIONES
h,yo)
t=tspam(1):h:tspam(2); % funcion error RMS
nmax=length(t); function er = erms(Ynum,Yex)
y=NaN(1,nmax); er = (sum((Ynum-
y(1)=yo; Yex).^2)/length(Yex))^0.5;
for n=1:nmax-1 end
cambio=yp(t(n),y(n))*h; % ecuacion diferencial ordinaria
y(n+1)=y(n)+ cambio; function yp = yprima(t,y)
end yp = t^2-y+2;
end end
EULER MEJORADO % solucion exacta de la ecuacion
anterior
function[t,y]=euler_mejorado(yp,tspa function y=yex(t)
m,h,yo) y = t.^2-2*t-2*exp(-t)+4;
t=tspam(1):h:tspam(2); end
nmax=length(t);
y=NaN(1,nmax);
y(1)=yo;
for n=1:nmax-1
k1=yp(t(n),y(n));
k2=yp(t(n)+h,y(n)+k1*h);
cambio=(k1+k2)*h/2;
y(n+1)=y(n)+ cambio;
end
end
RUNGE-KUTTA 4TO
function[Tnum,Ynum] =
RK4(yprima,tspan,h,yo)
Tnum = tspan(1):h:tspan(2);
% numero de iteraciones
nmax = length(Tnum);
% inicializar Ynum

También podría gustarte