Sei sulla pagina 1di 11

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS

FACULTAD DE INGENIERÍA DE SISTEMAS E INFORMÁTICA


ASIGNATURA: Métodos Numéricos
CICLO: 2018-I
TIEMPO: 180 minutos

SEGUNDO EXAMEN PARCIAL


GRUPO APELLIDOS Y NOMBRES
3
CCENCHO PARI JUAN CARLOS

INDICACIONES:
 Desarrolle la prueba siguiendo las indicaciones y los métodos sugeridos.
 Plantee la solución en su hoja de examen, sea claro y ordenado.
 Puede utilizar calculadora, Matlab u otra aplicación que desee.
 Si ha usado un programa cópielo en su examen incluyendo los resultados que arroja.
 Sea ordenado en la solución de los problemas. Se calificará procedimiento.
 No está permitido la copia de imágenes, todo debe de estar escrito en Word.

Problema 01.
El circuito eléctrico anexo está formado por distintas resistencia y fuentes de alimentación.
Determinar la intensidad de corriente que pasa por cada resistencia utilizando para ello las leyes
de Kirchhoff para la resolución de circuitos resistivos. Los datos conocidos del circuito son los
siguientes:

Las ecuaciones para las cuatro mallas que dan la solución a este problema son las siguientes:

a) (2 ptos.) Representar el sistema de ecuaciones lineales algebraicamente y matricialmente.

Representación algebraica:
44𝐼1 − 10𝐼2 − 16𝐼3 + 0𝐼4 = 20
10𝐼1 + 23𝐼2 − 6𝐼3 − 12𝐼4 = 0
{
−16𝐼1 − 6𝐼2 + 30𝐼3 − 8𝐼4 = −12
0𝐼1 − 12𝐼2 − 8𝐼3 + 34𝐼4 = 40
Representación matricial:

 44  10  16 0  𝐼1
  20
 10 23  6  12  𝐼2 0 )
  16  6 30  8  . (𝐼 ) = (
  3 −12
 0  12  8 34  𝐼4 40

b) (2.5 ptos.) Resolver con el método de Jacobi hasta que los errores sean menores que 0.5%.
Muestre el número de iteraciones.

Resolución en Matlab
>>%Declaramos las siguientes variables
>>A = [44 -10 -16 0 ; 10 23 -6 -12 ; -16 -6 30 -8 ; 0 -12 -8 34]
>>b = [20 ; 0 ; -12 ; 40]
>>tol=0.5/100
>>%Usamos la función jacobi
>>JACOBI(A,b,20,tol)

Resultado
y =
0.7824 0.5869 0.5363 1.5093

iter =
14

error_final =
0.0036

ans =
0.7824 0.5869 0.5363 1.5093

Es decir, nos salió, que las intensidades tienen los siguientes valores:
I1 = 0.7824A
I2 = 0.5869A
I3 = 0.5363A
I4 = 1.5093A

Function Jacobi en Matlab

function[y,error_final,iter]=JACOBI(A,b,max_iter,tol)
n=length(b);
iter=0;
error_final=2*tol;
x=zeros(1,n);
y=zeros(1,n);
while it<max_iter && error_final>tol
for i=1:n
S=0;
for j=1:n;
if i~=j;
S=S+A(i,j)*x(j);
end
end
y(i)=(b(i)-S)/A(i,i);
end
iter=iter+1;
error_final=norm(x-y,1);
x=y;
end
y
iter
error_final
end

c) (2.5 ptos.) Resolver con el método de Gauss-Seidel hasta que los errores sean menores que
0.5%. Muestre el número de iteraciones.

Código Matlab
% Resolver mediante Gauss-Seidel:
% VALORES INICIALES DE x2, x3, y x4 = 0
% ITERACIONES HASTA QUE EL ERROR DE x1 SEA MENOR A 0.5%
% Solucion:
% x1= (20 + 10*x2 + 16*x3 + 0*x4) / 44;
% x2= (0 - 10*x1 + 6*x3 + 12*x4) / 23;
% x3= (-12 + 16*x1 + 6*x2 + 8*x4) / 30;
% x4= (40 + 0*x1 + 12*x2 + 8*x3) / 34;

clear;
clc;
format('long','g');
i=1;
x2(i)=0;
x3(i)=0;
x4(i)=0;
error_x1(i)= 9999;

while error_x1(i) >= 0.5


x1(i+1)=(20 + 10*x2(i) + 16*x3(i) + 0*x4(i)) / 44;
x2(i+1)= (0 - 10*x1(i+1) + 6*x3(i) + 12*x4(i)) / 23;
x3(i+1)= (-12 + 16*x1(i+1) + 6*x2(i+1) + 8*x4(i)) / 30;
x4(i+1)= (40 + 0*x1(i+1) + 12*x2(i+1) + 8*x3(i+1)) / 34;

error_x1(i+1)= abs((x1(i+1) - x1(i))/x1(i+1))*100;


error_x2(i+1)= abs((x2(i+1) - x2(i))/x2(i+1))*100;
error_x3(i+1)= abs((x3(i+1) - x3(i))/x3(i+1))*100;
error_x4(i+1)= abs((x4(i+1) - x4(i))/x4(i+1))*100;

i=i+1;
end

disp(' x1 error(%)');
disp([x1',error_x1']);
disp(' x2 error(%)');
disp([x2',error_x2']);
disp(' x3 error(%)');
disp([x3',error_x3']);
disp(' x4 error(%)');
disp([x4',error_x4']);
disp('ITERACIONES');
disp(i);

x1 error(%)
0 9999
0.454545454545455 100
0.337956641513954 34.4981570740006
0.583915140721215 42.1223020357836
0.694622429867726 15.9377648037644
0.744036723676462 6.64137834011315
0.76611745722998 2.88216034566735
0.775982742913156 1.27132797388516
0.780390467808907 0.564810191509186
0.782359796192174 0.251716459978084

x2 error(%)
0 0
-0.197628458498024 100
0.354866763528046 155.690889880254
0.476677927156419 25.5541858955012
0.538563156847242 11.4908026856312
0.565767664527147 4.80842391419494
0.577948942902314 2.10767378758324
0.583389835417685 0.932634095600285
0.5858208683461 0.414978888559998
0.586907024782799 0.185064480545379

x3 error(%)
0 0
-0.197101449275362 100
0.133974909778312 247.118180263383
0.362287977663485 63.0197748646364
0.459499017080745 21.1558753781137
0.503218217052977 8.68792076492526
0.522734453697233 3.7334896344062
0.531455139338441 1.64090719906549
0.535351396812164 0.727794397646961
0.5370922107269 0.324118257529601

x4 error(%)
0 0
1.06034255599473 100
1.33324118942832 20.4688120647255
1.42995408668191 6.76335682063738
1.47466911820038 3.03220776556559
1.49455757972793 1.33072568078449
1.50344891012958 0.591395579972314
1.50742115116823 0.263512359208457
1.50919592925443 0.11759759298292
1.50998888185908 0.0525138041863158

ITERACIONES
10
Problema 02.
Mediante un dispositivo mecánico se ha determinado la distancia recorrida por un
atleta al desplazarse por una pista lineal:
distancia 0 6.7 14.5 25.1 39.2 50.3 62.9 75.3 90
t 0 1 2 3 4 5 6 7 8

a) (1 pto.) Mostrar la tabla de diferencias divididas de Newton y determine los coeficientes de


polinomio de Newton.

nodos=[0 1 2 3 4 5 6 7 8];
N=length(nodos)-1;
fnodos=[0 6.7 14.5 25.1 39.2 50.3 62.9 75.3 90];

M=NaN(N+1,N+2);
%Rellenamos la primera Columna
M(:,1)=nodos;
%Rellenamos la segunda Columna
M(:,2)=fnodos;

for i=2:N+1
%Las diferencias divididas de orden i comienzan en la fila i y
%acaban en la fila N+1
for j=i:N+1
M(j,i+1)=(M(j,i)-M(j-1,i))/(M(j,1)-M(j-i+1,1));
end
end
disp(' X Y');
disp(M);

>> DiferenciasNewton
X Y
0 0 NaN NaN NaN NaN NaN NaN NaN NaN
1.0000 6.7000 6.7000 NaN NaN NaN NaN NaN NaN NaN
2.0000 14.5000 7.8000 0.5500 NaN NaN NaN NaN NaN NaN
3.0000 25.1000 10.6000 1.4000 0.2833 NaN NaN NaN NaN NaN
4.0000 39.2000 14.1000 1.7500 0.1167 -0.0417 NaN NaN NaN NaN
5.0000 50.3000 11.1000 -1.5000 -1.0833 -0.3000 -0.0517 NaN NaN NaN
6.0000 62.9000 12.6000 0.7500 0.7500 0.4583 0.1517 0.0339 NaN NaN
7.0000 75.3000 12.4000 -0.1000 -0.2833 -0.2583 -0.1433 -0.0492 -0.0119 NaN
8.0000 90.0000 14.7000 1.1500 0.4167 0.1750 0.0867 0.0383 0.0125 0.0030

b) (1 pto.) Mostrar el polinomio de Lagrange

% INTERPOLACION "POLINOMIO DE LAGRANGE"


clc
clear
format long
fprintf(' INTERPOLACION "POLINOMIO DE LAGRANGE"\n\n\n');
xi=input('Ingrese los puntos pertenecientes a las x: ');
yi=input('Ingrese los puntos pertenecientes a las y: ');
n=length(xi);
x=sym('x');
for j=1:n
producto=1;
for i=1:j-1
producto=producto*(x-xi(i)); %calculo del producto 1 superior de L
end
producto2=1;
for i=j+1:n
producto2=producto2*(x-xi(i)); %calculo del producto 2 superior de L
end
producto3=1;
for i=1:j-1
producto3=producto3*(xi(j)-xi(i)); %calculo del producto 3 inferior de L
end
producto4=1;
for i=j+1:n
producto4=producto4*(xi(j)-xi(i)); %calculo del producto 4 inferior de L
end
L(j)=(producto*producto2)/(producto3*producto4); %calculos de las L para
fprintf('\n L%d:\n',j-1) %poder hallar el polinomio
disp(L(j))
end
pn=0;
for j=1:n
pn=pn+L(j)*yi(j); %calculo del polinomio interpolante
end
fprintf('\n POLINOMIO INTERPOLANTE: \n')
pn = sym(pn); %este comando nos permite simplificar toda la expresion
disp(pn)

OUTPUT:

Ingrese los puntos pertenecientes a las x: [0 1 2 3 4 5 6 7 8]


Ingrese los puntos pertenecientes a las y: [0 6.7 14.5 25.1 39.2
50.3 62.9 75.3 90]

L0:
((x - 1)*(x - 2)*(x - 3)*(x - 4)*(x - 5)*(x - 6)*(x - 7)*(x -
8))/40320

L1:
-(x*(x - 2)*(x - 3)*(x - 4)*(x - 5)*(x - 6)*(x - 7)*(x - 8))/5040

L2:
(x*(x - 1)*(x - 3)*(x - 4)*(x - 5)*(x - 6)*(x - 7)*(x - 8))/1440

L3:
-(x*(x - 1)*(x - 2)*(x - 4)*(x - 5)*(x - 6)*(x - 7)*(x - 8))/720

L4:
(x*(x - 1)*(x - 2)*(x - 3)*(x - 5)*(x - 6)*(x - 7)*(x - 8))/576

L5:
-(x*(x - 1)*(x - 2)*(x - 3)*(x - 4)*(x - 6)*(x - 7)*(x - 8))/720

L6:
(x*(x - 1)*(x - 2)*(x - 3)*(x - 4)*(x - 5)*(x - 7)*(x - 8))/1440

L7:
-(x*(x - 1)*(x - 2)*(x - 3)*(x - 4)*(x - 5)*(x - 6)*(x - 8))/5040

L8:
(x*(x - 1)*(x - 2)*(x - 3)*(x - 4)*(x - 5)*(x - 6)*(x - 7))/40320

POLINOMIO INTERPOLANTE:
(x*(x - 1)*(x - 2)*(x - 3)*(x - 4)*(x - 5)*(x - 6)*(x - 7))/448 -
(251*x*(x - 1)*(x - 2)*(x - 3)*(x - 4)*(x - 5)*(x - 6)*(x -
8))/16800 + (629*x*(x - 1)*(x - 2)*(x - 3)*(x - 4)*(x - 5)*(x -
7)*(x - 8))/14400 - (503*x*(x - 1)*(x - 2)*(x - 3)*(x - 4)*(x -
6)*(x - 7)*(x - 8))/7200 + (49*x*(x - 1)*(x - 2)*(x - 3)*(x - 5)*(x
- 6)*(x - 7)*(x - 8))/720 - (251*x*(x - 1)*(x - 2)*(x - 4)*(x -
5)*(x - 6)*(x - 7)*(x - 8))/7200 + (29*x*(x - 1)*(x - 3)*(x - 4)*(x
- 5)*(x - 6)*(x - 7)*(x - 8))/2880 - (67*x*(x - 2)*(x - 3)*(x -
4)*(x - 5)*(x - 6)*(x - 7)*(x - 8))/50400

c) (2 ptos.) Aproxime la distancia recorrida a los 4.5 segundos con todos los datos usando el
método de Newton y Lagrange.

clear ;
clc;
fprintf('Interpolacion con el polinomio de LAGRANGE\n\n');
n=input('Grado del polinomio: ');

for i=1:(n+1)
x(1,i)=input('DAME LOS VALORES XI: ');
end

for i=1:(n+1)
xi(1,i)=input('Dame los valores de F(x): ');
end
x
xi
xint=input('Numero pasa el que desea interpolar x: ');
fxint=0;
i=1;
while i<=n+1
L=1;
J=0;
while J<=n
if i~=J+1
L=L*(xint-x(1,J+1))/(x(1,i)-x(1,J+1));
end
J=J+1;
end
fxint=fxint+L*xi(1,i);
i=i+1;
end
fprintf('\nResultado xi: %d',fxint);

Resultado xi: 45.05>>


d) (2 ptos.) Aproxime la distancia recorrida a los 4.5 con 4 datos más próximos con el método
de Newton y Lagrange. Comente con los datos obtenidos del punto a)

Tomando los siguientes 4 datos:

Distancia 25.1 39.2 50.3 62.9


t 3 4 5 6
Usando Lagrange:
Interpolacion con el polinomio de LAGRANGE

Grado del polinomio: 3


DAME LOS VALORES XI: 3
DAME LOS VALORES XI: 4
DAME LOS VALORES XI: 5
DAME LOS VALORES XI: 6
Dame los valores de F(x): 25.1
Dame los valores de F(x): 39.2
Dame los valores de F(x): 50.3
Dame los valores de F(x): 62.9
Numero pasa el que desea interpolar x: 4.5

Resultado xi:44.84>>
Problema 03.

a) (1 ptos.) Obtenga el polinomio de Lagrange.

% INTERPOLACION "POLINOMIO DE LAGRAGE"


clc %permite borrar el area de trabajo
clear %permite borrar las variables almacenadas
format long %permite utilizar la maxima capacidad de la maquina
fprintf(' INTERPOLACION "POLINIMIO DE LAGRAGE"\n\n\n');
%fprintf me permite ingresar comentarios de manera textual que pueden
%orientar al usuario en el uso del programa
xi=input('Ingrese los puntos pertenecientes a las x: ');
yi=input('Ingrese los puntos pertenecientes a las y: ');
%input es un comando de solicitud de entrada de datos del usuario.
n=length(xi);
x=sym('x'); %esta funcion nos permite dejar la variable 'x' como simbolica
% y asi poder trabajar con ella, sin tener que asignarle un valor.
for j=1:n
producto=1;
for i=1:j-1
producto=producto*(x-xi(i)); %calculo del producto 1 superior de L
end
producto2=1;
for i=j+1:n
producto2=producto2*(x-xi(i)); %calculo del producto 2 superior de L
end
producto3=1;
for i=1:j-1
producto3=producto3*(xi(j)-xi(i)); %calculo del producto 3 inferior de L
end
producto4=1;
for i=j+1:n
producto4=producto4*(xi(j)-xi(i)); %calculo del producto 4 inferior de L
end
L(j)=(producto*producto2)/(producto3*producto4); %calculos de las L para
fprintf('\n L%d:\n',j-1) %poder hallar el polinomio
disp(L(j)) %la funcion dispo nos permite visualizar varibles o texto
% en el workspace
end
pn=0;
for j=1:n
pn=pn+L(j)*yi(j); %calculo del polinomio interpolante
end
fprintf('\n POLINOMIO INTERPOLANTE: \n')
%disp(pn) % esta ejecucion la podemos utilizar cuando no necesitamos
%simplicar la expresion
pn = sym(pn); %este comando nos permite simplificar toda la expresion
disp(pn)

opc=input('\nDesea aproximar un valor (si/no): ','s');


%este comando nos permite saber si el usuario quiere obtener una
%aproximacion de un punto dado, en el polinomio que se acaba de obtener
if opc =='si'
x=input('\nIngrese el punto a aproximar: ');
y=eval(pn); %evaluar el punto en el polinomio
disp('\nLa aproximacion a f(x) es:')
disp(y)
end

INTERPOLACION "POLINIMIO DE LAGRANGE"

Ingrese los puntos pertenecientes a las x: [1.0 1.2 1.3 1.4 1.6]
Ingrese los puntos pertenecientes a las y: [8.1234 7.7651 7.0012 6.3425 4.8793]
L0:
(625*(x - 6/5)*(x - 7/5)*(x - 8/5)*(x - 13/10))/9

L1:
-625*(x - 1)*(x - 7/5)*(x - 8/5)*(x - 13/10)

L2:
(10000*(x - 1)*(x - 6/5)*(x - 7/5)*(x - 8/5))/9

L3:
-625*(x - 1)*(x - 6/5)*(x - 8/5)*(x - 13/10)

L4:
(625*(x - 1)*(x - 6/5)*(x - 7/5)*(x - 13/10))/9

POLINOMIO INTERPOLANTE:
- (19465*x^4)/144 + (1042891*x^3)/1440 - (2084003*x^2)/1440 + (2288731*x)/1800 -
12156773/30000

b) (1 ptos.) Proporcione el polinomio que aproxima I′(t) en base al polinomio obtenido en a)

Derivada del polinomio

- (19465*x^3)/36 + (1042891*x^2)/480 - (2084003*x)/720 + 2288731/1800

c) (1 ptos.) Proporcione el valor de I(1.25) usando el polinomio obtenido en a)

Punto a aproximar: 1.25


La aproximación a f(x) es: 7.380532161458336

d) (1 ptos.) Proporcione el valor de I′(1.25) usando el polinomio obtenido en b)

Proporcione el valor de I′(1.25) usando el polinomio obtenido en b)

Derivada del polinomio

- (19465*x^3)/36 + (1042891*x^2)/480 - (2084003*x)/720 + 2288731/1800

Punto a aproximar: 1.25


La aproximación a f(x) es: -7.759904513888614

e) (1 ptos.) Aproxime E(1.25).

Aproxime E(1.25).

0.04*(-7.759904513888614) + 2.5*7.380532161458336
Ans=

18.140934223090298
Fecha: 30 de mayo de 2018

Potrebbero piacerti anche