0% encontró este documento útil (0 votos)
13 vistas6 páginas

p3 AlmodovarCremadesMario

Cargado por

Mario
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
13 vistas6 páginas

p3 AlmodovarCremadesMario

Cargado por

Mario
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 6

addpath('C:\Users\mario\OneDrive\Escritorio\Universidad\MEN');

format long;

%Mario Almodovar Cremades BL1

%Ejercicio 1
clear; clc;

%Escribimos el sistema en forma de matriz y ponemos un vector inicial


A = [15 -2 -8 -4;7 33 -5/3 -10;-5 1 38 -1;-2 4 5/2 19/2];
b = [-9; 3; 4; 0.5];
c = [1;0; 0; 0];

%a) resolvemos el sistema con la matriz A y b


X = uptrbk(A,b);

%Mostramos por pantalla los valores del sistem


fprintf('El resultado del sistema es: %.8f\n',X);

%b) resuelvo los sistemas por el método de jacobi y Gauss-seidel


%Jacobi
X1 = jacobi(A,b,c,0.0000000000000001,50);

%Gauss-seidel
X2 = GaussSeidel(A,b);

%c)
%Resultados de uptrbk,jaco y Gauss
resu = A*X-b;
resJa = A*X1-b;
resGa = A*X2-b;

%Muestro por pantalla


fprintf('La norma por Upt es: %.8f\n',norm(resu));
fprintf('La norma por Jacobi es: %.8f\n',norm(resJa));
fprintf('La norma por Gauss es: %.8f\n',norm(resGa));

%Podemos ver como los métodos de UPt y Gauss han sido los más precisos
%porque su norma es 0. Por tanto, decimos que son los que tienen más
%precisión

El resultado del sistema es: -0.60881564


El resultado del sistema es: 0.17442262
El resultado del sistema es: 0.01653073
El resultado del sistema es: -0.15333143
La norma por Upt es: 0.00000000
La norma por Jacobi es: 0.00000000
La norma por Gauss es: 0.00000004

addpath('C:\Users\mario\OneDrive\Escritorio\Universidad\MEN');
format long;
%Ejercicio 2

1
clear; clc;

%Adjunto funcion
% function x = Ascenso1(T, p)
% Verifico que T sea una matriz cuadrada y así veo el tamaño de la
% matriz
% [n, m] = size(T);
% if n ~= m
% error('La matriz T debe ser cuadrada.');
%end

% Inicializo el vector solución x con ceros


%x = zeros(n, 1);

% for i = n:-1:1
% Calculo el valor de x(i)
% x(i) = (p(i) - T(i, i+1:n) * x(i+1:n)) / T(i, i);
%end
% end

%Defino mis matrices que usaremos para calcular la solucion


T = [7 3 1;0 13 -1;0 0 27];
r = [-4;6;2];

%Llamo a mi función ascenso


xval = Ascenso1(T,r);

%Mostramos por pantalla los valores del sistem


fprintf('El resultado del sistema es: %.8f',xval);

El resultado del sistema es: -0.78225478El resultado del sistema es:


0.46723647El resultado del sistema es: 0.07407407

addpath('C:\Users\mario\OneDrive\Escritorio\Universidad\MEN');
format long;
%Ejercicio 3
clear; clc;

%Primero defino mi matriz


E = [-7 0 4;-7 4 9;9 -4 -2];

%Posteriormente lo que hacemos es separar dicha matriz en diferentes partes


%con la funcion lu

[L,U,P] = lu(E);

%Resolvemos para un sistema con triangular inferior y definimos matriz b


b1 = [1;0;0];
r = L \ (P*b1);
xf = U\r;

%Mostramos por pantalla el resultado del sistema

2
fprintf('Las soluciones del sistema de ecuaciones son las siguientes: %.10f
\n',xf);

%b) ahora calculamos con la función ascenso y descenso


%Adjunto la funcion
% function x = Descenso(j, y)
% Verifico que j sea una matriz cuadrada
%[n, m] = size(j);
% if n ~= m
% error('La matriz j debe ser cuadrada.');
% end

% Inicializo el vector solución x con ceros


% x = zeros(n, 1);

% for i = 1:n
% Calculo el valor de x(i)
% x(i) = (y(i) - j(i, 1:i-1) * x(1:i-1)) / j(i, i);
% end
%end
x1 = Descenso(L,(P*b1));
x2 = Ascenso1(U,x1);

%Mostramos por pantalla el resultado del sistema


fprintf('Las soluciones del sistema de ecuaciones por ascenso y descenso son
las siguientes: %.10f \n',xf);

%Al comparar las dos soluciones, podemos ver como las dos son identicas
w = x2-xf;

%c) Calculo el resto del ejercicio


%Calculo el resto de columnas
b2 = [0;1;0];
x3 = Descenso(L,(P*b2));
x4 = Ascenso1(U,x3);

%Calculo la tercera columna


b3 = [0;0;1];
x5 = Descenso(L,(P*b3));
x6 =Ascenso1(U,x5);

%Para ver la precisión de mis cálculos calculo mi matriz inversa, hago la


%resta a mi método

y= inv(E);
g = [x2,x4,x6];

res = norm(y-g);
fprintf('La precisio de dichos calculos es: %.f\n',res);

%Como podemos ver es muy preciso ya que obtenemos un error de la orden de


%magnitud de a la -17. Por tanto, concluimos que si ha sido un buen método.

3
Las soluciones del sistema de ecuaciones son las siguientes: -0.1228070175
Las soluciones del sistema de ecuaciones son las siguientes: -0.2938596491
Las soluciones del sistema de ecuaciones son las siguientes: 0.0350877193
Las soluciones del sistema de ecuaciones por ascenso y descenso son las
siguientes: -0.1228070175
Las soluciones del sistema de ecuaciones por ascenso y descenso son las
siguientes: -0.2938596491
Las soluciones del sistema de ecuaciones por ascenso y descenso son las
siguientes: 0.0350877193
La precisio de dichos calculos es: 0

addpath('C:\Users\mario\OneDrive\Escritorio\Universidad\MEN');
format long;
%Ejercicio 4
clear; clc;

%a) calculo el valor del condicionamiento de la matriz. Primero la defino


%mis dos matrices
C1 = [19 19.8;19.8 19];
C2 = [19 23;23 19];

%Calculo el condicionamiento de estas matrices


t = cond(C1,2);
t1 = cond(C2,2);

%Muestro por pantalla el condicionamiento de las matrices


fprintf('Los valores de condicionamiento para las matrices con x = 19.8 y x =
23 son: %.5f,%5f \n',t,t1);

%b) represento gráficamente los condicionamietos de las matrices


% Intervalo de x y número de puntos
xval = linspace(-38.5,38.5, 90);

% Inicializo el vector para almacenar el número de condición


condiciona = zeros(size(xval));

% Calculo el número de condición para cada valor de x


for i = 1:length(xval)
x = xval(i);

% Defino mi matriz A
A = [19 x; x 19];

% Calculo el número de condición de la matriz A


condiciona(i) = cond(A);
end

% Representación gráfica
figure;
plot(xval, condiciona, 'r-', 'LineWidth', 1.5);
xlabel('x');
ylabel('condición de A');
title('Condicionamiento en función del valor de x');
grid on;

4
%c)Teniendo en cuenta que el condicionamiento de la matriz nos mide la
%sensibilidad del error cometido al invertir una matriz o a la hora de
%resolver un sistema de ecuaciones, si los valores son cercanos a 1, la
%matriz está bien condicionada, sin embargo, si su valor es lejano a uno,
%no lo estaría. En este caso, podemos ver como estas matrices estarían muy
%mal condicionadas ya que hemos obtenidos valores muy superiores a 1.
%Respecto a la gráfica, podemos ver como existen dos picos en los que nos
%indican que dichas matrices estarían muy bien condicionadas ya que su
%valor sería cercano a 1. Por tanto, todas los valores de x cercanos a esos
%picos, serían buenos.

Los valores de condicionamiento para las matrices con x = 19.8 y x = 23 son:


48.50000,10.500000

addpath('C:\Users\mario\OneDrive\Escritorio\Universidad\MEN');
format long;
%Ejercicio 5
clear; clc;

%Inicializo mis variables


A = [7.9 4.5 1 -1.5;4.5 6.9 1 0;1 1 4.9 -4;-1.5 0 -4 5.1];
X = [1;0;0;0];

%Calculo el valor del vector propio y valor propio asociado


[J,V] = power1(A,X,0.0000000000000000001,200);

5
%Calculo el vector normalizado
t = V./norm(V);

%Muestro por pantalla el valor propio asociado


fprintf('Muestro por parntalla el valor propio asociado:.%10f\n',J);

%Muestro por pantalla los vectores propios asociados


fprintf('Muestro por parntalla el valor propio asociado:.%10f\n',t);

%b) Compruebo el resultado, haciendo que A por su vector propio debe ser
%lamba por el vector propio asociado

Xfi = A*t;
Xfi1 = J*t;

%Si Xfi es igual a Xfi1, entonces su resta debe ser 0


final = Xfi-Xfi1;

%Muestro por pantalla la resta


fprintf('Muestro por parntalla el valor propio asociado:.%10f\n',final);

%Como podemos observar el resultado es 0 o prácticamente 0 pues encontramos


terminos de orden a la menos 15, y por tanto podemos afimar que el
%resultado de la diagonalización es correcto

Muestro por parntalla el valor propio asociado:. 12.784478


Muestro por parntalla el valor propio asociado:. 0.690444
Muestro por parntalla el valor propio asociado:. 0.581026
Muestro por parntalla el valor propio asociado:. 0.312039
Muestro por parntalla el valor propio asociado:. -0.297200
Muestro por parntalla el valor propio asociado:. -0.000000
Muestro por parntalla el valor propio asociado:. 0.000000
Muestro por parntalla el valor propio asociado:. -0.000000
Muestro por parntalla el valor propio asociado:. 0.000000

Published with MATLAB® R2022b

También podría gustarte