Anda di halaman 1dari 7

UNIVERSIDAD DE CUENCA

“FACULTAD DE C.C.Q.Q”

Integrantes: Cuenca Isaías, Gómez David, Orellana Edgar


Carrera: Ing. Industrial
Asignatura: Métodos Numéricos
Fecha: jueves 17 de enero del 2019

PROGRAMAS EN MATLAB
Programas Finales
1. REGLA DEL TRAPECIO

%REGLA DEL TRAPECIO


clear all
clc
%pi*(1+(x/2)^2)^2
syms x;
I2=0;
f=input('ingrese la función:','s');
p=input('ingrese la función nuevamente:');
a=input('ingrese el límite inferior:');
b=input('ingrese el límite superior:');
n=input('ingrese el número de intervalos:');
ecu=((b-a)/n);
f=inline(f);
fun=inline(char(p));
fun= int(p,a,b);
I1=(f(a)+ f(b));
for i=(a+ecu):ecu:(b-ecu)
I0=2*f(i);
I2=I2+I0;
end
I=((ecu/2)*(I1+I2))
E=fun-I

2. 1/3 SE SIMPSON

%REGLA DE 1/3 DE SIMPSON


clear all
clc
fprintf('REGLA DE 1/3 DE SIMPSON')
Function [f,y]=unterciosimpson(f,a,b,n);
f=input('Ingrese su funcion: ','s');
a=input ('Ingrese el limite inferior: ');
b=input('Ingrese el limite superior: ');
n=input('Ingrese las divisiones deseadas: ');
h=(b-a)/n;
g=f;
f=inline(f);
y1=f(a);
y2=f(b);
y4=0;
format long
for i=1:n-1;
a1=a+i*h;
if mod(i,2)==0;
y3=2.*f(a1);
else
y3=4.*f(a1);
end
y4=y4+y3;
end
y=(h./3).*(y1+y4+y2)
syms x
er=int(g,x,[a b]);
error=(er-y)

3. DIFERENCIACION NUMERICA

%METODO DE APROXIMACION POR DIFERENCIAS


clear all
clc
clc;
fprintf('METODO DE APROXIMACION POR DIFERENCIAS \n');
fprintf('1.Diferencias hacia Adelante \n');
fprintf('2.Diferencias hacia Atrás \n');
fprintf('3.Diferencias Central \n');
fprintf('4.Diferencias hacia adelante con tres puntos \n');
fprintf('5.Diferencias hacia atrás con 3 puntos \n');
fprintf('6.Diferencias hacia adelante para la segunda derivada \n');
fprintf('7.Diferencias hacia atrás para la segunda derivad\n');
fprintf('8.Diferencias central para la segunda derivada\n');
metodo=input('Ingrese el número de la aproximación deseada: ');
f=input('Ingrese la función a evaluar f(x) = ','s');
f=inline(f);
h=input('Ingrese h ');
x=input('Ingrese el punto para evaluar x ');
n=input('Numero de veces que evaluara la función ');
if metodo >0 && metodo <8
switch metodo
% Aproximacion por diferncias hacia Adelante
case 1

df=[f(x+h)-f(x)]/h;
fprintf(' x = %4.4f\n',df);
e=((x-df)/(df))*100;
fprintf('El error en porcentaje es= \n');
disp(e)
% Aproximacion por diferncias hacia Atras
case 2

df=[f(x)-f(x-h)]/h;
fprintf(' x = %4.4f\n',df);
e=((x-df)/(df))*100;
fprintf('El error en porcentaje es= \n');
disp(e)
% Aproximacion por diferncias Central
case 3

df=[f(x+h)-f(x-h)]/(2*h);
fprintf(' x = %4.4f\n',df);
e=((x-df)/(df))*100;
UNIVERSIDAD DE CUENCA
“FACULTAD DE C.C.Q.Q”

Integrantes: Cuenca Isaías, Gómez David, Orellana Edgar


Carrera: Ing. Industrial
Asignatura: Métodos Numéricos
Fecha: jueves 17 de enero del 2019

fprintf('El error en porcentaje es= \n');


disp(e)
% Aproximacion por diferncias hacia Adelante con tres puntos
case 4
df=[-f(x+2*h)+4*f(x+h)-3*f(x)]/(2*h);
fprintf(' x = %4.4f\n',df);
e=((x-df)/(df))*100;
fprintf('El error en porcentaje es= \n');
disp(e)
% Aproximacion por diferncias hacia Atras con tres puntos
case 5

df=[3*f(x)-4*f(x-h)+f(x-2*h)]/(2*h);
fprintf(' x = %4.4f\n',df);
e=((x-df)/(df))*100;
fprintf('El error en porcentaje es= \n');
disp(e)
% Aproximacion por diferncias hacia Adelante para la segunda
derivada
case 6

df=[f(x)-2*f(x+h)+f(x+2*h)]/(h^2);
fprintf(' x = %4.4f\n',df);
e=((x-df)/(df))*100;
fprintf('El error en porcentaje es= \n');
disp(e)
% Aproximacion por diferncias hacia Atras para la segunda
derivada
case 7

df=[f(x)-2*f(x-h)+f(x-2*h)]/(h^2);
fprintf(' x = %4.4f\n',df);
e=((x-df)/(df))*100;
fprintf('El error en porcentaje es= \n');
disp(e)
% Aproximacion por diferncias Central para la segunda derivada
case 8

df=[f(x+h)-2*f(x)+f(x-h)]/(h^2);
fprintf(' x = %4.4f\n',df);
e=((x-df)/(df))*100;
fprintf('El error en porcentaje es= \n');
disp(e)
end
else
disp('ingrese un valor entre 1 y 8')
DiferenciacionNumerica
end
4. METODO DE GAUSS

% SOLUCION DE MATRICES POR GAUSS


clc
clear
format long
fprintf(' METODO DE GAUSS \n ');
A=input('Ingrese la matriz A = \n');
b=input('\nIngrese el vector b, correspondite a los terminos
independientes b=\n');
[n,m]=size(A);
C=[A,b];% la matriz C, representa la forma de la matriz aumentada [Ab]
if n==m
for k=1:(n-1)%instruccion iterativa que permite repetir pasos un
numero
%determinado de veces
for i=(k+1):n
m(i,k)=C(i,k)/C(k,k); %formula para hallar los
multiplicadores

for j=k:(n+1)
C(i,j)= C(i,j) - m(i,k)*C(k,j); %formula de la nueva
fila
end
end

end
for i=n:-1:1
suma=0;
for p=(i+1):n
suma = suma + C(i,p)*X(p);
end
X(i)=(C(i,n+1)-suma)/C(i,i);
%formula de la susticion regresiva y solucion de las variables
end
else %funcion asignada del if, en caso de que este sea falso
fprintf('\nERROR: La matriz NO es cuadrada\n');
end
fprintf('\n\nLa solucion :\n');
%a continuacion de utiliza una instruccion for, para mostrar el
usuario,
%los resultados de una manera mas ordena
for i=1:n
Xi=X(1,i);
fprintf('\nX%g=',i)
disp(Xi);
end

5. INVERSA DE LA MATRIZ

%INVERSA DE LA MATRIZ
clc
clear all
fprintf(' INVERSA DE UNA MATRIZ \n');
UNIVERSIDAD DE CUENCA
“FACULTAD DE C.C.Q.Q”

Integrantes: Cuenca Isaías, Gómez David, Orellana Edgar


Carrera: Ing. Industrial
Asignatura: Métodos Numéricos
Fecha: jueves 17 de enero del 2019

n=input('Ingrese el grado de la matriz: ');


m=n*2;
for i=1:n
for j=1:n
fprintf('Ingrese el valor de A(%d,%d):',i,j)
A(i,j)=input(' ');
end
end
for i=1:n
c=0;
for j=(n+1):m
c=c+1;
if c==i
A(i,j)=1;
else
A(i,j)=0;
end
end
end

for k=1:n
for j=1:m
B(1,j)=A(1,j)/A(1,k);
end
for i=2:n
for j=1:m
B(i,j)=B(1,j)*A(i,k);
end
end
for i=1:(n-1)
for j=1:m
A(i,j)=A((i+1),j)-B((i+1),j);
end
end
for j=1:m
A(n,j)=B(1,j);
end
end
C=zeros(n);
a=0;
for i=1:n
a=a+1;
b=0;
for j=(n+1):m
b=b+1;
C(a,b)=A(i,j);
end
end
fprintf('La inversa de la matriz es: \n')
disp(C)

6. LU
%METODO LU
clc
clear
format long
fprintf(' METODO LU: \n');
A=input ('Ingrese la matriz: \n ');
b=input ('\n Ingrese el vector de terminos independientes:\n');
[n,m]=size(A);
C=[A,b];
fprintf ('\nSu matriz aumentada C= \n');
disp(C)

if n==m
for k=1:n
L(k,k)=1;
suma=0;
for p=1:k-1
suma=suma+L(k,p)*u(p,k);
end
u(k,k)=(A(k,k)-suma);
for i=k+1:n
suma=0;
for r=1:k-1
suma=suma+L(i,r)*u(r,k);
end
L(i,k)=(A(i,k)-suma)/u(k,k);
end
for j=k+1:n
suma=0;
for s=1:k-1
suma=suma+L(k,s)*u(s,j);
end
u(k,j)=(A(k,j)-suma);
end
end
memoriau=1;
memoriaL=1;
for i=1:n
memoriau=memoriau*u(i,i);
end
producto=memoriaL*memoriau;

if producto~=0
for i=1:n
suma=0;
for p=1:i-1
suma=suma+L(i,p)*z(p);
end
z(i)=(b(i)-suma)/L(i,i);
end
for i=n:-1:1
suma=0;
for p=(i+1):n
suma=suma+u(i,p)*x(p);
end
x(i)=(z(i)-suma)/u(i,i);
end
else
fprintf('\nEl determinante es igual a cero, por lo tanto el
sistema tiene infinita o ninguna solucion\n')
end
UNIVERSIDAD DE CUENCA
“FACULTAD DE C.C.Q.Q”

Integrantes: Cuenca Isaías, Gómez David, Orellana Edgar


Carrera: Ing. Industrial
Asignatura: Métodos Numéricos
Fecha: jueves 17 de enero del 2019

end

fprintf('\n Matriz L: \n')


disp(L)
fprintf('\n Matriz U: \n')
disp(u)
fprintf('\n Matriz Z: \n')
disp(z)
fprintf('\n \n La solucion es:\n');
for i=1:n
xi=x(1,i);
fprintf('X%g=',i)
disp(xi);
end

Anda mungkin juga menyukai