Está en la página 1de 13

2do.

EXAMEN DE PRQ214

APELLIDOS: ZAPATA MOLINA NOMBRES: JENIFER ELIZABETH


CARRERA: INGENIERIA DE ALIMENTOS

1.- (25%) Suponga el lector que está diseñando un tanque esférico (véase la figura P6.26 – Libro: Chapra)
de almacenamiento de agua para un poblado pequeño de un país en desarrollo. El volumen del líquido
que puede contener se calcula con

donde V = volumen [pie3 ], h = profundidad del agua en el tanque [pies], y R = radio del tanque [pies]. Si
R = 3 m, ¿a qué profundidad debe llenarse el tanque de modo que contenga 30 m3 ? Resuelva utilizando
el método de Newton-Raphson. Encuentre el error relativo aproximado después de cada iteración.
Observe que el valor inicial de R convergerá siempre.

ALGORITMO
DIAGRAMA DE FLUJO

INICIO

X_0, to

V=30
R=3

F(h)=(pi*h^2*(3*R-h)/3)-v
df=f h)

Y=Newton_Rapson(f,df,tol,x_0)

FIN

% EJERCICIO 1 SEGUNDO PARCIAL


%NOMBRE: Zapata Molina Jenifer Elizabeth

%este programa determina la altura de un tanque esferico, con el metodo de


%Newton Raphson
clc
clear all
v=30; %m^3
R=3; %m
tol=input('ingrese el valor de la tolerancia: ');
x_0=input('ingrese el valor inicial: ');
syms h
g=(pi*h^2*(3*R-h)/3)-v;
dg=diff(g);
f=inline(g);
df=inline(dg);
y=Newton_Raphson(f, df, tol, x_0);
fprintf('el valor de la altura es: %g[m]\n', y);

función Newton_Raphson:
function [y]=Newton_Raphson(f, df, tol, x_0)
error=1;
while (error>tol)
y=x_0-f(x_0)/df(x_0);
error =abs(y-x_0);
x_0=y;
end
end

PRUEBA DE ESCRITORIO

Imprimiendo valores de “y” y error:

Programa en Matlab:
%este programa determina la altura de un tanque esferico, con el metodo de
%Newton Raphson clc
clear all
v=30; %m^3
R=3; %m
tol=input('ingrese el valor de la tolerancia: ');
x_0=input('ingrese el valor inicial: ');
syms h
g=(pi*h^2*(3*R-h)/3)-v;
dg=diff(g);
f=inline(g);
df=inline(dg);
error=1;
i=1;
fprintf('N x error\n');
while (error>tol)
y=x_0-f(x_0)/df(x_0);
error =abs(y-x_0);
fprintf('%g %g %g\n',i,y ,error);
x_0=y;
i=i+1;
end
fprintf('el valor de la altura es: %g[m]\n', y);

PRUEBA DE ESCRITORIO
2.- (25 %) Utilizando el método de mínimos cuadrados, realice un programa en MATLAB usando GUIDE
para ajustar n+1 datos, a un polinomio de grado n o menor. Ejecute el programa para encontrar el mejor
ajuste, a los siguientes datos:
x 0.2 0.5 0.8 1.2 1.7 2 2.3
y 500 700 1000 1200 2200 2650 3750

Define el mejor ajuste tomando en cuenta el valor del coeficiente de correlación, cuanto más cerca este
de +1 o -1 será el mejor ajuste.

Muestre gráficos de la curva ajustada y de los puntos dispersos. También de los errores de ajuste en
cada punto.

DIAGRAMA DE FLUJO

INICIO

X,Y

n=7

x=[0.2 0.5 0.8 1.2 1.7 2 2.3];


y=[500 700 1000 1200 2200 2650 3750];

sumx_y=sum(x.*y);
sumx=sum(x);

sumx_cuadrado=sum(x.^2);
cuadrado_sumx=(sumx)^2

sum_y=sum(y);

a1=((n*sumx_y)-(sumx*sum_y))/(n*sumx_cuadrado-cuadrado_sumx);

y=mean(y);
x=mean(x);

a0=y-a1*x;

FIN
PROGRAMA EN MATLAB
% EJERCICIO 2 SEGUNDO PARCIAL
%NOMBRE: Zapata Molina Jenifer Elizabeth
clc
clear all
x=[0.2 0.5 0.8 1.2 1.7 2 2.3];
y=[500 700 1000 1200 2200 2650 3750];
n=7;
sumx_y=sum(x.*y);
sumx=sum(x);
sumx_cuadrado=sum(x.^2);
cuadrado_sumx=(sumx)^2;
sum_y=sum(y);
a1=((n*sumx_y)-(sumx*sum_y))/(n*sumx_cuadrado-cuadrado_sumx);
y=mean(y);
x=mean(x);
a0=y-a1*x;
disp('la ecuacion de la curva ajustada es:');
fprintf('y= %d + %f x \n',a0,a1);

PRUEBA DE ESCRITORIO
3.- (25 %) Desarrolle y pruebe un sub-programa (function) en MATLAB, para encontrar un polinomio
interpolante de grado n y el valor de f(x) para cualquier x en el intervalo [xmin, xmax]. Formule un
Programa interactivo en GUIDE. Pruebe el programa con los datos del ejercicio 4 (Tarea_8). a) Usando el
método de Lagrange, b) Para el método de Newton.

Sugerencia - Argumentos: (x, y, n, xp) xp es el valor de x para encontrar su valor de yp.

ALGORITMO

1. Utilizaremos el método de interpolación de lagrange


2. Sabemos que potencia es la variable dependiente y la velocidad el variable
independiente Con los datos realizaremos las diferencias divididas

PSEUDOCODIGO

INTERPOLACION LAGRANGE
function [A] = Lagrange(X,Y)
%METODO DE LAGRANGE
%EJERCICIO3 JENIFER ELIZABTH ZAPATA MOLINA

Inicio
hacer para k=1:n+1,
V=1;
Hacer para j=1:n+1,
Si k~=j
V=conv(V,poly(X(j)))/(X(k)-X(j));
Fin si
Fin para
L(k,:)=V;
Fin para
C=Y*L;
Fin

PROGRAMA EN MATLAB
function [A] = Lagrange(X,Y)
%METODO DE LAGRANGE
%EJERCICIO3 JENIFER ELIZABTH ZAPATA MOLINA
n1=length(X);
n=n1-1;
L=zeros(n1,n1);
for k=1:n+1,
V=1;
for j=1:n+1,
if k~=j
V=conv(V,poly(X(j)))/(X(k)-X(j));
end
end
L(k,:)=V;
end
A=Y*L;
End

PRUEBA DE ESCRITORIO

>> Y=[320 490 540 500 480]

Y=

320 490 540 500 480

>> [A] = Lagrange(X,Y)

A=

0.0001 -0.0180 0.6187 11.0931 -69.0629


>> Polinomio=poly2sym(A)

Polinomio =

(140311507112827*x^4)/1152921504606846976 - (81236545073187*x^3)/4503599627370496 +
(1360600532165*x^2)/2199023255552 + (24393892637551*x)/2199023255552 -
75935472333175/1099511627776

POTENCIA= 530.5709[W]
PSEUDOCODIGO

INTERPOLACION NEWTON

Inicio
Hacer para j=2:n
Hacer para k=j:n
T(k,j)=(T(k,j-1)-T(k-1,j-1))/(X(k)-X(k-j+1));
Fin para
Fin para
A=T(n,n);
Hacer para k=(n-1):-1:1
A=conv(A,poly(X(k)));
m=length(A);
A(m)=A(m)+T(k,k);
Fin para
Fin

PROGRAMA EN MATLAB
function [A,T] =Newton(X,Y)
%METODO DE NEWTON
%EJERCICIO3 JENIFER ELIZABTH ZAPATA MOLINA

n=length(X);
T=zeros(n,n);
T(:,1)=Y';
for j=2:n
for k=j:n
T(k,j)=(T(k,j-1)-T(k-1,j-1))/(X(k)-X(k-j+1));
end
end
A=T(n,n);
for k=(n-1):-1:1
A=conv(A,poly(X(k)));
m=length(A);
A(m)=A(m)+T(k,k);
end
end

PRUEBA DE ESCRITORIO

>> X=[22.53 35.41 48.28 61.15 74.03]

X=

22.5300 35.4100 48.2800 61.1500 74.0300

>> Y=[320 490 540 500 480]

Y=

320 490 540 500 480


>> [A,T] =Newton(X,Y)

A=

0.0001 -0.0180 0.6187 11.0931 -69.0629

>> Polinomio=poly2sym(A)

Polinomio =

(4489968227610501*x^4)/36893488147419103232 - (81236545073189*x^3)/4503599627370496 +
(2786509889873889*x^2)/4503599627370496 + (1561209128803261*x)/140737488355328 -
607483778665419/8796093022208

POTENCIA= 530.5709[W]

.
.
4.- (25 %)

ALGORITMO

Para resolver el primer literal se realizó la siguiente tabla donde se ha calculadodT/dt mediante el uso de
diferencias finitas ya sean progresivas, centradas o regresivas según la posición en la que se
encontraban los datos y la exactitudque se requería, se obtuvieron los siguientes resultados:

Para realizar el segundo literal se ha realizado una gráfica dT/dt versus (T-Ta)con los anteriores
resultados, además se graficó su línea de tendencia y surespectiva función, se obtuvo el siguiente
resultado:
Finalmente, para resolver el tercer literal, se ha realizado una regresión lineal, para lograr obtener el
valor de k, el cual se puede comprobar con la función del anterior literal, se obtuvo los siguientes
resultados:

Tomando en cuenta la ecuación inicial planteada k=a1, entonces: k=-0.1545

PSEUDOCODIGO

Inicio
Hacer para i=1:nv
Si i==(nv-1) ó i==nv
dTdt(i)=(-3*T(i-2)+4*T(i-1)-T(i))/(2*h);
si no
dTdt(i)=(-3*T(i)+4*T(i+1)-T(i+2))/(2*h);
fin si
fin para
hacer para i=1:nv
T(i)=T(i)-20;
Fin para
Mostrar x=T
fin

PROGRAMA EN MATLAB

%EJERCICIO 4 SEGUNDO PARCIAL


%NOMBRE: ZAPATA MOLINA JENIFER ELIZABETH
clc
clear
T=[80 44.5 30 24.1 21.7 20.7];
t=[0 5 10 15 20 25];
nv=length(T);
h=5;
for i=1:nv
if i==(nv-1) || i==nv
dTdt(i)=(-3*T(i-2)+4*T(i-1)-T(i))/(2*h);
else
dTdt(i)=(-3*T(i)+4*T(i+1)-T(i+2))/(2*h);
end
end
for i=1:nv
T(i)=T(i)-20;
end
x=T;
y=dTdt;
[a,b] = regresionlinial(x,y);
K=-b;
plot(x,y)
grid minor
fprintf('El valor de K es %g\n',K)

- Función para la regresión lineal

PSEUDOCODIGO

Inicio
Hacer para i=1:n
sum3=sum3+x(i)*y(i);
fin para
hacer para i=1:n
sum4=sum4+x(i)^2;
fin para
b=((n)*sum3-sum1*sum2)/((n)*sum4-(sum1)^2);
a=(sum2-b*sum1)/(n);
Fin

PROGRAMA EN MATLAB

[a,b] = regresionlinial(x,y);

function [a,b] = regresionlinial(x,y)


%REGRESION LINIAL
n=length(x);
sum1=sum(x);
sum2=sum(y);
sum3=0;
sum4=0;
for i=1:n
sum3=sum3+x(i)*y(i);
end
for i=1:n
sum4=sum4+x(i)^2;
end
b=((n)*sum3-sum1*sum2)/((n)*sum4-(sum1)^2);
a=(sum2-b*sum1)/(n);
end

PRUEBA DE ESCRITORIO

El valor de K es 0.142906.

También podría gustarte