Matlab - problemas con ajuste de datos experimentales

   
Vista:

problemas con ajuste de datos experimentales

Publicado por principiante (3 intervenciones) el 01/11/2010 17:06:37
Hola a todos,

Necesito realizar un ajuste utilizando Matlab. Mis datos experimentales deben de ajustarse a una ecuación del tipo:

Y=1-exp(-(k*t)^c1)
donde;
k=c2*exp(-c3/T)
Y es la variable dependiente.
T y t son las variables independientes.
c1,c2 y c3 son los coeficientes que deseo calcular.

En este mismo foro lei acerca del uso de la funcion fminsearch e incluso aparece un esquema de la rutina a implementar (el titulo de la consulta es: "problema con las limitaciones de cftool")...pero resulta que la rutina no anda bien con mis datos...
Me pasa que cuando corro la rutina no obtengo ningun tipo de ajuste..ya que las respuestas son precisamente los valores de entrada utilizados durante el llamado de la función fminsearch...es decir:
si c0=[1 2 3] y ejecuto [c,f,EF,out]=fminsearch('mifuncion',C0) obtengo como resultado c(1)=1, c(2)=2, c(3)=3..(y sucede aun en el caso de utilizar un c0 que contiene valores muy proximos a solucion..)

Desconozco si matlab contiene otra herramienta para resolver este tipo de problemas..
Alguna sugerencia?

Gracias.
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

RE:problemas con ajuste de datos experimentales

Publicado por Jorge (226 intervenciones) el 05/11/2010 07:19:52
La instrucción fminsearch encuentra el valor de las variables que minimizan una función arbitraria.

El problema en realidad está en la formulación que hagas del problema, de tal manera que ese mínimo sea la solución. fminsearch encuentra mínimos locales, no globales, de tal manera que la solución depende del punto de arranque que tomes.

Normalmente hay que explorar varios puntos de arranque, hasta que encuentres la mejor solución.

La 'toolbox' de Optimización tiene varias instrucciones que te pueden servir para ajuste de curvas.

Déjame ver los datos experimentales, a ver si se me ocurre algo más específico.
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

RE:problemas con ajuste de datos experimentales

Publicado por principiante (2 intervenciones) el 11/11/2010 18:32:49
ahi van algunos datos...agradezco tu ayuda

Y T t
0 401.105 0
0.000175034 401.188 0.996
0.00036305 401.272 2.004
0.000564496 401.355 3
0.000778923 401.438 3.996
0.001009914 401.522 5.004
0.001257021 401.606 6.012
0.00151129 401.688 6.996
0.001778094 401.771 7.992
0.00205967 401.853 8.976
0.002390936 401.936 9.972
0.002807257 402.021 10.992
0.003315348 402.104 11.988
0.003948335 402.187 12.984
0.004709352 402.27 13.98
0.005577807 402.352 14.964
0.006616819 402.438 15.996
0.007804453 402.521 16.992
0.009309476 402.605 18
0.011300206 402.69 19.02
0.013840212 402.772 20.004
0.017256283 402.855 21
0.021838053 402.938 21.996
0.027957525 403.021 22.992
0.036000578 403.104 23.988
0.04621074 403.186 24.972
0.058797065 403.267 25.944
0.074175427 403.349 26.928
0.091963974 403.43 27.9
0.112303272 403.511 28.872
0.135670073 403.594 29.868
0.160832875 403.675 30.84
0.188930964 403.758 31.836
0.21887519 403.84 32.82
0.251220201 403.923 33.816
0.284904154 404.005 34.8
0.319646817 404.086 35.772
0.356219501 404.168 36.756
0.394146795 404.25 37.74
0.43380876 404.333 38.736
0.475139591 404.417 39.744
0.517070282 404.5 40.74
0.559911955 404.583 41.736
0.604251041 404.668 42.756
0.647727044 404.752 43.764
0.690423228 404.837 44.784
0.730504201 404.921 45.792
0.767878638 405.005 46.8
0.803447675 405.092 47.844
0.835640035 405.179 48.888
0.86319825 405.263 49.896
0.887651963 405.349 50.928
0.908433097 405.435 51.96
0.925637005 405.52 52.98
0.939896672 405.605 54
0.951752421 405.691 55.032
0.961201118 405.775 56.04
0.968966176 405.86 57.06
0.975188161 405.944 58.068
0.98028026 406.029 59.088
0.984384827 406.114 60.108
0.987605272 406.197 61.104
0.990190939 406.28 62.1
0.992267172 406.363 63.096
0.993931561 406.446 64.092
0.995283038 406.53 65.1
0.996354729 406.613 66.096
0.997222736 406.697 67.104
0.997906756 406.78 68.1
0.998451107 406.864 69.108
0.9988728 406.948 70.116
0.999193322 407.031 71.112
0.999437295 407.114 72.108
0.999617253 407.197 73.104
0.999753789 407.282 74.124
0.999858093 407.365 75.12
0.999939119 407.447 76.104
1 407.53 77.1
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

RE:problemas con ajuste de datos experimentales

Publicado por Jorge (226 intervenciones) el 12/11/2010 00:14:19
Esto fue lo que intenté:

Primero, definí la función objetivo, que es que la diferencia entre las Y original y encontrada sea cero. A esta función la llamé OF_exp

------------------------------------
function U = OF_exp(C)
global Y T t

k = C(2)* exp(-C(3)./ T);
Y2 = 1 - exp(-(k .* t) .^ C(1));

U = norm(Y - Y2, 1);
------------------------------------

Después, armé la función que utiliza a fminsearch para minimizar la función ofbjetivo.
Grafico antes del ajuste y después de él.

------------------------------------

clear, clc, close all, format compact
global Y T t

data = [
%... aquí van tus datos
];

Y = data(:,1)';
T = data(:,2)';
t = data(:,3)';

fx = 'OF_exp';

% punto de arranque
C0 = [1 2 3]

% gráfica antes de ajuste
k = C0(2)* exp(-C0(3)./ T);
Y0 = 1 - exp(-(k .* t) .^ C0(1));
plot(Y,'g')
hold on
plot(Y0,'r')

% ajuste
[C, f, EF, out] = fminsearch(fx, C0)

% gráfica después de ajuste
k = C(2)* exp(-C(3)./ T);
Y2 = 1 - exp(-(k .* t) .^ C(1));

figure
plot(Y,'g')
hold on
plot(Y2,'b')

------------------------------------

Con C0 = [1 2 3], resulta
C = [4.9777 0.0218 -22.0922]

Con C0 = [0 0 3], resulta
C = 1.0e+003 * [ 0.0052 0.0000 -2.3071]

pero los resultados finales son casi idénticos. Hay muchas soluciones.
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

RE:problemas con ajuste de datos experimentales

Publicado por principiante (2 intervenciones) el 16/11/2010 18:58:10
muchísimas gracias Jorge..lo intentaré

saludos.
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