Está en la página 1de 14

Método Gráfico

% 4x-8y = -24
%-x1 + 6y = 34
x=-100:1:100;
y1=-(-24-4*x)/8;
y2=(34+x)/6;
plot(x,[y1;y2],"--");
p=find(y1==y2)
z=x(p)
disp(y1(p))
hold on
plot(z,y1(p),'ro')

Método Cramer

code:
%MÉTODO DE CRAMER
a = [0 2 5;2 1 1;3 1 0];
b = [9;9;10];
D = det(a);
a1 = a;
a1(:,1) = b;
x1 = det(a1)/D;
a2 = a;
a2(:,2) = b;
x2 = det(a2)/D;
a3 = a;
a3(:,3) = b;
x3 = det(a3)/D;
disp(x1);
disp(x2);
disp(x3);

Matriz inversa
clear;clc;
A=[5,-3,1;2,4,-1;2,-3,8];
b=[5;6;4];
disp('Solucion usando matriz inversa');
p=inv(A)*b;
disp(p);
División Inversa
clear;clc;
A=[5,-3,1;2,4,-1;2,-3,8];
b=[5;6;4];
q=A\b;
disp('Solucion usando la division inversa');
disp(q);

Eliminación de Gauss
A = [2, 4, 5; 6, 9, 8; 4.1, 5, 3];
b = [220; 490; 274];
n = length(b);

for k = 1:n-1
for i = k+1:n
factor = A(i,k) / A(k,k);
A(i,k:n) = A(i,k:n) - factor * A(k,k:n);
b(i) = b(i) - factor * b(k);
end
end

x = zeros(n, 1);
for i = n:-1:1
x(i) = (b(i) - A(i,i+1:n) * x(i+1:n)) / A(i,i);
end
% Mostrar las soluciones
x_sol = x(1);
y_sol = x(2);
z_sol = x(3);

fprintf('Solución del sistema de ecuaciones:\n');


fprintf('x = %f\n', x_sol);
fprintf('y = %f\n', y_sol);
fprintf('z = %f\n', z_sol);

% Mostrar las ecuaciones


x_range = linspace(0, 100, 100);
y_range = linspace(0, 100, 100);
[X, Y] = meshgrid(x_range, y_range);
Z1 = (220 - 2*X - 4*Y) / 5;
Z2 = (490 - 6*X - 9*Y) / 8;
Z3 = (274 - 4.1*X - 5*Y) / 3;

plot3(X, Y, Z1,'k');
plot3(X, Y, Z2,'b');
plot3(X, Y, Z3,'g');

xlabel('X');
ylabel('Y');
zlabel('Z');
title('Solución del Sistema de Ecuaciones Lineales');
legend('Solución', 'Ecuación 1', 'Ecuación 2', 'Ecuación 3');

Método de Jacobi
clc;clear;
A=[4,-1,1;4,-8,1;-2,-1,5]
b=[7;-21;7]
tolerancia=1e-6
error=1;
x10=0;
x20=0;
x30=0;
k=0;
fprintf('%d\t%.6f\t%.6f\t%.6f\n',k,x10,x20,x30);
while error>tolerancia
x11=(b(1)-A(1,2)*x20-A(1,3)*x30)/A(1,1);
x21=(b(2)-A(2,1)*10-A(2,3)*x30)/A(2,2);
x31=(b(3)-A(3,1)*x10-A(3,2)*x20)/A(3,3);
ex1=abs(x11-x10);
ex2=abs(x21-x20);
ex3=abs(x31-x30);
z=[ex1,ex2,ex3];
error=max(z);
k=k+1;
fprintf('%d\t%.6f\t%.6f\t%.6f\n',k,x11,x21,x31);
x10=x11;
x20=x21;
x30=x31;
end
disp(' ');
disp('Solucion Metodo Jacobi');
fprintf('x1=%.6f\tx2=%.6f\tx3=%.6f\n',x11,x21,x31);

Método de Gauss seidel


clc;
close all;
A = [4, -1, 1; 4, -8, 1; -2, -1, 5];
b = [7; -21; 7];
n = length(b);
it = 30;
x = zeros(it, n);
tol = 0.0001;
iteracion = 0;
% Matriz para almacenar los resultados de cada iteración
resultados = zeros(it, n);
for k = 1:it - 1
for l = 1:n
for m = 1:n
if m ~= l
if l > m
x(k + 1, l) = x(k + 1, l) - A(l, m) * x(k + 1, m);
else
x(k + 1, l) = x(k + 1, l) - A(l, m) * x(k, m);
end
end
end
x(k + 1, l) = (x(k + 1, l) + b(l)) / A(l, l);
end
% Almacenar resultados de la iteración actual
resultados(k, :) = x(k + 1, :);
% Validación
error = abs(x(k + 1, :) - x(k, :));
if max(error) < tol
iteracion = k;
break;
end
end
% Muestra la tabla de iteraciones
fprintf('Tabla de Iteraciones:\n');
fprintf(' x1 x2 x3');
fprintf('\n');
for k = 1:iteracion
fprintf('%d\t', k);
for i = 1:n
fprintf('%.5f\t', resultados(k, i));
end
fprintf('\n');
end
Diferenciación finita hacia adelante o progresiva
%{Dada la función: f(x)=e^x .Evaluar f'(1,6), asumir que h=0,1%}
clc;
clear;

% Definir el valor de x0 y h
x0 = 1.6; % No uses coma, utiliza el punto como separador decimal
h = 0.1;

% Calcular f(x0) y f'(x0) usando la fórmula de derivación finita progresiva


y0 = exp(x0);
x = [x0 + h, x0, x0 - h];
y = exp(x);
dfp = (y(1) - y(2)) / h;

fprintf('Diferenciación finita progresiva f(%.1f) = %.6f\n', x0, dfp);

% Graficar la función y la aproximación de la derivada


x1 = linspace(0.3, 2);
y1 = exp(x1);
df = exp(x0);

yt = df * (x1 - x0) + y0;

hold on;
plot(x1, y1, 'b', 'LineWidth', 2); % Gráfico de la función
plot(x1, yt, 'r', 'LineWidth', 2); % Gráfico de la aproximación de la derivada
plot(x0, y0, 'om', 'MarkerSize', 8); % Punto en x0, f(x0)

xlabel('x');
ylabel('y');
legend('f(x)', 'Aproximación de f''(x)', 'Punto de interés');
title('Gráfico de f(x) y su derivada aproximada');
grid on;
grid minor;

Diferenciación finita hacia atrás o regresiva


%{Dada la función: f(x)=e^x .Evaluar f'(1,6), asumir que h=0,1%}
clc;
clear;

% Definir el valor de x0 y h
x0 = 1.6; % No uses coma, utiliza el punto como separador decimal
h = 0.1;

% Calcular f(x0) y f'(x0) usando la fórmula de derivación finita regresiva


y0 = exp(x0);
x = [x0 + h, x0, x0 - h];
y = exp(x);
dfp = (y(2) - y(3)) / h;

fprintf('Diferenciación finita regresiva f(%.1f) = %.6f\n', x0, dfp);

% Graficar la función y la aproximación de la derivada


x1 = linspace(0.3, 2);
y1 = exp(x1);
df = exp(x0);

yt = df * (x1 - x0) + y0;

hold on;
plot(x1, y1, 'b', 'LineWidth', 2); % Gráfico de la función
plot(x1, yt, 'r', 'LineWidth', 2); % Gráfico de la aproximación de la derivada
plot(x0, y0, 'om', 'MarkerSize', 8); % Punto en x0, f(x0)

xlabel('x');
ylabel('y');
legend('f(x)', 'Aproximación de f''(x)', 'Punto de interés');
title('Gráfico de f(x) y su derivada aproximada');
grid on;
grid minor;

Diferenciación finita centrada o central


%{Dada la función: f(x)=e^x .Evaluar f'(1,6), asumir que h=0,1%}
clc;
clear;

% Definir el valor de x0 y h
x0 = 1.6; % No uses coma, utiliza el punto como separador decimal
h = 0.1;

% Calcular f(x0) y f'(x0) usando la fórmula de derivación finita centrada


y0 = exp(x0);
x = [x0 + h, x0, x0 - h];
y = exp(x);
dfp = (y(1) - y(3)) / (2*h);

fprintf('Diferenciación finita centrada f(%.1f) = %.6f\n', x0, dfp);

% Graficar la función y la aproximación de la derivada


x1 = linspace(0.3, 2);
y1 = exp(x1);
df = exp(x0);

yt = df * (x1 - x0) + y0;


hold on;
plot(x1, y1, 'b', 'LineWidth', 2); % Gráfico de la función
plot(x1, yt, 'r', 'LineWidth', 2); % Gráfico de la aproximación de la derivada
plot(x0, y0, 'om', 'MarkerSize', 8); % Punto en x0, f(x0)

xlabel('x');
ylabel('y');
legend('f(x)', 'Aproximación de f''(x)', 'Punto de interés');
title('Gráfico de f(x) y su derivada aproximada');
grid on;
grid minor;

La PTA mamá de pepo

clc;
clear;
% Definir el valor de x0 y h
x0 = 1.6; % No uses coma, utiliza el punto como separador decimal
h = 0.1;

% Calcular f(x0) y f'(x0) usando la fórmula de derivación finita progresiva


y0 = exp(x0);
x = [x0 + h, x0, x0 - h];
y = exp(x);
dfp1 = (y(1) - y(2)) / h;
dfp2 = (y(2) - y(3)) / h;
dfp3 = (y(1) - y(3)) / (2*h);
error1= abs(y0-dfp1)/y0;
error2= abs(y0-dfp2)/y0;
error3= abs(y0-dfp3)/y0;
fprintf('Diferenciación finita progresiva f(%.1f) = %.6f\n', x0, dfp1);
fprintf('Diferenciación finita regresiva f(%.1f) = %.6f\n', x0, dfp2);
fprintf('Diferenciación finita centrada f(%.1f) = %.6f\n', x0, dfp3);
fprintf('Error porcentual 1 f(%.1f) = %.6f\n', x0, error1*100);
fprintf('Error porcentual 2 f(%.1f) = %.6f\n', x0, error2*100);
fprintf('Error porcentual 3 f(%.1f) = %.6f\n', x0, error3*100);
fprintf('La mamá de pepo')

—------------------------------- La mamá de Daniel en mi cama


disp('f(x) = e^x');
disp('h = 0.1');
x0 = 1.6;
h = 0.1;
f = @(x) exp(x);
ptos = 3;
p = ptos - 1;
i = 1;
while i <= ptos
if i == 1
j = (-p/2)*h;
else
j = j + h;
end
A(i,1) = x0+j;
A(i,2) = f(A(i,1));
i = i + 1;
end
i = 1;
pos = length(A);
while i <= 3
if i < 3
S(i,1) = (A(pos,2)-A(pos-1,2))/h;
else
S(i,1) = (A(length(A),2)-A(1,2))/(2*h);
end
S(i,2) = f(x0);
S(i,3) = abs(S(i,2)-S(i,1))/S(i,2);
S(i,4)=S(i,3)*100;
pos = pos - 1;
i = i + 1;
end
fprintf('\n\t CÀLCULO DE DIFERENCIACIÒN FINITA\n');
fprintf('\t df(x0) df(x0_real) Error Error Porcentual\n');
fprintf('Progresiva');,disp(S(1,:));
fprintf('Regresiva ');,disp(S(2,:));
fprintf('Central ');,disp(S(3,:));

Integración numérica (Newton-Cotes)


Regla del rectángulo o punto medio
clc;
clear;
close all;
syms x;
fx=(sin(x));
f=matlabFunction(fx,'Vars',x);
a=0;
b=pi;
n=8;
h=(b-a)/n;
for i=1:n+1
H(i)=a+(i-1)*h;
end
for i=1:n+1
if i==1
Hm(i)=0;
F(i)=0;
else
Hm(i)=(H(i)+H(i-1))/2;
F(i)=f(Hm(i));
end
end
suma=sum(F(:));
integral=suma*h;
fprintf(' xi xi_medio f(xi_medio)\n');
disp([H',Hm',F']);
fprintf('Integral aproximada=%.8f\n',integral);

x1=0:0.01:(2*pi);
y1=f(x1);
x2=a:0.01:b;
y2=f(x2);
hold on;
plot(x1,y1);
area(x2,y2,'FaceColor','r');
xlabel('Eje X');
ylabel('Eje Y');
grid on; grid minor;
title('Grafica de la funcion y area');
legend('Funcion','Area bajo la curva');

Regla del trapecio


clc; clear; close all
x=[0,0.2,0.4,0.6,0.8,1,1.2];
f=[2.5,2.9,2.7,2.2,1.5,0.8,0.2];
n=length(x);
fprintf(' X f(X)\n');
disp([x',f']);
h=(n+x(1,1))/n;
fprintf('La Amplitud:');
disp(h);
I=(h/2)*(f(1,1)+2*f(1,2)+2*f(1,3)+2*f(1,4)+2*f(1,5)+2*f(1,6)+f(1,7));
fprintf('La integral aproximada es=%1.7f\n',I);
%Grafica
hold on
plot(x,f,'color','r','linewidth',1.5);
xlabel('x'); ylabel('f(x)')
title('Metodo de Intgración por trapecio');
grid on
hold off

clc;
clear;
close all;
syms x;
fx=(cos(x)/(x^2));
f=matlabFunction(fx,'Vars',x);
a=3;
b=4;
n=5;
h=(b-a)/n;
for i=1:n+1
H(i)=a+(i-1)*h;
F(i)=f(H(i));
end
for i=1:n+1
if i==1
For(i)=F(i);
elseif i==n+1
For(i)=F(i);
else
For(i)=2*F(i);
end
end
suma=sum(For(:));
integral=suma*(h/2);
fprintf(' xi fxi Evaluaformula\n');
disp([H',F',For']);
fprintf('Integral aproximada=%.8f\n',integral);

x1=a-1:0.1:b+1;
y1=f(x1);
x2=a:0.1:b;
y2=f(x2);
hold on;
plot(x1,y1);
area(x2,y2,'FaceColor','r');
xlabel('Eje X');
ylabel('Eje Y');
grid on; grid minor;
title('Grafica de la funcion y area');
legend('Funcion','Area bajo la curva');

Regla de Simpson
%{ Aplicando la regla de Simpson 1/3 sabiendo que se tiene la siguiente función f(x)=𝑥 2√1
+ 𝑥, Se pide mostrar los datos de manera matricial Mostrar el valor de la integral verdadera
Mostrar el valor de la integral aproximada Mostrar el grafico respectivo Para ello debe
ingresar los límites y el número de intervalos. Probar para n=6, a=1 y b=4 Completar el
algoritmo para producir la salida mostrada %}
clc;
clear;
close all;
n=input('Numero de intervalos:');
a=input('Limite inferior:');
b=input('Limite superior:');
%Calculando el area real bajo la curva
Av=2/7*(1+b)^(7/2)-4/5*(1+b)^(5/2)+2/3*(1+b)^(3/2)-(2/7*(1+a)^(7/2)-
4/5*(1+a)^(5/2)+2/3*(1+a)^(3/2));
h=(b-a)/n;
disp(' X Y');

clc;
clear;
syms x;
fx=(exp(x^2));
f=matlabFunction(fx,'Vars',x);
a=0;
b=1;
n=4;
h=(b-a)/n;
for i=1:n+1
H(i)=a+(i-1)*h;
F(i)=f(H(i));
end
for i = 1:n+1
if (i - 1) == 0 || (i - 1) == n
For(i) = F(i);
elseif (i - 1) > 0 && mod(i - 1, 2) ~= 0
For(i) = 4 * F(i);
else
For(i) = 2 * F(i);
end
end
suma=sum(For(:));
integral=suma*(h/3);
fprintf(' xi fxi Evaluaformula\n');
disp([H',F',For']);
fprintf('Integral aproximada=%.8f\n',integral);

x1=a-1:0.1:b+1;
y1=f(x1);
x2=a:0.1:b;
y2=f(x2);
hold on;
plot(x1,y1);
area(x2,y2,'FaceColor','r');
xlabel('Eje X');
ylabel('Eje Y');
grid on; grid minor;
title('Grafica de la funcion y area');
legend('Funcion','Area bajo la curva');

También podría gustarte