Está en la página 1de 18

IST4360:06 PROYECTO COMPUTACIONAL. 2021-30.

´
SOLUCIONES COMPUTACIONALES A PROBLEMAS EN INGENIER IA

• Profesor: Lic. Ing. Alfonso M. Mancilla Herrera, M.Sc. Dr.


• Estudiantes: Jhon Beltran, Wilhelm Pardey, Juan Diego Ruiz.

Fotografía de los Estudiantes

Topics:
IST4360:06 PROYECTO COMPUTACIONAL. 2021-30.

1. Series de Taylor
2. Bu´squeda de raıces
3. Algebra de matrices
4. Interpolacion Funcional
5. Ajuste de Curvas
6. Solución Numérica de Ecuaciones Diferenciales Ordinarias
7. Matrices, Funciones y Gráficas en Matlab .

Observaciones HONESTIDAD
• El proyecto se desarrollará en equipos de tres estudiantes.

La
• entrega está programada para el Sábado 09 de Octubre de 2021, hasta las 11:59
p.m.
• Cada entrega parcial tiene que incluir:

1. Auto y coevaluación cualitativa y cuantitativa de cada uno de los miembros del


equipo. Esta tendrá un peso del (5+5)%=10%. Esta información es confidencial.
Cada estudiante la remitirá a su profesor por correo.
2. Recuerde incluir solamente a los integrantes del equipo que aportaron a la solución
de los problemas. En la co-evaluación describa en qué medida lo hicieron.
´
3. Entregar un solo archivo .zip. E ste debe estar estructurado de la siguiente manera:
– Informe + desarrollo de los problemas.
– Una carpeta llamada código donde deben estar los programas, escritos en
MatLab , pedidos en cada entrega.
4. Fotografía de los miembros del equipo que trabajaron.
5. La entrega 02 tiene que incluir un vídeo con la solución de tres problemas
asignados por el profesor, uno para cada integrante del equipo. Duración 5
minutos cada uno(Utilice como referencia el que se muestra en este enlace:
https://www.youtube.com/watch?v=ox09Jko1ErM/.

6. Todas las componentes de la evaluación son de carácter obligatorio


Las soluciones a los problemas aquí´ı propuestos deben estar detalladas.

Componente
RUBRICA Porcentaje
Problemas 1 y 2 20 % cada uno
75 %
Problemas 3 y 4 30 % cada uno
Informe Debe estar hecho con normas 15 %
IEEE, APA o EasyChair u otros.
Auto y coevaluación Autoevaluación y evaluación de (5+5)%=10%
los otros miembros del equipo.
Entrega 01

Problema 01.
Hay dos maneras de definir el epsilon de la máquina: un epsilon absoluto y un epsilon relativo.
Este último es el más usado. Como el conjunto de números usados en el computador es
finito, la siguiente definición tiene sentido:

ϵmaq = ϵ = min{t > 0 : 1 + t /= 1} El


´epsilon absoluto se define comparando con cero:
ϵmaq = ϵ = min{t > 0 : t /= 0}
En realidad el epsilon depende de la máquina pero también del sistema operativo, del compilador y
del tipo de números utilizados.
Utilice la norma IEEE 754, estudiada en clases para determinar los valores los epsilon (absoluto y
relativo). Utiliza el enlace http://www.h-schmidt.net/FloatConverter/IEEE754.html y coloca aquí las
imágenes con los resultados pedidos.

Respuestas:

Epsilon Relativo:

Epsilon Absoluto:

Para el desarrollo de ambos epsilon, se escogieron números al azar para luego aplicar la fórmula de los
respectivos epsilon. Luego de obtener los valores, se realizó la conversión a norma IEEE 754, lo cual dio los
valores que se observan en las figuras anteriores.
Problema 02.
Cuando resolvemos un sistema de ecuaciones lineales, tal como:
a1,1 · x1 + a1,2 · x2 + . . . + a1,n · xn =
· b a
1 · 2,1 x 1 · + a2,2 x2 +
... + a2,n xn = b2
. . .
. . . . = .
am,1 · x1 + am,2 · x2 + . . . + am,n · xn = bn

Una de estas tres cosas puede suceder. El sistema:


• tiene solución única
• tiene un número infinito de soluciones
• no tiene solución
Escriba un script, usando MATLAB, que reciba como entrada una matriz aumentada [A b] y
determine cuántas soluciones tiene el sistema Ax = b. Si el sistema es de 3x3, presenta la
gráfica de la intersección de los 3 planos respectivos.
Intento 01
%2 Problema 02.
clear; clc
n=input("si la matriz es n*n, introduzca el valor de n");
A=zeros(n);
for i=1:n

for j=1:n

A(i,j)=input("digite los elementos de la matriz A");


end
end

if A==A'
disp("es simetrica")
else
disp("no es simetrica")
end
sw=0;

for i=1:n

T=A([1:i],[1:i]);
deter=det(T);
if deter<0
sw=1;
end

end

if sw==0
disp("es definida positiva")
else
disp("no es definida positiva")
end
L=zeros(n);
for i=1:n
for j=1:i
suma=0;
if i==j
for p=j-1:-1:1
suma=L(i,p)^2+suma;
end
L(i,j)=sqrt(A(i,j)-suma);
else
for p=i-1:-1:1
suma=L(p,j)^2+suma;
end
L(i,j)=(A(i,j)-suma)/(L(j,j));
end
end
end

U=L' ;
R=L*U;
U=chol(A);
L=U';

b=zeros(1,n);
for i=1:n
b(i)= input("Digite el vector de resultado");
end
b=b';
y=L\b;
x=U\y;

if n==3
E=zeros(n,n+1);
for i=1:n

for j=1:n+1
if i==j
E(i,j)=1;
else
if j==n+1
E(i,j)=x(i);
else
E(i,j)=0;
end
end

end
end
end

clc

A = input('Por favor, digita la matriz A, los coeficientes de las incógnitas : ')


b = input('Por favor, digita el vector columna b, los términos independientes : ')
Ab=[A b]

rank(A)
rank(Ab)
Problema 03.
Tome los algoritmos desarrollados en clase y re-escribeıbalos cómo una función. Útilıcelos para
encontrar tres raíces de la función dada, en cada caso, e imprima las iteraciones, en la misma
forma que la función fzero() de Matlab. Después compare su resultado con el de la
citada función.

Bisección

clc;

close()

syms x;

f= inline(input('Digite una Función de X:'));

figure

ezplot(f,[0,2]);%ezplot grafica [-2*pi 2*pi]

%fplot grafica en [-5, 5]

xlabel('Valores de X');

ylabel('Valores de f(x)');

grid on;

A=input('Digita el valor inicial del intervalo para evaluacion A:');

B=input('Digita el valor final del intervalo para evaluacion B:');

Tol = input('Digita el valor de la tolerancia: \n ');

Sw=1;

while(A>=B)

input('A tiene que ser menor que B \n')


A=input('Digita, nuevamente el valor inicial del intervalo para evaluacion A: ');

B=input('Digita, nuevamente el valor final del intervalo para evaluacion B: \n ');

end

while(Sw==1)

Error=abs((B-A)/2);

if(f((A+B)/2)==0)

break;

else

if(f((A+B)/2)*f(A)<0)

B=(A+B)/2;

else

A=(A+B)/2;

end

end

Sw=(Error>=Tol);

end

disp(strcat('Raiz encontrada en el punto: ', num2str((A+B)/2)));

hold on;

plot((A+B)/2,0,'O');

%fzero(matlabFunction(f),x0,optimset('display','iter'));

options = optimset('Display','iter');

[x, fval, exitflag, output] = fzero(f,[A, B],options)

Regula Falsi

clc
xai=input('Ingrese limite inferior: ');
xbi=input('Ingrese limite superior: ');
tol=input('Ingrese el porcentaje de Error: ');
syms x;
f=input('Ingrese la Funcion: ');
f1=subs(f,x,xai);
f2=subs(f,x,xbi);
i=1;
ea(1)=100;
if f1*f2 < 0
xa(1)=xai;f1=subs(f,x,xa(1));
xb(1)=xbi;f2=subs(f,x,xb(1));
xr(1)=xa(1)-f1*(xb(1)-xa(1))/(f2-f1); f3=subs(f,x,xr(1));
fprintf('It. Xa Xr Xb Error aprox \n');
fprintf('%2d \t %11.7f \t %11.7f \t %11.7f \n',i,xa(i),xr(i),xb(i));
while abs(ea(i))>=tol,
if f1*f3 < 0
xa(i+1)=xa(i);f1=subs(f,x,xa(i+1));
xb(i+1)=xr(i);f2=subs(f,x,xb(i+1));
end
if f1*f3> 0
xa(1)=xr(i);
xb(1)=xb(i);
end
xr(i+1)=xa(i+1)-f1*(xb(i+1)-xa(i+1))/(f2-f1);
ea(i+1)=abs((xr(i+1)-xr(i))/(xr(i+1)))*100;
fprintf('%2d \t %11.7f \t %11.7f \t %11.7f \t %7.3f \n',...
i+1,xa(i+1),xr(i+1),xb(i+1),ea(i+1));
i=i+1;
end
else
fprintf('No existe una raíz en ese intervalo');
end

Punto Fijo
clc

clear

format long;
Xo=input('ingrese el valor inicial\n');
Iter=input('\ningrese el número de iteraciones\n');
Tol=input('\ningrese la tolerancia que desea\n');
Fun=input('\ningrese la funcion en comillas simples\n');
G=input('\ningrese la funcion despejada en comillas simples\n');
f=inline(Fun);
g=inline(G);

Yn=f(Xo);
Error=Tol+1;
Cont=0;
Z1=[Cont,Xo,Yn,Error];
Z=[Cont,Xo,Yn,Error];

while Yn~=0 & Error>Tol & Cont<Iter


Xn=g(Xo);
Yn=f(Xn);
Error=abs((Xn-Xo)/Xn);
Cont=Cont+1;
Z(Cont,1)=Cont;
Z(Cont,2)=Xn;
Z(Cont,3)=Yn;
Z(Cont,4)=Error;

Xo=Xn;
end

if Yn==0
fprintf('\n\nSOLUCION:\n')
fprintf('%g es raiz\n\n',Xo);
else
if Error<Tol
fprintf('\n\nSOLUCION:\n')
fprintf('%g es una aproximacion con un tolerancia de %g\n\n',Xo,Tol);
else
fprintf('\n\nSOLUCION:\n')
fprintf('Fracaso en %g iteraciones\n\n',Iter);
end
end
fprintf('TABLA\n\n Cont Xn Yn Error Relativo\n\n')
disp(Z1);
disp(Z);
Newton
clc;
close();
syms x
f=input('Digita una función simbólica f(x) = ')
df=diff(f)
fplot(f);
xlabel('Valores de X');
ylabel('Valores de f(x)');
grid on;
%
x0=input('Ingresa la semilla, X0=')
tol=input('Tolerancia? : ');
if isempty(tol)
tol=10^-8;
end
tol
xk=x0;
nr=zeros(100,3);
for k=1:100
nr(k,1)=k;
nr(k,2)=xk;
nr(k,3)=xk-(subs(f,x,xk)./subs(df,x,xk));
xk=nr(k,3);
if( abs(nr(k,3)-nr(k,2))<=tol)
disp('La Raíz está en x = ');disp(nr(k,3));
hold on;
plot(nr(k,3),0,'Om');break;
end
end
if(k==100)
disp('Método no converge, revisa si la función tiene raíces o cambia la Semilla ');
else
disp(nr(1:k,:));
end
%fzero(matlabFunction(f),x0,optimset('display','iter'));
options = optimset('Display','iter');
[x, fval, exitflag, output] = fzero(matlabFunction(f),x0,options)

Secante
Sea f (x) = 2(x2) − 3 ∗ 7(x + 1) con el m etodo de la secante encuentre los ceros de f con una
exactitud de 10( − 16). Muestra las gráficas de f (x) y.
Newton-Raphson multivariable
Encuentre la solución de los siguientes sistema de ecuaciones con la función Newton- Raphson
multivariable.

Haga una gráfica en la cual se represente cuál de las soluciones es obtenida a partir de una
semilla cualquiera en las vecindades de las soluciones. Miren la gráfica ejemplo, Fg.3. Tienen
que indicar en caso de que diverge.
Problema 04.

Fig. 4: Ejemplo para el problema 2

Cálculo de fuerzas en armaduras: La fuerza de tensión y compresión máximas


permitidas en los miembros de la estructura mostrada son los siguientes:

Ftensio´n ma´x = 1500[Lbf ]


Fcomp ma´x = 800[Lbf ]

Determine la longitud máxima P de las dos cargas que pueden aplicarse a la estructura.
Tome a = 8[ft].

Requisitos:
El• algoritmo iterando tiene que hallar P. ¡OJO!, no deben sacar mágicamente el valor de
P . La idea es que vayan aumentando el valor de la carga hasta que supere una de esas. El
algoritmo debe arrojar P con una precisión de al menos 5 cifras significativas.

M´etodos num´ericos obligatorios a usar:


• Bisección
• Solución de sistemas de ecuaciones lineales de manera directa

Solución
• de sistemas de ecuaciones lineales de manera indirecta o mediante iteraciones.
Al menos un método. Por ejemplo, Gauss-Seidel.
• Comparar con la soluci´on anal´ıtica.

También podría gustarte