fprintf('
------------------\n')
fprintf(' MÉTODO DE
BISECIÓN\n')
fprintf('
------------------\n')
fprintf('\n');
syms x
h=input('- Defina la función : ');
a=input('- Introduzca el valor de a : ');
b=input('- Introduzca el valor de b : ');
error=input('- Introduzca el valor de precisión : ');
g=h;
fa=subs(g,a);
fb=subs(g,b);
if fa*fb < 0
c=a+(b-a)/2;
fc=subs(g,c);
m=a;
n=b;
cont=1;
fprintf('\n\n');
fprintf('
|------------------------------------------------------------------------------------------|\n');
fprintf('
| n= %3.0f | a= %0.9f
| b= %0.9f | P=
%0.9f |
Error= %e |\n', cont,m,n,c,abs(fc))
while abs(fc) > error
cont=cont+1;
if fa*fc > 0
a=c;
else
b=c;
end
c=a+(b-a)/2;
fc=subs(g,c);
m=a;
n=b;
fprintf('
| n= %3.0f | a= %0.9f
| b= %0.9f | P=
%0.9f | Error= %e |\n', cont,m,n,c,abs(fc))
end
end
fprintf('
|------------------------------------------------------------------------------------------|\n');
fprintf('\n\n');
fprintf('- El valor de x es : %10.9f\n',c);
fprintf('\n\n');
fprintf('
-----------------\n')
fprintf(' MÉTODO DE
NEVILLE\n')
fprintf('
-----------------\n')
fprintf('\n');
syms x
res=input('- La Funcion le fue dada(Si=1,No=0)? : ');
if res==1
fun=input('- Introduzca la Funcion F(x) : ','s');
end
Xi=input('- Introduzca la cantidad para
aproximar : ');
n=input('- Introduzca la cantidad de puntos dados
: ');
fprintf('\n\n');
for i=0:(n-1),
fprintf('-
Introduzca X%1.0f ',i);
X(i+1)=input (' = ');
if res==0
fprintf('-
Introduzca F(X%1.0f) ',i);
FX(i+1)=input(' = ');
else
FX(i+1)=funcion(X(i+1),fun);
end
end
for i=1:n,
Q(i,1)=FX(i);
end
for i=2:n,
for j=i:n,
Q(j,i)=(((Xi-X(j-i+1))*Q(j,i-1))-((Xi-X(j))*Q(j-1,i-1)))/(X(j)-X(j-i+1));
end
end
fprintf('\n\n');
for i=2:n,
for j=i:n,
fprintf('-
Q (%1.0f,%1.0f) = %3.8f\n ',j-1,i-1,Q(j,i));
fprintf('\n');
end
end
fprintf(' ------------------------\n')
fprintf(' MÉTODO DE
NEWTON RAPHSON\n')
fprintf('
------------------------\n')
fprintf('\n');
syms x
h=input ('- Defina la función : ');
Po=input('- Introduzca el valor de Xo : ');
error=input('- Introduzca el valor de precisión : ');
g=h;
i=subs(g,Po);
j=diff(g,x);
k=subs(j,Po);
P=Po-(i/k);
E=P-Po;
cont=1;
fprintf('\n\n');
fprintf(' |--------------------------------------------------------------------------|\n');
fprintf(' | n= %3.0f | Xo=
%0.9f |
X= %0.9f | Error= %e |\n', cont,Po,P,abs(E))
while abs(E) > error
cont=cont+1;
Po=P;
i=subs(g,Po);
j=diff(g,x);
k=subs(j,Po);
P=Po-(i/k);
E=P-Po;
fprintf('
| n= %3.0f | Xo= %0.9f
| X= %0.9f |
Error= %e |\n', cont,Po,P,abs(E))
end
fprintf('
|--------------------------------------------------------------------------|\n');
fprintf('\n\n');
fprintf('- El valor de x es : %10.9f\n',P);
fprintf('\n\n');
fprintf('- El Error absoluto es : %e\n',abs(E));
fprintf('\n\n');
fprintf('
--------------------\n')
fprintf(' MÉTODO DE
PUNTO FIJO\n')
fprintf('
--------------------\n')
fprintf('\n');
syms x
h=input ('- Defina la función : ');
Po=input('- Introduzca el valor de Po : ');
error=input('- Introduzca el valor de precisión : ');
g=h;
P=subs(g,Po);
E=P-Po;
cont=1;
fprintf('\n\n');
fprintf('
|-------------------------------------------------------------------------|\n');
fprintf(' | n= %3.0f | Po=
%0.9f |
P= %0.9f | Error= %e
|\n',
cont,Po,P,abs(E))
while abs(E) > error
cont=cont+1;
Po=P;
P=subs(g,Po);
E=P-Po;
fprintf('
| n= %3.0f | Po= %0.9f
| P= %0.9f |
Error= %e |\n', cont,Po,P,abs(E))
end
fprintf('
|-------------------------------------------------------------------------|\n');
fprintf('\n\n');
fprintf('- El valor de x es : %10.9f\n',P);
fprintf('\n\n');
fprintf('
---------------------------\n')
fprintf(' MÉTODO DE LA
POSICIÓN FALSA\n')
fprintf(' ---------------------------\n')
fprintf('\n');
syms x
h=input ('- Defina la función : ');
Po=input('- Introduzca el valor de Po : ');
P1=input('- Introduzca el valor de P1 : ');
error=input('- Introduzca el valor de precisión : ');
g=h;
i=subs(g,P1);
j=subs(g,Po);
P2=P1-[(i*(P1-Po))/(i-j)];
E=P2-P1;
cont=1;
fprintf('\n\n');
fprintf('
|----------------------------------------------------------------------------------------------|\n');
fprintf(' | n= %3.0f | Po=
%0.9f |
P1= %0.9f | P2= %0.9f
| Error= %e |\n', cont,Po,P1,P2,abs(E))
while abs(E) > error
cont=cont+1;
i=subs(g,P1);
k=subs(g,P2);
if i*k < 0
Po=P1;
P1=P2;
else
Po=Po;
P1=P2;
end
i=subs(g,P1);
j=subs(g,Po);
P2=P1-[(i*(P1-Po))/(i-j)];
E=P2-P1;
fprintf('
| n= %3.0f | Po= %0.9f
| P1= %0.9f | P2=
%0.9f |
Error= %e |\n', cont,Po,P1,P2,abs(E))
end
fprintf('
|----------------------------------------------------------------------------------------------|\n');
fprintf('\n\n');
fprintf('- El valor de x es : %10.9f\n',P2);
fprintf('\n\n');
fprintf('
--------------------\n')
fprintf(' MÉTODO DE LA
SECANTE\n')
fprintf(' --------------------\n')
fprintf('\n');
syms x
h=input ('- Defina la función : ');
Po=input('- Introduzca el valor de Po : ');
P1=input('- Introduzca el valor de P1 : ');
error=input('- Introduzca el valor de precisión : ');
g=h;
i=subs(g,P1);
j=subs(g,Po);
P2=P1-[(i*(P1-Po))/(i-j)];
E=P2-P1;
cont=1;
fprintf('\n\n');
fprintf('
|----------------------------------------------------------------------------------------------|\n');
fprintf(' | n= %3.0f | Po=
%0.9f |
P1= %0.9f | P2= %0.9f
| Error= %e |\n', cont,Po,P1,P2,abs(E))
while abs(E) > error
cont=cont+1;
Po=P1;
P1=P2;
i=subs(g,P1);
j=subs(g,Po);
P2=P1-[(i*(P1-Po))/(i-j)];
E=P2-P1;
fprintf(' | n= %3.0f | Po= %0.9f
| P1= %0.9f | P2=
%0.9f |
Error= %e |\n', cont,Po,P1,P2,abs(E))
end
fprintf('
|----------------------------------------------------------------------------------------------|\n');
fprintf('\n\n');
fprintf('- El valor de x es : %10.9f\n',P2);
fprintf('\n\n');
fprintf('
---------------------\n')
fprintf(' MÉTODO DE
STEFFENSSEN\n')
fprintf('
---------------------\n')
fprintf('\n');
syms x
Po=input('- Introduzca el valor de Po : ');
error=input('- Valor de precisión : ');
g=h;
P1=subs(g,Po);
P2=subs(g,P1);
P3=Po-(((P1-Po)^2)/(P2-(2*P1)+Po));
E=P3-Po;
cont=1;
fprintf('\n\n');
fprintf(' |-------------------------------------------------------------------------------------------|\n');
fprintf(' |n= %3.0f|Po= %0.9f|P1= %0.9f|P2=
%0.9f|P3= %0.9f|Error= %e|\n', cont,Po,P1,P2,P3,abs(E))
while abs(E) > error
cont=cont+1;
Po=P3;
P1=subs(g,Po);
P2=subs(g,P1);
P3=Po-(((P1-Po)^2)/(P2-(2*P1)+Po));
E=P3-Po;
fprintf(' |n= %3.0f|Po= %0.9f|P1= %0.9f|P2= %0.9f|P3= %0.9f|Error= %e|\n',
cont,Po,P1,P2,P3,abs(E))
end
fprintf('
|-------------------------------------------------------------------------------------------|\n');
fprintf('\n\n');
fprintf('- El valor de x es : %10.9f\n',P3);
fprintf('\n\n');
EJERCICIO
DE APLICACIÓN
fprintf('
---------------------\n')
fprintf(' MÉTODO DE STEFFENSSEN\n')
fprintf('
---------------------\n')
fprintf('\n');
syms x
a=input('- Valor del diámetro : ');
b=input('- Constante de Stefan Boltzman : ');
c=input('- Emisividad de la superficie : ');
d=input('- Coeficiente de transferencia : ');
e=input('- Temperatura ambiente : ');
f=input('- Potencia eléctrica : ');
h= input('- Función : ');
Po=input('- Valor de To : ');
error=input('- Valor de precisión : ');
g=h;
P1=subs(g,Po);
P2=subs(g,P1);
P3=Po-(((P1-Po)^2)/(P2-(2*P1)+Po));
E=P3-Po;
cont=1;
fprintf('\n\n');
fprintf('
|--------------------------------------------------------------------------------------------------|\n');
fprintf(' |n= %3.0f|To= %1.9f|T1= %1.9f|T2=
%1.9f|T= %1.9f|Error= %e|\n', cont,Po,P1,P2,P3,abs(E))
while abs(E) > error
cont=cont+1;
Po=P3;
P1=subs(g,Po);
P2=subs(g,P1);
P3=Po-(((P1-Po)^2)/(P2-(2*P1)+Po));
E=P3-Po;
fprintf(' |n= %3.0f|To= %1.9f|T1= %1.9f|T2= %1.9f|T= %1.9f|Error= %e|\n',
cont,Po,P1,P2,P3,abs(E))
end
fprintf('
|--------------------------------------------------------------------------------------------------|\n');
fprintf('\n\n');
fprintf('- La temperatura es : %10.9f\n',P3);
fprintf('\n\n');
fprintf('- El Error Absoluto es : %e\n',P3);
fprintf('\n\n');
BISECCION
ResponderEliminarfprintf('* Bisección *\n')
syms x % cambiar segun sea la variable de la funcion
a = input('Ingrese a: ');
b = input('Ingrese b: ');
f = input('Ingrese la función de trabajo: ');
e = input('Ingrese la presición: ');
fa = subs(f,a); % evalua a en la funcíon
fb = subs(f,b); % evalua b en la función
if fa*fb<0
n=1;
p = (a+b)/2;
error = abs(subs(f,p));
fprintf('\nn=%2.0f a=%.15f b=%.15f p=%.15f error=%.2e\n',n,a,b,p,error)
while e<error
n=n+1;
fa = subs(f,a);
fb = subs(f,b);
fp = subs(f,p);
if fa*fp<0
a = a;
b = p;
p = (a+b)/2;
error = abs(p - b);
else
a = p;
b = b;
p = (a+b)/2;
error = abs(p - a);
end
fprintf('n=%2.0f a=%.15f b=%.15f p=%.15f error=%.2e\n',n,a,b,p,error)
end
fprintf('\nLa raíz aproximada es: %.15f\n\n',p)
else
fprintf('\nEn el intervalo [a,b] no existe una raiz\n\n')
end
VALORES BISECCION
fprintf('* Bisección *\n')
syms h % cambiar segun sea la variable de la funcion
ho = input('Ingrese ho: ');
h1 = input('Ingrese h1: ');
V = input('Ingrese V: ');
R=input('Ingrese R: ');
L=input('Ingrese L: ');
f = input('Ingrese la función de trabajo: ');
e = input('Ingrese la presición: ');
fho = subs(f,ho); % evalua a en la funcíon
fh1 = subs(f,h1); % evalua b en la función
if fho*fh1<0
n=1;
h = (ho+h1)/2;
error = abs(subs(f,h));
fprintf('\nn=%2.0f ho=%.15f h1=%.15f h=%.15f error=%.2e\n',n,ho,h1,h,error)
while e<error
n=n+1;
fho = subs(f,ho);
fh1 = subs(f,h1);
fh = subs(f,h);
if fho*fh1<0
ho = ho;
h1 = h;
h = (ho+h1)/2;
error = abs(h - h1);
else
ho = h;
h1 = h1;
h = (ho+h1)/2;
error = abs(h - ho);
end
fprintf('n=%2.0f ho=%.15f h1=%.15f h=%.15f error=%.2e\n',n,ho,h1,h,error)
end
fprintf('\nLa raíz aproximada es: %.15f\n\n',h)
else
fprintf('\nEn el intervalo [ho,h1] no existe una raiz\n\n')
end
PUNTO FIJO
ResponderEliminarfprintf('* Punto fijo *\n')
syms x % cambiar segun la variable de la ecuación.
p0 = input('Ingrese un valor inicial P0: ');
g = input('Ingrese la función despejada : ');
e = input('Ingrese la precisión: ');
n = 1;
p = subs(g,p0);
error = abs(p - p0);
fprintf('\nn=%2.0f p0=%.15f p=%.15f error=%.2e\n',n,p0,p,error)
while e<error
n=n+1;
p0 = p;
p = subs(g,p0);
error = abs(p - p0);
fprintf('n=%2.0f p0=%.15f p=%.15f error=%.2e\n',n,p0,p,error)
end
fprintf('\nLa raiz aproximada es: %.15f\n\n',p)
VALORES PUNTO FIJO
fprintf('* Punto fijo *\n')
syms h % cambiar segun la variable de la ecuación.
ho = input('Ingrese un valor inicial ho: ');
g = input('Ingrese la función despejada : ');
e = input('Ingrese la precisión: ');
n = 1;
h = subs(g,p0);
error = abs(p - ho);
fprintf('\nn=%2.0f ho=%.15f h=%.15f error=%.2e\n',n,ho,h,error)
while e<error
n=n+1;
ho = h;
h = subs(g,ho);
error = abs(h - ho);
fprintf('n=%2.0f ho=%.15f h=%.15f error=%.2e\n',n,ho,h,error)
end
fprintf('\nLa raiz aproximada es: %.15f\n\n',h)
NEWTON
ResponderEliminarfprintf('* Newton Raphson *\n')
syms x
p0 = input('Ingrese P0(sacado de solve): ');
fx = input('Ingrese la funcion de ejer(el prog. hace la diff): ');
e = input('Ingrese la precisión: ');
dfx = diff(fx);
fp0 = subs(fx,p0);
dfp0 = subs(dfx,p0);
n = 1;
p = p0 - (fp0/dfp0);
error = abs(p - p0);
fprintf('\nn=%2.0f P0=%.15f P=%0.15f Error=%.2e\n',n,p0,p,error)
while error>e
n = n+1;
p0=p;
fp0 = subs(fx,p0);
dfp0 = subs(dfx,p0);
p = p0 - (fp0/dfp0);
error = abs(p - p0);
fprintf('n=%2.0f P0=%.15f P=%.15f Error=%.2e\n',n,p0,p,error)
end
fprintf('\nLa raiz de aproximación es: %0.15f\n\n',p)
VALORES NEWTON
fprintf('* Newton Raphson *\n')
syms h
V=input('Ingrese V: ');
R=input('Ingrese R: ');
L=input('Ingrese L: ');
fx = input('Ingrese la funcion de ejer(el prog. hace la diff): ');
ho = input('Ingrese ho(sacado de solve): ');
e = input('Ingrese la precisión: ');
dfx = diff(fx);
fho = subs(fx,ho);
dfho = subs(dfx,ho);
n = 1;
h = ho - (fho/dfho);
error = abs(h - ho);
fprintf('\nn=%2.0f ho=%.15f h=%0.15f Error=%.2e\n',n,ho,h,error)
while error>e
n = n+1;
ho=h;
fho = subs(fx,ho);
dfho = subs(dfx,ho);
h = ho - (fho/dfho);
error = abs(h - ho);
fprintf('n=%2.0f ho=%.15f h=%.15f Error=%.2e\n',n,ho,h,error)
end
fprintf('\nLa raiz de aproximación es: %0.15f\n\n',h)
SECANTE
ResponderEliminarfprintf('* Secante *\n')
syms x
p0 = input('Introduzca el valor P0: ');
p1 = input('Introduzca el valor P1: ');
fx = input('Introduzca la función del enunciado solo igualada a 0): ');
precision = input('Introduzca la precisión: ');
fp0 = subs(fx,p0);
fp1 = subs(fx,p1);
p2 = p1 - ((fp1*(p1-p0))/(fp1 - fp0));
error = abs(p2 - p1);
n = 1;
fprintf('\nn=%2.0f p0=%2.9f p1=%2.9f p2=%2.9f error=%1.2e\n',n,p0,p1,p2,error)
while error>precision
n=n+1;
p0=p1;
p1=p2;
fp0 = subs(fx,p0);
fp1 = subs(fx,p1);
p2 = p1 - ((fp1*(p1-p0))/(fp1 - fp0));
error = abs(p2 - p1);
fprintf('n=%2.0f p0=%2.9f p1=%2.9f p2=%2.9f error=%1.2e\n',n,p0,p1,p2,error)
end
fprintf('\n-->El valor de aproximación P2 es: %2.9f\n\n',p2)
VALORES SECANTE
fprintf('* Secante *\n')
syms h
ho = input('Introduzca el valor ho: ');
h1 = input('Introduzca el valor h1: ');
V=input('Introduzca el valor de V: ');
R=input('Introduzca el valor de R: ');
L=input('Introduzca el valor de L: ');
fx = input('Introduzca la función del enunciado solo igualada a 0): ');
precision = input('Introduzca la precisión: ');
fho = subs(fx,ho);
fh1 = subs(fx,h1);
h2 = h1 - ((fh1*(h1-ho))/(fh1 - fho));
error = abs(h2 - h1);
n = 1;
fprintf('\nn=%2.0f ho=%2.9f h1=%2.9f h2=%2.9f error=%1.2e\n',n,ho,h1,h2,error)
while error>precision
n=n+1;
ho=h1;
h1=h2;
fho = subs(fx,ho);
fh1 = subs(fx,h1);
h2 = h1 - ((fh1*(h1-ho))/(fh1 - fho));
error = abs(h2 - h1);
fprintf('n=%2.0f ho=%2.9f h1=%2.9f h2=%2.9f error=%1.2e\n',n,ho,h1,h2,error)
end
fprintf('\n-->El valor de aproximación es: %2.9f\n\n',h2)
POSICION FALSA
ResponderEliminarfprintf('Método de Posición Falsa.\n')
syms x
p0 = input('P0: ');
p1 = input('P1: ');
fx = input('Fx(funcion igualada a 0): ');
precision = input('Precision: ');
fp0 = subs(fx,p0);
fp1 = subs(fx,p1);
if fp0*fp1 < 0
p2 = p1 - ((fp1*(p1-p0))/(fp1 - fp0));
error = abs(p2-p1);
n = 1;
fprintf('\nn=%2.0f P0=%3.15f P1=%3.15f P2=%3.15f Error=%1.2e\n',n,p0,p1,p2,error)
fp2 = subs(fx,p2);
while error>precision
n = n+1;
if fp1*fp2 < 0
p0 = p1;
p1 = p2;
else
p1 = p2;
end
fp0 = subs(fx,p0);
fp1 = subs(fx,p1);
p2 = p1 - ((fp1*(p1-p0))/(fp1 - fp0));
error = abs(p2 - p1);
fprintf('n=%2.0f P0=%3.15f P1=%3.15f P2=%3.15f Error=%1.2e\n',n,p0,p1,p2,error)
fp2 = subs(fx,p2);
end
fprintf('\n--> El valor de aproximación P2 es: %3.15f\n\n',p2)
else
fprintf('Entre P0 y P1 no existe raiz.')
end
VALORES POSICION FALSA
fprintf('Método de Posición Falsa.\n')
syms h
ho=input('Ingrese ho: ');
h1=input('Ingrese h1: ');
V=input('Ingrese V: ');
R=input('Ingrese R: ');
L=input('Ingrese L: ');
fx = input('Fx(funcion igualada a 0): ');
precision = input('Precision: ');
fho = subs(fx,ho);
fh1 = subs(fx,h1);
if fho*fh1 < 0
h2 = h1 - ((fh1*(h1-ho))/(fh1 - fho));
error = abs(h2-h1);
n = 1;
fprintf('\nn=%2.0f ho=%3.15f h1=%3.15f h2=%3.15f Error=%1.2e\n',n,ho,h1,h2,error)
fh2 = subs(fx,h2);
while error>precision
n = n+1;
if fh1*fh2 < 0
ho = h1;
h1 = h2;
else
h1 = h2;
end
fho = subs(fx,ho);
fh1 = subs(fx,h1);
h2 = h1 - ((fh1*(h1-ho))/(fh1 - fho));
error = abs(h2 - h1);
fprintf('n=%2.0f ho=%3.15f h1=%3.15f h2=%3.15f Error=%1.2e\n',n,ho,h1,h2,error)
fh2 = subs(fx,h2);
end
fprintf('\n--> El valor de aproximación es: %3.15f\n\n',h2)
else
fprintf('Entre ho y h1 no existe raiz.')
end
STEFFENSEN
ResponderEliminarfprintf('Método de Steffensen.\n')
syms x
p0 = input('P0: ');
fx = input('Fx(despejar x de la funcion y insertar la ec. de x): ');
precision = input('Precisión: ');
p1 = subs(fx,p0);
p2 = subs(fx,p1);
p = p0 - (((p1 - p0)^2)/(p2 - 2*p1 + p0));
error = abs(p - p0);
n = 1;
fprintf('\nn=%2.0f P0=%3.15f P1=%3.15f P2=%3.15f P=%3.15f Error=%1.2e\n',n,p0,p1,p2,p,error)
while error>precision
n=n+1;
p0 = p;
p1 = subs(fx,p0);
p2 = subs(fx,p1);
p = p0 - (((p1 - p0)^2)/(p2 - 2*p1 + p0));
error = abs(p - p0);
fprintf('n=%2.0f P0=%3.15f P1=%3.15f P2=%3.15f P=%3.15f Error=%1.2e\n',n,p0,p1,p2,p,error)
end
fprintf('\n--> El valor de aproximación P es: %3.15f\n\n',p)
VALORES STEFFENSEN
fprintf('Método de Steffensen.\n')
syms V
P=input('Ingrese P(kPa): ');
T=input('Ingrese T(°K): ');
Pc=input('Ingrese Pc(Kpa): ');
Tc=input('Ingrese Tc(°K): ');
R=input('Ingrese R(kJ/kg°K): ');
a=(27*((R*Tc)^(2)))/(64*Pc);
b=(R*Tc)/(8*Pc);
Vo = input('Ingrese Vo: ');
f = input('Ingrese la Funcion de trabajo(despejar x de la funcion y insertar la ec. de x): ');
precision = input('Precisión: ');
V1 = subs(f,Vo);
V2 = subs(f,V1);
V = Vo - (((V1 - Vo)^2)/(V2 - 2*V1 + Vo));
error = abs(V - Vo);
n = 1;
fprintf('\nn=%2.0f Vo=%3.15f V1=%3.15f V2=%3.15f V=%3.15f Error=%1.2e\n',n,Vo,V1,V2,V,error)
while error>precision
n=n+1;
Vo = V;
V1 = subs(f,Vo);
V2 = subs(f,V1);
V = Vo - (((V1 - Vo)^2)/(V2 - 2*V1 + Vo));
error = abs(V - Vo);
fprintf('n=%2.0f Vo=%3.15f V1=%3.15f V2=%3.15f V=%3.15f Error=%1.2e\n',n,Vo,V1,V2,V,error)
end
fprintf('\n--> El valor de aproximación V es: %3.15f\n\n',V)