Matlab - Ayudaaa no me sale mi programa

 
Vista:

Ayudaaa no me sale mi programa

Publicado por Dalia (6 intervenciones) el 11/10/2018 11:10:44
tengo que maximizar esta ecuación cumpliendo los siguientes parámetros y me arroja error, no me reconoce el p que esta entre 0 y 1;



xi=[249.0
240.7
206.0
195.1
187.6
185.0
175.1
172.2
170.4
147.3
137.0
134.1
133.3
126.8
123.7
116.8
113.0
107.3
103.5
97.5
95.4
94.7
94.3
93.9
91.8
90.0
86.9
84.6
84.1
83.3
81.5
81.3
79.7
79.2
76.8
74.8
73.6
71.9
69.9
69.6
66.4
61.6
61.3
59.3
56.5
56.2
54.6
52.1
51.2
47.5
43.3
33.9
16.8
15.6
12.9
] ;
a1=125;
a2=58;
u1=35
u2=26;
p=0.5;
lnL=sumatoria de i=0 hasta n del Log( (p/a1)*exp(-exp((-xi-u1)/a1)))*exp(-((xi-u1)/a1)))+ ((1-p)/a2)*exp(-exp((-xi-u2)/a2)))*exp(-((xi-u2)/a2)))
dado
p>0 y p<0;
derivada de lnL CON RESPECTO A p=0
derivada de lnL CON RESPECTO A a1=0
derivada de lnL CON RESPECTO A u1=0
derivada de lnL CON RESPECTO A a2=0
derivada de lnL CON RESPECTO A u2=0

Mi problema es que mi p me debe dar en el rango de 0 y 1 y me da de menos 100 o algo asi:(
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ayudaaa no me sale mi programa

Publicado por Dalia (6 intervenciones) el 11/10/2018 16:30:50
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
clear
p=0.5;%Poblacion
a1=4177;%alfa 1
u1=-1202;%mu 1
o=42.433;%alfa 2
u2=76.05;%mu 2
y=[249.0
240.7
206.0
195.1
187.6
185.0
175.1
172.2
170.4
147.3
137.0
134.1
133.3
126.8
123.7
116.8
113.0
107.3
103.5
97.5
95.4
94.7
94.3
93.9
91.8
90.0
86.9
84.6
84.1
83.3
81.5
81.3
79.7
79.2
76.8
74.8
73.6
71.9
69.9
69.6
66.4
61.6
61.3
59.3
56.5
56.2
54.6
52.1
51.2
47.5
43.3
33.9
16.8
15.6
12.9
];
t=[16.00 %periodo de retorno operacion de weibull
8.00
5.33
4.00
3.20
2.67
2.29
2.00
1.78
1.60
1.45
1.33
1.23
1.14
1.07];
f=((p/a1)*(exp(-exp(-((y-u1)/a1))))*(exp(-((y-u1)/a1))))+((1-p)/o)*(exp(-exp(-((y-u2/o))))*(exp(-((y-u2)/o))));
L=log(f);
for
i=1:length(y);
y(i,1)=f(@(y),1);
S=sum(L); @ x (i);
if
    0<p<1;
    diff(L,'p')=0;
    diff(L,'a1')=0;
     diff(L,'u1')=0;
      diff(L,'o')=0;
       diff(L,'u2')=0;
end
for i=1:length(t)
    x(i,1)=fzero(@(x) p*exp(-exp((-((x-u)/a))))+(1-p)*exp(-exp(-((x-v)/o)))-1+1/t(i),1);
end
end
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JESUS DAVID ARIZA ROYETH
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Ayudaaa no me sale mi programa

Publicado por JESUS DAVID ARIZA ROYETH (1818 intervenciones) el 11/10/2018 17:14:41
en matlab el condicional así no te resulta, debe ser :
1
if 0<p && p<1


lo que quiere decir que si p es mayor que 0 y p es menor que uno entonces que ejecute los comandos dentro del if
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Ayudaaa no me sale mi programa

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 11/10/2018 17:43:21
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
clear
 p=0.5;%Poblacion
a1=4177;%alfa 1
u1=-1202;%mu 1
o=42.433;%alfa 2
u2=76.05;%mu 2
y=[249.0
240.7
206.0
195.1
187.6
185.0
175.1
172.2
170.4
147.3
137.0
134.1
133.3
126.8
123.7
116.8
113.0
107.3
103.5
97.5
95.4
94.7
94.3
93.9
91.8
90.0
86.9
84.6
84.1
83.3
81.5
81.3
79.7
79.2
76.8
74.8
73.6
71.9
69.9
69.6
66.4
61.6
61.3
59.3
56.5
56.2
54.6
52.1
51.2
47.5
43.3
33.9
16.8
15.6
12.9
];
t=[16.00 %periodo de retorno operacion de weibull
8.00
5.33
4.00
3.20
2.67
2.29
2.00
1.78
1.60
1.45
1.33
1.23
1.14
1.07];
f=(p/a1*(exp(-exp(-((y-u1)/a1)))) .*(exp(-((y-u1)/a1))))   +((1-p)/o)*(exp(-exp(-((y-u2/o)))).*(exp(-((y-u2)/o))))
 L=log(f)
  for i=1:length(y)
  %Y(i,1)=f(@(y),1);
% % S=sum(L); @ x (i);
if 0<p && p<1
% diff(L,p,0);
% diff(L,a1,0);
% diff(L,u1,0);
% diff(L,o,0);
% diff(L,u2,0); 
end
 
 for i=1:length(t)
%  x(i,1)=fzero(@(x) p*exp(-exp((-((x-u)/a))))+(1-p)*exp(-exp(-((x-v)/o)))-1+1/t(i),1);
 end
  end

filtrado a cierto punto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar