Tres ejercicios_MatLab

Páginas: 6 (1280 palabras) Publicado: 2 de diciembre de 2015
Método iterativo de los ¨Tres puntos¨, para hallar una aproximación de un mínimo relativo de la función continúa f(x) en un intervalo dado, codificado para MatLab:
Lógica del método: Para una función continua f(x), en el intervalo [a, c], b es el mínimo de la función en dicho intervalo si f(a) > f(b) y f(c) > = f(b). Donde a < b < c.
i=1;
af(1) = input('Introduzca cota inferior del intervalo:'); % Cota inferior del intervalo: af
bf(1) = input('Introduzca cota superior del intervalo: '); % Cota superior del intervalo: bf
tol = input('Introduzca Tolerancia: '); % Error admisible
syms x;
f = input('Ingrese la función f(x): '); % La función se almacena en f
Amp(1)=bf(1)-af(1); % Amplitud del intervalo: Amp
Alfa(1)=Amp(1)/4;
x1(1)=af(1)+Alfa(1); % Calculo de los trespuntos,
x2(1)=af(1)+2*Alfa(1); % primera iteración.
x3(1)=af(1)+3*Alfa(1);
f1(1)=subs(f,x,x1(1)); % Valor de la función en los
f2(1)=subs(f,x,x2(1)); % puntos calculados.
f3(1)=subs(f,x,x3(1));
fprintf(' i a b x1 x2 x3 error \n\n');
fprintf('%2d\t %11.7f\t %11.7f\t %11.7f\t %11.7f\t %11.7f\t %2.7f\t \n\n',i,af(1),bf(1),x1(1),x2(1),x3(1),bf(1)-af(1)); % Publicaprimera iteración.
while bf(i)-af(i) > 2*tol, % itera siempre que el ancho del
if f1(i) > f2(i) % intervalo sea mayor a 2 veces tol
if f3(i) > f2(i) % Si f(x1) > f(x2) y f(x3) > f(x2),
af(i+1)=x1(i); % entonces el intervalo se redefine
bf(i+1)=x3(i); % entre x1 y x2
else % Si f(x1) > f(x2) y f(x3) < = f(x2),
af(i+1)=x2(i); %entonces el intervalo se redefine
bf(i+1)=bf(i); % entre x2 y bf
end
else % Si f(x1) < = f(x2), entonces el
bf(i+1)=x2(i); % intervalo se redefine: af y x2
af(i+1)=af(i);
end
i=i+1; % Cálculos para la nueva iteración.
Amp(i)=bf(i)-af(i);
Alfa(i)=Amp(i)/4;
x1(i)=af(i)+Alfa(i);
x2(i)=af(i)+2*Alfa(i);
x3(i)=af(i)+3*Alfa(i);
f1(i)=subs(f,x,x1(i));f2(i)=subs(f,x,x2(i));
f3(i)=subs(f,x,x3(i));
fprintf('%2d\t %11.7f\t %11.7f\t %11.7f\t %11.7f\t %11.7f\t %2.7f\t \n\n',i,af(i),bf(i),x1(i),x2(i),x3(i),bf(i)-af(i)); % Publica nueva iteración.
End % Fin de iteraciones.
x2(i+1)=(bf(i)+af(i))/2; % Mejor aproximación, punto
% medio del intervalo resultante
fprintf('Mejor aproximación: %11.7f\n',x2(i+1)); % publicación del aproximación% resultante.

Corrida para la función: x*sen(4*x)


Método de la ¨Sección Áurea¨, para hallar una aproximación de un mínimo relativo de la función continúa f(x) en un intervalo dado, codificado para MatLab:
Lógica del método: Para una función continua f(x) en el intervalo [a, b], reduciremos el intervalo por uno que contenga el mínimo de la función. Dividir un segmento ab en proporciónáurea es hallar el punto c de forma que el cociente ab/ac sea igual al número de oro, (1 + √5)/2.
El método halla dos puntos que cumplen con la proporción áurea, uno con respecto al borde inferior, y uno respecto al borde superior. Entonces los cuatro puntos en el intervalo tendrían el orden a < c1 < c2 < b, ahora si f(c1) < f(c2) el nuevo intervalo es [a, c2]; en caso contrario es [c1, b].
i=1;PI=3.1416;
Alfa=0.6180;
af(1) = input('Introduzca cota inferior del intervalo: ');
bf(1) = input('Introduzca cota superior del intervalo: ');
tol = input('Introduzca Tolerancia: ');
syms x;
f = input('Ingrese la función f(x): ');
l(1)=bf(1)-af(1);
m(1)=l(1)*Alfa;
x1(1)=af(1)+m(1);
x2(1)=bf(1)-m(1);
f1(1)=subs(f,x,x1(1));
f2(1)=subs(f,x,x2(1));
fprintf(' i a b x1 x2 error \n\n');fprintf('%2d\t %11.7f\t %11.7f\t %11.7f\t %11.7f\t %2.7f\t \n\n',i,af(1),bf(1),x1(1),x2(1),bf(1)-af(1));
while bf(i)-af(i) > 2*tol,
if f1(i) > f2(i)
bf(i+1)=x1(i);
af(i+1)=af(i);
else
af(i+1)=x2(i);
bf(i+1)=bf(i);
end
i=i+1;
l(i)=bf(i)-af(i);
m(i)=l(i)*Alfa;
x1(i)=af(i)+m(i);
x2(i)=bf(i)-m(i);
f1(i)=subs(f,x,x1(i));
f2(i)=subs(f,x,x2(i));
fprintf('%2d\t %11.7f\t %11.7f\t %11.7f\t %11.7f\t %2.7f\t...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • tres
  • TRES
  • los tres
  • tres
  • Tres
  • Tres
  • TRESA
  • tres

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS