Método Matlab
Método Matlab
Método Matlab
1.-MÉTODO MATLAB
1.1.-CÁLCULO DE LA CONFIABILIDAD DE UN CAMIÓN MINERO MARCA
KOMATSU MODELO KOM 930E-4SE
1.1.2-CONFIABILIDAD
El significado de la confiabilidad es la “vida” útil de una máquina. La máquina que posee
mayor confiabilidad con menos frecuencia pierde su capacidad de trabajo. La medida
cuantitativa de la confiabilidad es la tasa de falla, tasa a la cual se espera que un
componente falle bajo condiciones conocidas.
La teoría de la confiabilidad desarrolla métodos para determinar lo que está funcionando
mal en un sistema, como se puede prevenir lo que no está funcionando bien y si algo está
funcionando mal como puede recuperarse el sistema y minimizar las consecuencias.
1.1.3.- MATLAB
Es el nombre abreviado de “Matriz Laboratory”. Es un programa para realizar cálculos
numéricos con vectores y matrices, y por tanto se puede trabajar también con números
escalares (tanto reales como complejos), con cadenas de caracteres y con otras estructuras
de información más complejas
1.1.4.-DISTRIBUCION DE WEIBULL
La función de distribución de Weibull es un modelo estadístico que representa la
probabilidad de fallo después de un tiempo t (R (t)) en función del tiempo transcurrido o
de una variable análoga. O dicho de otra manera, R (t) es la probabilidad de que los
componentes de un conjunto sobrevivan hasta el momento t.
Esta función de probabilidad de fallo o función de fiabilidad R (t), viene dada por:
𝑡−Υ 𝛽
−( )
𝑅(𝑡) = 𝑒 𝜂
𝛽
1 (
𝑡−Υ
) 1 𝑡−Υ 𝛽
𝑙𝑛 ( ) = 𝑙𝑛 (𝑒 𝜂 ) → 𝑙𝑛 ( )=( )
1 − 𝐹(𝑡) 1 − 𝐹(𝑡) 𝜂
𝑦 = 𝑎𝑥 − 𝑏
1
ln ln
.ln t .ln( )
1 F ( t ) a x b
y
1
𝑦 = 𝑙𝑛 [𝑙𝑛 ( )] 𝑎 = 𝛽 𝑥 = ln(𝑡 − 𝛾) 𝑏 = −𝛽 ∗ ln(𝜂)
1 − 𝐹(𝑡)
De donde despejamos “ ”:
b
b
b .ln( ) ln( ) e
2.-CALCULO DE LOS PARAMETROS DE WEIBULL
A continuación se explica un método (no el único, aunque sí uno de los más utilizados)
que permite obtener estimaciones puntuales de la función de distribución empírica, F (ti),
a partir de las observaciones, ti .
Considerando que t1< t2<…tn son los “n” tiempos de fallo observados. Para i = 1,2,…,n
se puede obtener la segunda componente del punto (t,F(ti)) tomando para tiempos de fallo
mayor a 20:
𝑖 − 0.3
𝐹(𝑡) =
𝑛 + 0.4
Para el caso de la motoniveladora cat 16M se tiene los siguientes valores:
N = 36
i = {1, 2,3,…, 35,36}
De lo expuesto se tiene definido las coordenadas con un valor de (γ = 0)
Abscisas(X) = Ln(t)
Ordenadas (Y) = Ln(Ln(1/(1-F (t))))
Una vez calculado los valores de las constantes “a” y “b” podemos calcular los
siguientes valores:
β=a
η = exp (-b/ β)
“Existen diferentes métodos para calcular los parámetros de WEIBULL, en este Manual
se detallara paso a paso el desarrollo del script en el SOFTWARE MATLAB.
2.2.-METODO DE MATLAB
PRIMER PASO
Colocamos en primer lugar las funciones clc y clear para que cada vez que se ejecute el
edit en primer lugar borre los resultados que podrían haber en el Command Window
(clc) y también que limpie el Workspace (clear)
clc, clear;
SEGUNDO PASO
TERCER PASO
CUARTO PASO
Usamos la función sort para ordenar nuestros datos de menor a mayor, es decir creamos
otra matriz con los datos iniciales pero ahora ordenarlos de forma ascendente.
t=sort(t);
QUINTO PASO
Creamos una matriz para los valores de la fórmula de Bernard, para ello usamos la
función length (t). Length, hace el conteo del número de elementos de una matriz.
Entonces podemos calcular la siguiente matriz [1:length(t)]; esta expresión nos indica
que se tomaran datos desde 1 hasta el valor resultante del length(t); posteriormente
calculamos el ajuste mediante el método de Bernard.
F=([1:length(t)]-0.3)/(length(t)+0.4);
SEXTO PASO
x=log(t);
y=log(log(1./(1-F)));
SEPTIMO PASO
Polyfit (x, y, n); esta función usa los valores de “x” e “y” para generar un polinomio
de grado “n”. Pero como nosotros buscamos una recta haremos que “n=1”, es así que
se obtendrán dos valores que vendrían a ser los coeficientes de la recta Y=aX+b es
decir obtenemos una matriz fila como sigue [a b] (linealizando la curva)
% Linealización de la curva
Pol=polyfit(x,y,1); %Se obtiene los valores pol= [pol(1) pol(2)] coeficientes de
la recta(y=pol(1)x + pol(2))
Para determinar los valores de beta y eta se quieren de los valores que nos da la función
polyfit(x, y, 1) anteriormente hallados como se mencionó [a b] para ello “a” será pol (1)
y “b” será pol (2).
OCTAVO PASO
Luego de generar la recta con ayuda de la función polyfit (x, y, 1) evaluaremos los
valores de x en esta recta, para ello nos ayudamos de la función polyval (Pol, x) y
obtendremos los valores de la ordenada para esta recta.
yy=polyval(Pol,x);
NOVENO PASO
Para poder colocar algún texto o datos en el Command Windows usaremos la función
disp.
disp(' ');
disp('TIEMPO ENTRE FALLAS DEL CAMION MINERO KOMATSU
MODELO KOM930E-4SE ');
disp(' n t');
disp([(1:length(t))',t'])
disp('1°.-Se obtiene la ecuación de la recta: ');
disp(' ');
DECIMO PASO
Para colocar textos pero haciendo que aparezcan resultados ya calculados podemos usar
la función fprintf.
fprintf ('Y =\t'); en este caso el texto que se verá en el Comman Windows es “Y =” y
la parte “\t” hace que lo escrito debajo de esta función lo lleve en la misma línea.
También se puede escribir “\n” en este caso estará separado en la siguiente fila de texto.
fprintf('%0.4f\t',Pol(1)); es este caso la función fprintf nos permite hacer que aparezca
un valor ya calculado, para ello se debe tener en cuenta lo que está dentro de los
paréntesis “'%0.4f\t',Pol(1)”
%0.4f; el “0” indica la separación, el “4” en número de decimales y “f” nos permite
llamar un dato que queremos que aparezca, para nuestro caso sería Pol(1).
fprintf('Y =\t');
fprintf('%0.4f\t',Pol(1));
fprintf('X\t');
fprintf('%0.4f\t',Pol(2));
disp('(Para Gamma = 0)')
fprintf('Beta (B) =\t');
fprintf('%0.4f\n',beta);
fprintf('Eta (n) =\t');
fprintf('%0.4f\t',eta);
Plot (): nos permite generar gráficos colocando. Entre comas se colocan los valores del
eje de abscisas y luego el valor de las ordenadas, además presenta otras herramientas
que pueden ayudar a nuestra graficas una presentación más estética. Por ejemplo
tenemos las funciones siguientes:
'b'; indica el color de la línea r=rojo; b=azul; k=negro; g=verde entre otros.
'LineWidth',2; nos permite agregar grosor a la línea variando con 1, 2, 3,
etc.
'bo'; solo nos genera los puntos introducidos.
'-bo'; los puntos serán unidos por una línea continua.
'MarkerEdgeColor','k'; permite colocar color al marco.
'MarkerFaceColor','r'; permite colocar color al fondo.
'MarkerSize',2; permite aumentar el tamaño de los puntos.
hold on; esa función nos permite capturar un plot para ello se escribe siempre después
de la gráfica que se quiere capturar.
title; una vez generado la figura podemos ponerle el titulo para ello esta función nos
permite hacer eso y otras cosas más que se detallaran a continuación.
(['Ajuste de Weibull con ','\gamma',' = 0 ']; la primera parte viene a ser el texto del
título “'Ajuste de Weibull con '” la segunda “'\gamma'” nos permite introducir el
símbolo y la última parte “' = 0 '” que también forma parte del texto que estará en el
título.
'Color','w'; nos permite colocarle color al texto.
'FontSize',12; tamaño del fondo.
'HorizontalAlignment','center'; alinear y centrar texto.
'BackgroundColor',[.55 .100 .0]; no permite elegir el color de fondo, para este caso
podemos colocar el color mediante [.55 .100 .0] que viene a ser como una paleta de
combinación de los colores primarios.
'EdgeColor','b'; color del marco.
'LineWidth',1; ancho de la línea.
min(yy); escoge el mínimo valor de la matriz seleccionada.
median(x); escoge el valor medio de la matriz seleccionada.
set(gca,'yGrid','on','yColor','k','LineStyleOrder', '-'); permite colocar líneas auxiliares
para mejorar la visualización de las gráficas.
Xlabel; permite colocar texto en eje x de la gráfica.
Ylabel; permite colocar texto en eje y de la gráfica.
Text; permite colocar texto adicional o leyenda en el gráfico.
num2str(); permite colocar datos en el texto.
[d11,c11] = min(Y2);
[d12,c12] = max(X);
grid on
xlabel('ln t','Color','b','FontSize',12)
ylabel('ln(ln(1/(1-F(i))))','Color','b','FontSize',12)
disp(' ');
%B
disp('B.-Evaluamos el ajuste de los datos')
disp(' ')
R=(sum((X-(sum(X)/length(X))).*(Y-(sum(Y)/length(Y))))/((sum((X-
(sum(X)/length(X))).^2)*sum((Y-(sum(Y)/length(Y))).^2))^.5));% coeficiente de
correlacion de pearson
Rcuadrado=(sum((X-(sum(X)/length(X))).*(Y-(sum(Y)/length(Y))))/((sum((X-
(sum(X)/length(X))).^2)*sum((Y-(sum(Y)/length(Y))).^2))^.5))^2; % coeficiente de
determinacion
text(d12,d11,['y = ',num2str(P(1)),'x ',num2str(P(2)),' \wedge ','r^{2} =
',num2str(Rcuadrado)],'FontSize',10,'HorizontalAlignment','center','BackgroundColor',[.
8 .8 .50],'Margin',6,'EdgeColor','k','LineWidth',1)%texto en el grafico
disp(' ');
disp('R =')
fprintf('%0.4f\n',R);
disp('Rcuadrado =')
fprintf('%0.4f\n',Rcuadrado);
Para esta parte se pretende realizar cálculos para gamma mayores que cero, para ello
usamos la función for.
for; nos permite hacer iteraciones
for j=1:n;
B=1:n;
%F=[1:length(t)]/(length(t)+1);
X=log(t-j);
e(1,j)=(sum((X-(sum(X)/length(X))).*(Y-(sum(Y)/length(Y))))/((sum((X-
(sum(X)/length(X))).^2)*sum((Y-(sum(Y)/length(Y))).^2))^.5))^2;
end
r2=e;
disp(' ');
disp('C.-Encontramos el valor máximo de r^2 que ajusta la recta')
disp('con la observación de que se ha incluido el parámetro Gamma > 0')
disp('a los datos de falla')
%La siguiente línea calcula el parámetro r^2 máximo y Gamma
disp(' ');
%Escribimos la variable "Gama" de esta forma para salvar un conflicto que se
presentaria
%con la función interna Gamma de MATLAB
[Rcuadrado,Gama] = max(r2);r11=Rcuadrado;g11=Gama;
disp('El valor de r^2 que maximiza el ajuste es el siguiente: ')
disp('Rcuadrado =')
fprintf('%0.4f\n',Rcuadrado);
ylabel(['Gamma','(\gamma)',' en [Horas]'],'Color','b','FontSize',12)
hold on
plot(r11,g11,'o','LineWidth',2,'MarkerEdgeColor','r','MarkerFaceColor','r','MarkerSize',2
)
disp(' ');
plot(X,fig3,'-
b','LineWidth',2,'MarkerEdgeColor','k','MarkerFaceColor','r','MarkerSize',2)
hold on
plot(X,Y,'bo','LineWidth',1,'MarkerEdgeColor','k','MarkerFaceColor','r','MarkerSize',2)
title(['Ajuste de Weibull con ','\gamma',' =
',int2str(Gama)],'Color','k','FontSize',12,'HorizontalAlignment','center','BackgroundColo
r',[.20 .80 .20],'Margin',6,'EdgeColor','k','LineWidth',1)
[d11,c11] = min(Y2);
[d12,c12] = max(X);
text(d12,d11,['y = ',num2str(P(1)),'x ',num2str(P(2)),' \wedge ','r^{2} =
',num2str(Rcuadrado)],'FontSize',10,'HorizontalAlignment','right','BackgroundColor',[.8
.8 .50],'Margin',6,'EdgeColor','k','LineWidth',1)
grid on
xlabel('ln (t-\gamma)','Color','b','FontSize',12)
ylabel('ln(ln(1/(1-F(i))))','Color','b','FontSize',12)
fprintf('Y =\t');
fprintf('%0.4f\t',P(1));
fprintf('X\t');
fprintf('%0.4f\t',P(2));
disp('(Ecuación de la recta de Ajuste con Gamma > 0)')
Beta=P(1);
disp(' ');
disp(' ');
disp('Beta (B) =');
fprintf('%0.4f\n',Beta);
Eta=exp(P(2)/(-P(1)));
disp('Eta (n) =');
fprintf('%0.4f\n',Eta);
disp('Gamma =');
fprintf('%0.4f\n',Gama);
disp(' ');
%F
Ft=1-exp(-((t-Gama)./Eta).^Beta);
Dni=((Ft-F).^2).^0.5;
[Valor_Dmax,D_Posicion] = max(Dni);
disp(' ');
q=1;
disp(' ');
if (q>Valor_Dmax);
fprintf('El modelo es WEIBULL se ACEPTA (D_Alfa>Valor_Dmax)\n');
else
fprintf('El modelo no es WEIBULL se RECHAZA (D_Alfa<Valor_Dmax)\n');
end
disp(' ');
disp('Valor_Dmax =');
fprintf('%0.4f\n',Valor_Dmax);
disp('D_Alfa =');
fprintf('%0.4f\n',q);
figure(4)
plot(t,Rt,'-bo','LineWidth',1,'MarkerEdgeColor','k','MarkerFaceColor','r','MarkerSize',2)
title(' Confiabilidad
','Color','k','FontSize',12,'HorizontalAlignment','center','BackgroundColor',[.20 .80
.20],'Margin',6,'EdgeColor','k','LineWidth',1)
[d11,c11] = min(t);
d12= median(Rt);
text(d11,d12,['R(t) = e ','^{-((\gamma-t)/\eta)}',' ^
','^{\beta}'],'FontSize',10,'HorizontalAlignment','left','BackgroundColor',[.8 .8
.50],'Margin',6,'EdgeColor','k','LineWidth',1)
grid on
xlabel('Tiempo (t) en [Horas]','Color','b','FontSize',12)
ylabel('Confiabilidad R(t)','Color','b','FontSize',12)
disp(' ');
figure(5);
plot(t,TF,'-bo','LineWidth',1,'MarkerEdgeColor','k','MarkerFaceColor','r','MarkerSize',2)
title('Tasa de Fallas de Acuerdo a Distribución de
Weibull','Color','k','FontSize',12,'HorizontalAlignment','center','BackgroundColor',[.20
.80 .20],'Margin',6,'EdgeColor','k','LineWidth',1)
[limf5 pslim]=max(t);
xlim([0 limf5+30]);
grid on
xlabel('Tiempo (t) en [Horas]','Color','b','FontSize',12)
ylabel('Tasa de Fallas: \lambda(t) [Fallas/Hora]','Color','b','FontSize',12)
figure(6)
plot(t,It,'-bo','LineWidth',1,'MarkerEdgeColor','k','MarkerFaceColor','r','MarkerSize',2)
title(' Infiabilidad
','Color','k','FontSize',12,'HorizontalAlignment','center','BackgroundColor',[.20 .80
.20],'Margin',6,'EdgeColor','k','LineWidth',1)
grid on
[d11,c11] = min(t);
d12= median(Rt);
text(d11,d12,['I(t) = 1 - e ','^{-((\gamma-t)/\eta)}',' ^
','^{\beta}'],'FontSize',10,'HorizontalAlignment','left','BackgroundColor',[.8 .8
.50],'Margin',6,'EdgeColor','k','LineWidth',1)
xlabel('Tiempo (t) en [Horas]','Color','b','FontSize',12)
ylabel('Infiabilidad I(t)','Color','b','FontSize',12)
TBF
ITEM (HORAS)
1 1.33
2 2.29
3 2.53
4 2.55
5 3.04
6 3.19
7 3.70
8 3.78
9 5.66
10 5.93
11 6.32
12 8.34
13 9.47
14 10.37
15 11.33
16 13.04
17 13.09
18 15.11
19 15.12
20 15.52
21 16.46
22 17.83
23 17.90
24 18.00
25 18.92
26 19.43
27 21.91
28 22.09
29 25.65
30 28.94
41 46.40
31 29.86
42 48.89
32 29.89
43 49.06
33 30.28
44 49.17
34 32.67
45 49.71
35 33.74
46 49.78
36 34.35
47 50.42
37 34.55
48 50.47
38 36.47
49 54.67
39 39.67
50 55.03
40 42.20
51 55.20
52 56.00
53 65.35
54 65.43
55 65.58
56 66.17
57 67.17
58 68.29
59 71.01
60 71.22
61 77.63
62 78.68
63 91.08
64 106.76
65 111.72
66 111.89
67 116.12
68 116.26
69 117.34
70 126.16
71 127.73
72 147.16
73 148.54
74 154.35
75 176.05
76 188.81
77 195.71
78 230.59
79 247.78
n t F*100 X Y
Gamma = 63.0000
Valor_Dmax = 0.0564
D_Alfa = 0.1884
√1.36
Entonces:𝑫𝒏𝒂 == = 0.153
79
𝑫𝒏𝒊𝒎𝒂𝒙 = 𝟎. 𝟎𝟓𝟔𝟒
Comparación:
4.- CONCLUSIONES