Sei sulla pagina 1di 36

UNIVERSIDAD DE GUAYAQUIL

FACULTAD DE INGENIERÍA QUÍMICA


CARRERA DE INGENIERÍA QUÍMICA

SIMULACIÓN DE PROCESOS II

TALLER #1
MINIMIZACIÓN Y AJUSTE DE DATOS
2DO PARCIAL

ESTUDIANTE:
SARA VERA HERNÁNDEZ

DOCENTE: ING. GONZALO VILLA

CURSO:
7MO SEMESTRE PARALELO “7-1”

FECHA DE REALIZACION:
2 DE ENERO DEL 2018
INTRODUCCION

MINIMIZACIÓN Y AJUSTE DE DATOS


En primer lugar, hay que definir el concepto de proximidad de dos funciones en un
intervalo. Para ello hay que introducir una distancia entre las dos funciones. Las
distancias se suelen definir mediante normas. Si tenemos una norma definida para
funciones " f (x)", se define la distancia entre dos funciones f (x) y g(x)
como d( f (x),g(x)) = " f (x)−g(x)".
Hay diversas normas utilizadas frecuentemente. La más utilizada es la norma de
mínimos cuadrados o L2 definida como

MODELADO DE DATOS EXPERIMENTALES

Comportamiento estadístico de los datos experimentales

Un caso particularmente importante es cuando deseamos ajustar datos experimentales


mediante una función dependiente de parámetros ajustables. Esta función puede estar
inspirada en un modelo teórico, o bien puede ser de carácter empírico, motivada
únicamente por el comportamiento de los datos.
Los datos experimentales vienen siempre afectados de errores de medida. Estos errores
pueden ser sistemáticos o aleatorios. Los errores sistemáticos son debidos al sistema o
aparato de medida y generalmente sólo actúan en una dirección. Tienen un número
reducido de causas y se pueden determinar frecuentemente a partir del análisis del
método de medida, comparando con otras medidas conocidas, o mediante un
procedimiento de calibrado. Un ejemplo de error sistemático es el error de la medida
de una longitud con una regla debido a la variación de la longitud de la regla con la
temperatura. La corrección de este error se consigue conociendo el coeficiente de
dilatación térmica de la regla con la temperatura (análisis del método de medida) o
comparando la longitud medida con una longitud conocida. Los errores aleatorios por
otro lado tienen un número muy elevado de causas, difíciles de identificar por separado,
y que producen una contribución aleatoria en cada medida independiente. Cada una de
las causas produce una pequeña contribución y el error aleatorio total es la suma de
todas las causas por separado. El error aleatorio se puede representar
matemáticamente por una suma de variables aleatorias.
AJUSTE DE DATOS CON MATLAB
La idea es aprender algún método de ajuste no lineal sobre Matlab, que
no sea tan \caja negra" como los de origen. Algoritmos de minimización hay muchos,
algunos son lineales y otros dependen de derivadas parciales. Lo que proponemos es
usar uno bastante robusto fminsearch, pero que no es capaz de dar intervalos de
confianza de los parámetros de ajuste, y combinarlo con otro nlinfit, del que se puede
obtener la incerteza estadística de los ajustes.

Esta función ya está escrita, es funcfitNpicos.m. Para la primera parte, hace falta una
función adicional, que es la norma de la diferencia entre los puntos medidos y la función
de ajuste, evaluada en los mismos valores de la variable independiente (x). A esta la
llamamos estimador.m; La rutina de Matlab fminsearch va a buscar minimizar esa
diferencia. Para que la rutina función, hay que inicializar los parámetros de forma
medianamente razonable como para que encuentre el mínimo.
Una vez que encontramos una solución aproximada (en general está bastante cerca),
podemos pasar la solución del primer método como semilla para el segundo. El método
es el de regresión no lineal de la rutina nlinfit (o una versión medicada para permitir
dar algunos de los parámetros, mod nlinfit). Esto es bastante rápido, y cuando
converge a una solución, devuelve los parámetros de ajuste y fundamentalmente, sus
tolerancias o incertezas. Esto lo puede calcular usando la matriz de covarianza de los
coeficientes ajustados.
El programa de Matlab ejemplo ajuste.m hace esto mismo: carga los datos del
experimento simulado, ajusta primero con un método heurístico y después con
el método de derivadas parciales. Para que funcione hay que bajar las funciones
adicionales estimador.m funcfitNpicos.m y los datos numéricos que están todos
juntos en datos simulados.rar. Todo este paquete de
funciones, scripts y datos están en el archivo comprimido
ajuste matlab.rar.
Otras series de datos y sus funciones de ajuste

Biexponencial: Una superposición de dos decaimientos con distintos tiempos


característicos:

Los datos asociados están en biexponencial.mat.

Saturación exponencial: La curva típica de carga de un capacitor, con cierto offset:

Los datos simulados para ajustar a este modelo están en capacitor.mat. También se
puede probar a ajustar la primera parte con una función lineal:

Función error, o saturación: Una expresión que puede describe un comportamiento


lineal con saturación; la integral de un pulso gaussiano

Para usar esta función como ajuste no lineal, usar los datos de erf.mat.

Decaimiento exponencial: A partir de los valores experimentales encontrar la amplitud


inicial A y el tiempo característico tc:

Para usar esta función como ajuste no lineal, usar los datos de expdecay.mat.

Oscilador amortiguado: La expresión para la respuesta de un oscilador amortiguado


sub-crítico, con dos frecuencias de oscilación naturales cercanas que producen batidos:

Los datos de la simulación de una medición de un sistema equivalente están en rlc_nd.mat.


EL TOOLBOX DE OPTIMIZACIÓN DEL PROGRAMA
MATLAB

El Toolbox (caja de herramientas) de Optimización es una colección de funciones que


amplía la capacidad de computación numérica del programa Matlab. Este conjunto de
funciones logra minimizar o maximizar funciones no lineales generales. Es decir, al usar
la palabra ‘optimización’ en Matlab nos referimos al proceso de búsqueda del mínimo o
máximo de una función, denominada comúnmente ‘función objetivo’ en las funciones
de optimización que incluye el Toolbox de Optimización de Matlab.

La capacidad y el alcance del Toolbox de Optimización de Matlab se puede ampliar


combinando éste con otros toolboxes, o creando nuestros propios ficheros.m. En las
tablas 1 y 2, se muestra una breve descripción de cada una de las funciones disponibles
en el toolbox, divididas en tres secciones, según qué problema resuelven, minimización
de funciones, resolución de ecuaciones y mínimos cuadrados (ajuste de curvas).

Tabla 1 (funciones de minimización)


Tabla 2 (funciones de minimización - parte 2)

GLOSARIO DE COMANDOS
Algoritmo fminsearch

Este algoritmo usa un simplex de n + 1 puntos para n vectores tridimensionales x . El


algoritmo primero hace un símplex alrededor de la suposición inicial x 0 agregando un
5% de cada componente x 0 ( i ) a x 0 , y usando estos n vectores como elementos del
símplex además de x 0 . (Utiliza 0.00025 como componente i si x 0 ( i ) = 0 ). Luego, el
algoritmo modifica el símplex repetidamente de acuerdo con el siguiente
procedimiento.

Nota

Las palabras clave para la fminsearch iterativa fminsearch aparecen en negrita después
de la descripción del paso.

1. Deje x ( i ) denotar la lista de puntos en el simplex actual, i = 1, ..., n +1.


2. Ordena los puntos en el símplex desde el valor de función más bajo f ( x (1)) hasta
el más alto f ( x ( n +1)). En cada paso de la iteración, el algoritmo descarta el
peor punto actual x ( n +1) y acepta otro punto en el símplex. [O, en el caso del
paso 7 a continuación, cambia todos los n puntos con valores
superiores a f ( x (1))].
3. Genera el punto reflejado

r = 2 m - x ( n +1),

dónde

m = Σ x ( i ) / n , i = 1 ... n ,

y calcule f ( r ).

4. Si f ( x (1)) ≤ f ( r ) < f ( x ( n )), acepte r y termine esta iteración. Reflejar


5. Si f ( r ) < f ( x (1)), calcule el punto de expansión

s = m + 2 ( m - x ( n +1)),

y calcule f ( s ).

a. Si f ( s ) < f ( r ), acepta sy termina la iteración. Expandir


b. De lo contrario, acepte r y termine la iteración. Reflejar
6. Calcule los n puntos

v ( i ) = x (1) + ( x ( i ) - x (1)) / 2

y calcule f ( v ( i )), i = 2, ..., n +1. El símplex en la siguiente iteración es x (1), v (2),


..., v ( n +1). Encogimiento

La siguiente figura muestra los puntos que fminsearch puede calcular en el


procedimiento, junto con cada posible nuevo símplex. El símplex original tiene un
contorno audaz. Las iteraciones continúan hasta que cumplen un criterio de detención.
nlinfit

Sintaxis
beta = nlinfit(X,Y,modelfun,beta0)
beta = nlinfit(X,Y,modelfun,beta0,options)
beta = nlinfit( ___ ,Name,Value)
[beta,R,J,CovB,MSE,ErrorModelInfo] = nlinfit( ___ )
Descripción

ejemplo

beta = nlinfit( X , Y , modelfun , beta0 ) devuelve un vector de coeficientes estimados


para la regresión no lineal de las respuestas en Y sobre los predictores en X utilizando el
modelo especificado por modelfun . Los coeficientes se estiman utilizando la estimación
iterativa de mínimos cuadrados, con valores iniciales especificados por beta0 .

ejemplo

beta = nlinfit( X , Y , modelfun , beta0 , options ) ajusta a la regresión no lineal usando


los parámetros de control del algoritmo en las options estructura. Puede devolver
cualquiera de los argumentos de salida en las sintaxis previas.

ejemplo

beta = nlinfit( ___ , Name,Value ) usa opciones adicionales especificadas por uno o más
argumentos de pares nombre-valor. Por ejemplo, puede especificar ponderaciones de
observación o un modelo de error no constante. Puede usar cualquiera de los
argumentos de entrada en las sintaxis previas.

ejemplo

[ beta , R , J , CovB , MSE , ErrorModelInfo ] = nlinfit( ___ ) devuelve además los residuos,
R , el jacobiano de modelfun , J , la matriz de varianza-covarianza estimada para los
coeficientes estimados, CovB , una estimación de la varianza del término de error, MSE
, y una estructura que contiene detalles sobre el modelo de error, ErrorModelInfo .

Ejemplos

desplegar todo

Modelo de regresión no lineal usando opciones predeterminadas

Cargar datos de muestra.

S = carga ( 'reacción' );
X = Reactivos en cadena;
y = S.rate;
beta0 = S.beta;

Ajuste el modelo de Hougen-Watson a los datos de velocidad utilizando los valores


iniciales en beta0 .

beta = nlinfit (X, y, @ hougen, beta0)


beta =

1.2526
0.0628
0.0400
0.1124
1.1914

Regresión no lineal usando opciones robustas

Generar datos de muestra del modelo de regresión no lineal


, dónde , y son coeficientes, y el término de error se distribuye normalmente con la
media 0 y la desviación estándar 0.1.

modelfun = @ (b, x) (b (1) + b (2) * exp (-b (3) * x));

rng ( 'predeterminado' ) % para reproducibilidad


b = [1; 3; 2];
x = exprnd (2,100,1);
y = modelfun (b, x) + normrnd (0,0.1,100,1);

Establezca opciones de ajuste robustas.

opts = statset ( 'nlinfit' );


opts.RobustWgtFun = 'bisquare' ;

Ajuste el modelo no lineal utilizando las opciones de ajuste robusto.

beta0 = [2; 2; 2];


beta = nlinfit (x, y, modelfun, beta0, opts)
beta =

1.0041
3.0997
2.1483
mod Resto después de la división (operación de módulo)

Sintaxis
b = mod(a,m)
Descripción

ejemplo

b = mod( a , m ) devuelve el resto después de la división de a por m , donde a es el


dividendo y m es el divisor. Esta función a menudo se denomina operación módulo, que
se puede expresar como b = a - m.*floor(a./m) . La función de mod sigue la convención
de que mod(a,0) devuelve a .

Ejemplos

desplegar todo

El resto después de la división de Scalar

Compute 23 módulo 5.

b = mod (23,5)
b=3
El resto después de la división del vector

Encuentra el resto después de la división para un vector de enteros y el divisor 3 .

a = 1: 5;
m = 3;
b = mod (a, m)
b=

12012

Resto después de la división de valores positivos y negativos

Encuentra el resto después de la división para un conjunto de enteros, incluidos los


valores positivos y negativos. Tenga en cuenta que los resultados distintos de cero
siempre son positivos si el divisor es positivo.

a = [-4 -1 7 9];
m = 3;
b = mod (a, m)
b=

2210
Resto después de la división para el divisor negativo

Encuentra el resto después de la división por un divisor negativo para


un conjunto de enteros, incluidos los valores positivos y negativos. Tenga en cuenta que
los resultados distintos de cero siempre son negativos si el divisor es negativo.

a = [-4 -1 7 9];
m = -3;
b = mod (a, m)
b=

-1 -1 -2 0

Resto después de la división de valores de punto flotante

Encuentra el resto después de la división para varios ángulos usando un módulo de 2*pi
. Tenga en cuenta que mod intenta compensar los efectos de redondeo de coma flotante
para producir resultados enteros exactos cuando sea posible.

theta = [0.0 3.5 5.9 6.2 9.0 4 * pi];


m = 2 * pi;
b = mod (theta, m)
b=

0 3.5000 5.9000 6.2000 2.7168 0

Dividendo, especificado como un escalar, vector, matriz o matriz multidimensional. a


debe ser una matriz de valor real de cualquier tipo numérico. Las entradas numéricas a
y m deben ser del mismo tamaño o tener tamaños que sean compatibles (por ejemplo,
a es una matriz M by- N y m es un vector escalar o 1 -por- N fila). Para obtener más
información, vea Tamaños de matriz compatibles para operaciones básicas .

Si a y m son matrices de duración, entonces deben ser del mismo tamaño a menos que
uno sea escalar. Si una entrada es una matriz de duración, la otra entrada puede ser una
matriz de duración o una matriz numérica. En este contexto, mod trata los valores
numéricos como un número de días estándar de 24 horas.

Si una entrada tiene un tipo de datos entero, entonces la otra entrada debe ser del
mismo tipo de datos enteros o ser un double escalar.

Divisor, especificado como un escalar, vector, matriz o matriz multidimensional. m debe


ser una matriz de valor real de cualquier tipo numérico. Las entradas numéricas a y m
deben ser del mismo tamaño o tener tamaños que sean compatibles (por ejemplo, a es
una matriz M by- N y m es un vector escalar o 1 -por- N fila). Para obtener más
información, vea Tamaños de matriz compatibles para operaciones básicas .
Diferencias entre mod y rem

 El concepto de resto después de la división no está definido de


manera única, y las dos funciones mod y rem calculan una variación diferente.
La función mod produce un resultado que es cero o tiene el mismo signo que el
divisor. La función rem produce un resultado que es cero o tiene el mismo signo
que el dividendo.
 Otra diferencia es la convención cuando el divisor es cero. La función mod sigue
la convención de que mod(a,0) devuelve a , mientras que la función rem sigue la
convención de que rem(a,0) devuelve NaN .
 Ambas variantes tienen sus usos. Por ejemplo, en el procesamiento de señales,
la función mod es útil en el contexto de señales periódicas porque su salida es
periódica (con un período igual al divisor).
 Relaciones de congruencia
 La función mod es útil para las relaciones de congruencia: a y b son congruentes
(mod m) si y solo si mod(a,m) == mod(b,m) . Por ejemplo, 23 y 13 son
congruentes (mod 5).

fminunc Minimización sin restricciones

Considere el problema de encontrar un conjunto de valores [ x 1 , x 2 ] que resuelva

Para resolver este problema bidimensional, escriba un archivo que devuelva el valor de
la función. Luego, invoque la rutina de minimización sin restricciones fminunc .

Paso 1: Escribe un archivo objfun.m.

Este código se envía con la caja de herramientas. Para ver, ingresa type objfun :

función f = objfun (x)


f = exp (x (1)) * (4 * x (1) ^ 2 + 2 * x (2) ^ 2 + 4 * x (1) * x (2) + 2 * x (2) + 1) ;
Paso 2: establece las opciones.

Establezca opciones para usar el algoritmo 'quasi-newton' . Establezca las opciones


porque el algoritmo 'trust-region' requiere que la función objetivo incluya un
degradado. Si no establece las opciones, entonces, dependiendo de su versión de
MATLAB ® , fminunc puede emitir una advertencia.

options = optimoptions (@ fminunc, 'Algorithm', 'cuasi-newton');


Paso 3: Invoca fminunc usando las opciones.
x0 = [-1,1]; % De adivinar
[x, fval, exitflag, output] = fminunc (@ objfun, x0, opciones);
Esto produce el siguiente resultado: Optimización completada porque
el tamaño del gradiente es menor que el valor predeterminado de la
tolerancia de optimalidad. Vea los resultados, incluida la medida de
optimalidad de primer orden en la estructura de output .

x, fval, exitflag, output.firstorderopt

x=
0.5000 -1.0000
fval =
3.6609e-16
exitflag =
1
ans =
7.3704e-08

El exitflag indica si el algoritmo convergió. exitflag = 1 significa que se encontró un


mínimo local. Los significados de los indicadores de salida se dan en páginas de
referencia de función.

linprog
Resolver problemas de programación lineal

Descripción

x = linprog( f , A , b ) resuelve min f'*x tal que A*x ≤ b .

x = linprog( f , A , b , Aeq , beq ) incluye restricciones de igualdad Aeq*x = beq . Establezca


A = [] y b = [] si no existen desigualdades.

x = linprog( f , A , b , Aeq , beq , lb , ub ) define un conjunto de límites inferior y superior


en las variables de diseño, x , de modo que la solución siempre esté en el rango lb ≤ x ≤
ub . Establezca Aeq = [] y beq = [] si no hay igualdades.

x = linprog( f , A , b , Aeq , beq , lb , ub , options ) minimiza con las opciones de


optimización especificadas por las options . Use optimoptions para establecer estas
opciones.

x = linprog( problem ) encuentra el mínimo para el problem , donde el problem es una


estructura descrita en Argumentos de entrada .
Cree la estructura del problem exportando un problema desde la
aplicación de optimización, como se describe en Exportar su trabajo .
Puede importar una estructura de problem desde un archivo MPS
usando mpsread .

[ x , fval ] = linprog( ___ ) , para cualquier argumento de entrada, devuelve el valor de la


función objetivo fun en la solución x : fval = f'*x .

quadprog

Resuelva el problema de programación cuadrático

donde H , A y Aeq son matrices, yf , b , beq , lb , ub yx son vectores.

Sintaxis

 x = quadprog (H, f, A, b)
 x = quadprog (H, f, A, b, Aeq, beq)
 x = quadprog (H, f, A, b, Aeq, beq, lb, ub)
 x = quadprog (H, f, A, b, Aeq, beq, lb, ub, x0)
 x = quadprog (H, f, A, b, Aeq, beq, lb, ub, x0, opciones)
 x = quadprog (H, f, A, b, Aeq, beq, lb, ub, x0, opciones, p1, p2, ...)
 [x, fval] = quadprog (...)
 [x, fval, exitflag] = quadprog (...)
 [x, fval, exitflag, output] = quadprog (...)
 [x, fval, exitflag, output, lambda] = quadprog (...)

Descripción

x = quadprog(H,f,A,b) devuelve un vector x que minimiza 1/2*x'*H*x + f'*x sujeto a


A*x <= b .

x = quadprog(H,f,A,b,Aeq,beq) resuelve el problema anterior al tiempo que cumple las


restricciones de igualdad Aeq*x = beq .

x = quadprog(H,f,A,b,Aeq,beq,lb,ub) define un conjunto de límites inferior y superior


en las variables de diseño, x , de modo que la solución está en el rango lb <= x <= ub .

x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0) establece el punto de partida a x0 .


x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options) se minimiza con los
parámetros de optimización especificados en las options estructura.
Use optimset para establecer estos parámetros.

x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options,p1,p2,...) pasa los parámetros p1,p2,... a


la función de multiplicación de Hesse, si existe, especificada usando el parámetro
HessMult en la estructura de options .

[x,fval] = quadprog(...) devuelve el valor de la función objetivo en x: fval = 0.5*x'*H*x +


f'*x .

[x,fval,exitflag] = quadprog(...) devuelve un valor exitflag salida que describe la


condición de salida de quadprog .

[x,fval,exitflag,output] = quadprog(...) devuelve un output estructura que contiene


información sobre la optimización.

[x,fval,exitflag,output,lambda] = quadprog(...) devuelve una estructura lambda cuyos


campos contienen los multiplicadores de Lagrange en la solución x .

Argumentos de entrada

Argumentos de funciones contiene descripciones generales de argumentos pasados a


quadprog . Las opciones proporcionan detalles específicos de la función para los
parámetros de options .

Argumentos de salida

Argumentos de función contiene descripciones generales de los argumentos devueltos


por quadprog . Esta sección proporciona detalles específicos de función para exitflag ,
lambda y output :

exitflag Describe la condición de salida:


>0 La función convergió a una solución x .
0 Se superó el número máximo de evaluaciones de funciones
o iteraciones.
<0 La función no convergió a una solución.
lambda Estructura que contiene los multiplicadores de Lagrange en la solución x
(separados por tipo de restricción). Los campos son:
lower Para los límites inferiores lb
upper Para los límites superiores ub
ineqlin Para las desigualdades lineales
eqlin Para las igualdades lineales
output Estructura que contiene información sobre la optimización. Los campos
son:
iterations Número de iteraciones tomadas
algorithm Algoritmo utilizado
cgiterations Número de iteraciones de PCG (solo algoritmo de gran
escala)
firstorderopt Medida de optimalidad de primer orden (solo algoritmo a
gran escala)
Para problemas restringidos limitados a gran escala, la
optimalidad de primer orden es la norma de infinito de v.*g
, donde v se define como en Restricciones de caja , g es el
gradiente.
Para problemas a gran escala con igualdades lineales
solamente, la optimalidad de primer orden es la norma de 2
del residual escalado ( z = M\r ) del cálculo del gradiente de
conjugado precondicionado reducido. Consulte Algoritmo
en "Degradados de conjugado preacondicionados" y
también Problemas lineales limitados .

Opciones

Opciones de parámetros de optimización Use optimset para establecer o cambiar los


valores de estos parámetros. Algunos parámetros se aplican a todos los algoritmos,
algunos solo son relevantes cuando se usa el algoritmo de gran escala, y otros solo son
relevantes cuando se usa el algoritmo de escala mediana. Ver los parámetros de
optimización para información detallada.

El parámetro para establecer una preferencia de algoritmo:

LargeScale Use un algoritmo de gran escala si es posible cuando se configura en 'on'


. Use un algoritmo de escala mediana cuando se establece en 'off' .
'on' es solo una preferencia . Si el problema tiene solo límites superiores
e inferiores, es decir, no se especifican desigualdades o igualdades
lineales, el algoritmo predeterminado es el método a gran escala. O
bien, si el problema dado a quadprog tiene solo quadprog lineales, es
decir, no se especifican límites superiores e inferiores o desigualdades
lineales, y el número de igualdades no es mayor que la longitud de x , el
algoritmo predeterminado es el método a gran escala. De lo contrario,
se utiliza el algoritmo de escala mediana

fmincon

Encuentra el mínimo de un problema especificado por

b y beq son vectores, A y Aeq son matrices, c ( x ) y ceq ( x ) son funciones que devuelven
vectores, yf ( x ) es una función que devuelve un escalar. f ( x ), c ( x ) y ceq ( x ) pueden
ser funciones no lineales.

x , lb y ub se pueden pasar como vectores o matrices; ver Matrix Arguments .

Sintaxis
x = fmincon(fun,x0,A,b)

x = fmincon(fun,x0,A,b,Aeq,beq)

x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub)

x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)

x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)

x = fmincon(problem)

[x,fval] = fmincon( ___ )

[x,fval,exitflag,output] = fmincon( ___ )

[x,fval,exitflag,output,lambda,grad,hessian] = fmincon( ___ )

ejemplo

x = fmincon( fun , x0 , A , b ) comienza en x0 e intenta encontrar un minimizador x de la


función descrita en fun sujeta a las desigualdades lineales A*x ≤ b . x0 puede ser un
escalar, vector o matriz.

Nota

Pasar parámetros adicionales explica cómo pasar parámetros adicionales a la función


objetivo y funciones de restricción no lineales, si es necesario.

ejemplo
x = fmincon( fun , x0 , A , b , Aeq , beq ) minimiza la fun sujeta a las
igualdades lineales Aeq*x = beq y A*x ≤ b . Si no existen desigualdades,
establezca A = [] y b = [] .

ejemplo

x = fmincon( fun , x0 , A , b , Aeq , beq , lb , ub ) define un conjunto de límites inferior y


superior en las variables de diseño en x , de modo que la solución siempre está en el
rango lb ≤ x ≤ ub . Si no existen Aeq = [] , configure Aeq = [] y beq = [] . Si x(i) no está
limitado a continuación, establezca lb(i) = -Inf , y si x(i) no está limitado anteriormente,
configure ub(i) = Inf .

Nota

Si los límites de entrada especificados para un problema son inconsistentes, fmincon


arroja un error. En este caso, la salida x es x0 y fval es [] .

Para el algoritmo predeterminado de 'interior-point' , fmincon establece componentes


de x0 que violan los límites lb ≤ x ≤ ub , o son iguales a un límite, al interior de la región
encuadernada. Para el algoritmo 'trust-region-reflective' , fmincon establece la violación
de componentes en el interior de la región encuadernada. Para otros algoritmos,
fmincon establece la violación de componentes al límite más cercano. Los componentes
que respetan los límites no se cambian. Ver Iteraciones puede violar restricciones .

ejemplo

x = fmincon( fun , x0 , A , b , Aeq , beq , lb , ub , nonlcon ) somete la minimización a las


desigualdades no lineales c(x) o igualdades ceq(x) definidas en nonlcon . fmincon
optimiza tal que c(x) ≤ 0 y ceq(x) = 0 . Si no existen límites, establezca lb = [] y / o ub = []
.

ejemplo

x = fmincon( fun , x0 , A , b , Aeq , beq , lb , ub , nonlcon , options ) minimiza con las


opciones de optimización especificadas en las options . Use optimoptions para
establecer estas opciones. Si no hay desigualdades no lineales o restricciones de
igualdad, establezca nonlcon = [] .

ejemplo

x = fmincon( problem ) encuentra el mínimo para el problem , donde el problem es una


estructura descrita en Argumentos de entrada . Cree la estructura del problem
exportando un problema desde la aplicación de optimización, como se
describe en Exportar su trabajo .

ejemplo

[ x , fval ] = fmincon( ___ ) , para cualquier sintaxis, devuelve el valor de la función


objetivo fun en la solución x .

ejemplo

[ x , fval , exitflag , output ] = fmincon( ___ ) devuelve además un valor exitflag salida que
describe la condición de salida de fmincon , y una output estructura con información
sobre el proceso de optimización.

ejemplo

[ x , fval , exitflag , output , lambda , grad , hessian ] = fmincon( ___ ) también devuelve:

 lambda - Estructura con campos que contienen los multiplicadores de Lagrange


en la solución x .
 grad - Gradiente de fun en la solución x .
 hessian - Hessian de la fun en la solución x . Ver fmincon Hessian .

Ejemplos

desplegar todo

Restricción de desigualdad lineal

Encuentre el valor mínimo de la función de Rosenbrock cuando hay una restricción lineal
de desigualdad.

Configure la función objetivo como la función de Rosenbrock. Es bien sabido que la


función de Rosenbrock es difícil de minimizar. Tiene su valor objetivo mínimo de 0 en el
punto (1,1). Para obtener más información, vea Resolver un problema no lineal
restringido .

fun = @ (x) 100 * (x (2) -x (1) ^ 2) ^ 2 + (1-x (1)) ^ 2;

Encuentre el valor mínimo comenzando desde el punto [-1,2] , restringido para tener
. Exprese esta restricción en la forma Ax <= b tomando A = [1,2] y b = 1
. Tenga en cuenta que esta restricción significa que la solución no estará en la solución
no restringida (1,1), porque en ese punto .
x0 = [-1,2];
A = [1,2];
b = 1;
x = fmincon (diversión, x0, A, b)
Se encontró un mínimo local que satisface las restricciones.

La optimización se completó porque la función objetivo no es decreciente en


direcciones factibles, dentro del valor predeterminado de la tolerancia de optimalidad,
y las restricciones se satisfacen dentro del valor predeterminado de la tolerancia de
restricción.
x=

0.5022 0.2489

fminbnd

Minimice una función de una variable en un intervalo fijo

Sintaxis

 x = fminbnd (diversión, x1, x2)


 x = fminbnd (diversión, x1, x2, opciones)
 [x, fval] = fminbnd (...)
 [x, fval, exitflag] = fminbnd (...)
 [x, fval, exitflag, output] = fminbnd (...)

Descripción

fminbnd encuentra el mínimo de una función de una variable dentro de un intervalo fijo.

x = fminbnd(fun,x1,x2) devuelve un valor x que es un minimizador local de la función


que se describe en fun en el intervalo x1 <= x <= x2 . fun es un mango de función.
Consulte los identificadores de funciones en la documentación de programación de
MATLAB para obtener más información.

Funciones de parametrización Llamadas por Funciones de función, en la documentación


matemática MATLAB, explica cómo proporcionar parámetros adicionales a la fun la
función, si es necesario.
x = fminbnd(fun,x1,x2,options) se minimiza con los parámetros de
optimización especificados en las options estructura. Puede definir
estos parámetros usando la función optimset . fminbnd usa estos
campos de estructura de options :

Display Nivel de visualización 'off' no muestra salida; 'iter' muestra salida en


cada iteración; 'final' muestra solo el resultado final; 'notify'
(predeterminado) muestra la salida solo si la función no converge.

FunValCheck Verifique si los valores de la función objetivo son válidos. 'on' muestra
una advertencia cuando la función objetivo devuelve un valor que es
complex o NaN . 'off' no muestra ninguna advertencia.

MaxFunEvals Número máximo de evaluaciones de funciones permitidas.

MaxIter Número máximo de iteraciones permitidas.

OutputFcn Especifique una función definida por el usuario que la función de


optimización llama en cada iteración.

TolX Tolerancia de terminación en x .

[x,fval] = fminbnd(...) devuelve el valor de la función objetivo calculada en fun en x .

[x,fval,exitflag] = fminbnd(...) devuelve un valor exitflag salida que describe la condición


de salida de fminbnd :

1 fminbnd convergió a una solución x basada en options.TolX.

0 Se alcanzó el número máximo de evaluaciones de funciones o iteraciones.

-1 Algoritmo fue terminado por la función de salida.

-2 Los límites son inconsistentes ( ax > bx ).

[x,fval,exitflag,output] = fminbnd(...) devuelve un output estructura que contiene


información sobre la optimización:

output.algorithm Algoritmo utilizado

output.funcCount Número de evaluaciones de funciones


output.iterations Cantidad de iteraciones

output.message Mensaje de salida

fseminf

Encuentra el mínimo de un problema especificado por

b y beq son vectores, A y Aeq son matrices, c ( x ), ceq ( x ) y K i ( x, w i ) son funciones


que devuelven vectores, y f ( x ) es una función que devuelve un escalar. f ( x ), c ( x ) y
ceq ( x ) pueden ser funciones no lineales. Los vectores (o matrices) K i ( x , w i ) ≤ 0 son
funciones continuas de ambos x y un conjunto adicional de variables w 1 , w 2 , ..., w n .
Las variables w 1 , w 2 , ..., w n son vectores de, como máximo, longitud dos.

x , lb y ub se pueden pasar como vectores o matrices; ver Matrix Arguments .

Sintaxis

x = fseminf(fun,x0,ntheta,seminfcon)
x = fseminf(fun,x0,ntheta,seminfcon,A,b)
x = fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq)
x = fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq,lb,ub)
x = fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq,lb,ub,options)
x = fseminf(problem)
[x,fval] = fseminf(...)
[x,fval,exitflag] = fseminf(...)
[x,fval,exitflag,output] = fseminf(...)
[x,fval,exitflag,output,lambda] = fseminf(...)

Descripción

fseminf encuentra un mínimo de una función escalar fseminf limitada de varias


variables, comenzando en una estimación inicial. El objetivo es minimizar f ( x ) por lo
que las restricciones se mantienen para todos los valores posibles de w i ∈ ℜ 1 (o w i ∈
ℜ 2 ). Debido a que es imposible calcular todos los valores posibles de K i ( x, w i ) , se
debe elegir una región para w i sobre la que calcular un conjunto de valores
adecuadamente muestreados.
EJERCICIO RESUELTO EN CLASES DE MINIMIZACION Y AJUSTE
DE DATOR

(LODOS ACTIVADOS)

Se llama a la función a minimizar PH_ajusmin (tratamiento de pH en organismos


biológicos)

Se entregan valores iniciales con optimiset, consiste en ser una función avanzada,
ajuste de datos en el proceso de lodos activados, la tasa de crecimiento de los lodos en
función del Ph teniendo datos experimentales

Las reacciones de biodegradación.-

Efecto del pH en la velocidad especifica de generar lodos activados se representa en


función a una campana

1
𝜇(𝑝𝐻) =
1+ 10(𝑝𝑘1−𝑝𝐻) + 10(𝑝𝐻−𝑝𝑘2)

Las constantes pk1 y pk2 se calcula por ajuste de datos en


𝜇(𝑝𝐻) 𝑣𝑒𝑙𝑜𝑐𝑖𝑑𝑎𝑑 𝑒𝑠𝑝𝑒𝑐𝑖𝑓𝑖𝑐𝑎 𝑑𝑒 𝑙𝑎 𝑟𝑒𝑎𝑐𝑐𝑖𝑜𝑛 tiene el valor de 0.5 en la función
PH_ajusmin.M se define calor, parámetro a minimizar, en este caso minimizar la suma
de los cuadrados de desviaciones de los datos experimentales a las calculadas

Función

Imagen 1
Script

Imagen 2

Grafica

Imagen 3
COMANDOS
GLOBAL

ejemplo

global var1 ... varN declara las variables var1 ... varN como globales en el alcance.

Por lo general, cada función de MATLAB ® tiene sus propias variables locales, que son
independientes de las de otras funciones y de las del espacio de trabajo base. Sin
embargo, si varias funciones declaran un nombre de variable particular como global ,
entonces todas comparten una sola copia de esa variable. Cualquier cambio de valor a
esa variable, en cualquier función, es visible para todas las funciones que lo declaran
como global.

Si la variable global no existe la primera vez que emite la declaración global , se inicializa
en una matriz 0x0 vacía.

Si ya existe una variable con el mismo nombre que la variable global en el espacio de
trabajo actual, MATLAB emite una advertencia y cambia el valor de esa variable y su
alcance para que coincida con la variable global.

Ejemplos

desplegar todo

Compartir la variable global entre funciones

Cree una función en su carpeta de trabajo actual que establece el valor de una variable
global.

función setGlobalx (val)


global x
x = val;

Cree una función en su carpeta de trabajo actual que devuelve el valor de una variable
global. Estas dos funciones tienen espacios de trabajo de funciones separados, pero
ambos pueden acceder a la variable global.

función r = getGlobalx
global x
r = x;

Establezca el valor de la variable global, x , y obténgalo de un espacio


de trabajo diferente.

setGlobalx (1138)
r = getGlobalx
r=

1138
Compartir la variable global entre la función y la línea de comando

Asigne un valor a la variable global utilizando la función que definió en el ejemplo


anterior.

borrar todo
setGlobalx (42)

Muestra el valor de la variable global, x . Aunque la variable es global, no se puede


acceder a ella desde la línea de comando.

X
Función no definida o variable 'x'.

Declara x como una variable global en la línea de comando y muestra su valor.

global x
X
x=

42

Cambie el valor de x utilice la función que definió en el ejemplo anterior para devolver
el valor global desde un espacio de trabajo diferente.

x = 1701;
r = getGlobalx
r=

1701
Consejos

 Para borrar una variable global de todos los espacios de trabajo, use clear global
variable clear global .
 Para borrar una variable global del espacio de trabajo actual pero no de otras
áreas de trabajo, use la variable clear .
MUC.-

Descripción

out = compand(in,param,v) implementa un compresor de ley μ para el vector de entrada


in . Mu especifica μ, y v es la magnitud máxima de la señal de entrada. tiene las mismas
dimensiones y la magnitud máxima que in .

out = compand(in,Mu,v,' mu/compressor ') es igual a la sintaxis anterior.

out = compand(in,Mu,v,' mu/expander ') implementa un expansor de ley μ para el


vector de entrada in . Mu especifica μ y v es la magnitud máxima de la señal de entrada.
tiene las mismas dimensiones y la magnitud máxima que in .

out = compand(in,A,v,' A/compressor ') implementa un compresor de ley A para el


vector de entrada in . El escalar A es el parámetro de ley A, y v es la magnitud máxima
de la señal de entrada. out es un vector de la misma longitud y magnitud máxima que in
.

out = compand(in,A,v,' A/expander ') implementa un expansor de ley A para el vector


de entrada in . El escalar A es el parámetro de ley A, y v es la magnitud máxima de la
señal de entrada. out es un vector de la misma longitud y magnitud máxima que in .

Nota

Los parámetros predominantes usados en la práctica son μ = 255 y A = 87.6.

Ejemplos
Compresión y expansión μ-Law

Genera una secuencia de datos.

datos = 2: 2: 12;

Comprima la secuencia de entrada usando un compander μ-law. El valor típico para μ es


255. Los datos oscilan entre 8.1 y 12 en lugar de entre 2 y 12.

comprimido = compand (datos, 255, max (datos), 'mu / compressor' )


comprimido =

8.1644 9.6394 10.5084 11.1268 11.6071 12.0000


Expande la señal comprimida. La secuencia expandida es casi idéntica
a la original.

expandido = compand (comprimido, 255, max (datos), 'mu / expander' )


expandido =

2.0000 4.0000 6.0000 8.0000 10.0000 12.0000

Compresión y expansión A-Law

Genera una secuencia de datos.

datos = 1: 5;

Comprima la secuencia de entrada usando un compresor de ley A. El valor típico para A


es 87.5. Los datos oscilan entre 3.5 y 5 en lugar de entre 1 y 5.

comprimido = compand (datos, 87.6, max (datos), 'a / compressor' )


comprimido =

3.5296 4.1629 4.5333 4.7961 5.0000

Expande la señal comprimida. La secuencia expandida es casi idéntica a la original.

expandido = compand (comprimido, 87.6, max (datos), 'a / expansor' )


expandido =

1.0000 2.0000 3.0000 4.0000 5.0000

Algoritmos

Para una señal dada x , la salida del compresor de ley μ es

donde V es el valor máximo de la señal x , μ es el parámetro μ-ley de la compañía, log es


el logaritmo natural, y sgn es la función signum
NUM2STR.-

Descripción

s = num2str( A ) convierte una matriz numérica en una matriz de caracteres que representa
los números. El formato de salida depende de las magnitudes de los valores originales.
num2str es útil para etiquetar y titular parcelas con valores numéricos.

devuelve una matriz de caracteres que representa los números


s = num2str( A , precision )
con la cantidad máxima de dígitos significativos especificados por precision .

s = num2str( A , formatSpec ) aplica un formato especificado por formatSpec a todos los


elementos de A

Ejemplos

desplegar todo

Conversiones predeterminadas de valores de punto flotante

Convierta los valores de punto flotante devueltos por pi y eps a vectores de caracteres.

s = num2str (pi)
s=
'3.1416'
s = num2str (eps)
s=
'2.2204e-16'
Especificar precisión

Especifique la cantidad máxima de dígitos significativos para los valores de coma


flotante.

A = galería ( 'normaldata' , [2,2], 0);


s = num2str (A, 3)
s = matriz de caracteres 2x16
'-0.433 0.125'
'-1.67 0.288'

Especificar formato

Especifique el ancho, la precisión y otro formato para una matriz de valores de coma
flotante.

A = gallery ( 'uniformdata' , [2,3], 0) * 9999;


s = num2str (A, '% 10.5e \ n' )
s = matriz de caracteres 2x35
'9.50034e + 03 ...'
'2.31115e + 03 ...'

El formato '%10.5e' imprime cada valor en formato exponencial con cinco lugares
decimales, y '\n' imprime un nuevo carácter de línea.

PLOT

plot( X , Y ) crea un gráfico de línea bidimensional de los datos en Y versus los valores
correspondientes en X

 Si X e Y son ambos vectores, entonces deben tener la misma longitud. La función


de la plot traza Y contra X
 Si X e Y son ambas matrices, entonces deben tener el mismo tamaño. La función
de plot traza columnas de Y versus columnas de X
 Si uno de X o Y es un vector y el otro es una matriz, entonces la matriz debe tener
dimensiones tales que una de sus dimensiones sea igual a la longitud del vector.
Si el número de filas de la matriz es igual a la longitud del vector, entonces la
función de plot traza cada columna de matriz contra el vector. Si el número de
columnas de la matriz es igual a la longitud del vector, entonces la función traza
cada fila de la matriz frente al vector. Si la matriz es cuadrada, entonces la
función traza cada columna contra el vector.
 Si uno de X o Y es un escalar y el otro es escalar o un vector, entonces la función
de plot traza puntos discretos. Sin embargo, para ver los puntos, debe especificar
un símbolo de marcador, por ejemplo, plot(X,Y,'o') .

plot( X , Y , LineSpec ) establece el estilo de línea, el símbolo de marcador y el color.

ejemplo

plot( X1,Y1 ,..., Xn,Yn ) traza múltiples pares X , Y usando los mismos ejes para todas las
líneas.

ejemplo

plot( X1,Y1,LineSpec1 ,..., Xn,Yn,LineSpecn ) establece el estilo de línea, el tipo de


marcador y el color para cada línea. Puede mezclar trillizos X , Y , LineSpec con pares X ,
Y Por ejemplo, plot(X1,Y1,X2,Y2,LineSpec2,X3,Y3) .

ejemplo
plot( Y ) crea un gráfico de línea bidimensional de los datos en Y versus
el índice de cada valor.

 Si Y es un vector, entonces la escala del eje x varía de 1 a length(Y) .


 Si Y es una matriz, entonces la función de plot traza las columnas de Y versus su
número de fila. La escala del eje x varía de 1 a la cantidad de filas en Y
 Si Y es complejo, entonces la función de plot traza la parte imaginaria de Y versus
la parte real de Y , de modo que la plot(Y) es equivalente a la plot(real(Y),imag(Y))
.

plot( Y , LineSpec ) establece el estilo de línea, el símbolo de marcador y el color.

ejemplo

plot( ___ , Name,Value ) especifica las propiedades de línea usando uno o más
argumentos de Name,Value par de Name,Value . Para obtener una lista de propiedades,
vea Propiedades de línea . Utilice esta opción con cualquiera de las combinaciones de
argumentos de entrada en las sintaxis previas. La configuración del par nombre-valor se
aplica a todas las líneas trazadas.

ejemplo

plot( ax , ___ ) crea la línea en los ejes especificados por ax lugar de en los ejes actuales
( gca ). La opción ax puede preceder cualquiera de las combinaciones de argumentos de
entrada en las sintaxis previas.

ejemplo

h = plot( ___ ) devuelve un vector de columna de objetos de línea de gráfico. Use h para
modificar las propiedades de una línea de gráfico específica después de crearla. Para
obtener una lista de propiedades, vea Propiedades de línea .

Ejemplos

desplegar todo

Crear trazo de línea

Crea x como un vector de valores linealmente espaciados entre 0 y . Use un


incremento de entre los valores. Cree y como valores sinusoidales de x . Crea un
diagrama de línea de los datos.

x = 0: pi / 100: 2 * pi;
y = sin (x);
trama (x, y)

Trazar múltiples líneas

Defina x como 100 valores linealmente espaciados entre y . Defina y1 e y2 como


valores de seno y coseno de x . Crea un diagrama de líneas de ambos conjuntos de datos.

x = linspace (-2 * pi, 2 * pi);


y1 = sin (x);
y2 = cos (x);

figura
trama (x, y1, x, y2)
HOLD on - off

Descripción

hold on mantiene los gráficos en los ejes actuales para que los nuevos trazados añadidos
a los ejes no eliminen los trazados existentes. Las nuevas gráficas usan los siguientes
colores y estilos de línea en función de las propiedades ColorOrder y LineStyleOrder de
los ejes. MATLAB ® ajusta los límites de los ejes, las marcas de graduación y las etiquetas
de marcado para mostrar toda la gama de datos. Si los ejes no existen, entonces el

hold off establece el estado de espera en off para que los nuevos gráficos agregados a
los ejes limpien las gráficas existentes y restablezcan todas las propiedades de los ejes.
La siguiente gráfica agregada a los ejes usa el primer estilo de color y línea basado en las
propiedades ColorOrder y LineStyleOrder de los ejes. Esta opción es el comportamiento
predeterminado.

hold all es lo mismo que hold on . Esta sintaxis será eliminada en una versión futura. Use
hold on lugar.

hold alterna el estado de espera entre encendido y apagado.

hold( ax , ___ ) establece el estado de espera para los ejes especificados por ax lugar de
los ejes actuales. Especifique los ejes como el primer argumento de entrada para
cualquiera de las sintaxis previas. Use comillas simples alrededor de las entradas 'on' y
'off' , como hold(ax,'on') .

Ejemplos
Agregar trazado de línea a los ejes existentes

Crea un diagrama de líneas. Use hold on para agregar una segunda línea sin eliminar la
gráfica de línea existente. La nueva gráfica usa el siguiente color y estilo de línea en
función de las propiedades ColorOrder y LineStyleOrder de los ejes. Luego restablezca
el estado de espera a apagado.

x = linspace (-pi, pi);


y1 = sin (x);
trama (x, y1)

espera
y2 = cos (x);
trama (x, y2)
aguantar
Cuando el estado de retención está desactivado, las nuevas representaciones eliminan
las representaciones existentes. Las nuevas gráficas comienzan desde el comienzo de la
orden de color y el orden de estilo de línea.

y3 = sin (2 * x);
trama (x, y3)

Los ejes o el gráfico de destino se especifican como un objeto Axes , un objeto PolarAxes
o un objeto gráfico que tiene una propiedad GridVisible . Por ejemplo, puede agregar o
eliminar líneas de cuadrícula de un objeto HeatmapChart usando la función de grid .

Si no especifica el objetivo, entonces la función de grid afecta al objeto de gráficos


devuelto por el comando gca
INTERPRETACION DEL CODIGO

En la imagen 1 podemos ver los comentarios dados para el tipo de función que le vamos
a entregar a matlab, función llamada por el ajuste minimo en los datos experimentales
para el pH.

Se establece la función se utiliza el global con pH y mu que quiere decir velocidad de


reacción pero matlab lo reconoce como mu y el global nos permite que todas
comparten una sola copia de esa variable. Cualquier cambio de valor a esa variable, en
cualquier función, es visible para todas las funciones que lo declaran como global.

Las constante pk1 y pk2 se van a determinar por medio del grafico asignándoles
variables, se introduce el modelo matemático dado y la especificación dada para
calcular el calor que corresponde al duplo del producto de la globalización entre mu y
muc que seria los valores de 𝜇 ajustado y sin ajustar

En el script se llama a la función y realizamos un global, colocamos los datos


experimentales del pH y de 𝜇 (mu) para luego llamar a la función por medio de
fminsearch la cual nos permite ajustar y minimizar los datos, se grafica primeramente
los datos experimentales.

Se ingresa nuevos datos para pH llamándola pHc en vector con datos de 0:1:14

Se introduce el modelo matemáticos nuevamente con la misma varia de muc que es lo


mismo 𝜇 pero con otro nombre, graficamos los datos de pHc y muc

Para calcular pk1 y pk2 sera a partir de los valores de mu y su ajuste de datos por eso se
pone dos veces el modelo matemático uno para cada uno

Se realiza las debisas line y text utilizando num2str para los resultados de salida de pk1
y pk2 para que sean mas específicos ya que convierte una matriz numérica en una matriz
de caracteres que representa los números. El formato de salida depende de las
magnitudes de los valores originales. num2str es útil para etiquetar y titular parcelas con
valores numéricos.
CONCLUSION DE LA GRAFICA Y DE LA INVESTIGACION

la grafica es tipo campana lo cual me representa el crecimiento


biológico del microorganismo en los lodos activados.

A medida que el pH va aumentando la velocidad de reacción de los lodos activados va


incrementando hasta llegar a la cúspide donde es el punto óptimo y todos los
microrganismos han crecido son mucho más eficientes con un valor de 0.98 aprox.
para 𝜇(𝑝𝐻) con un pH de 6.

Los valores de la constantes nos permite dar un mejor resultado para encontrar el pH
que necesitan para que los lodos activados funcionen de la mejor manera minimizando
la suma de los cuadrados de las desviaciones

Algoritmos de minimización hay muchos, algunos son lineales y otros dependen de


derivadas parciales. Lo que proponemos es usar uno bastante robusto fminsearch, pero
que no es capaz de dar intervalos de confianza de los parámetros de ajuste

La importancia de los ajustes de datos experimentales viene siempre afectados de


errores de medida. Estos errores pueden ser sistemáticos o aleatorios. Los errores
sistemáticos son debidos al sistema o aparato de medida y generalmente sólo actúan en
una dirección

La utilización de fminsearch en la minimización y ajuste de datos es que nos permite


presentar el mínimo de una función de varias variables sin restricciones o sea sus
resultados son mas directos

Como datos generales también se puede resolver ajuste de datos utilizando Excel
usando solver el resultado sería el mismo

REFERENCIAS

González Puma, R. J., & Villacís Fiallos, C. A. (2012). Artículo Científico-Desarrollo e


implementación de controladores para la unidad DC Speed Control System mediante la
utilización de la herramienta RTW (Real-Time Workshop) de Matlab.
https://es.mathworks.com/?s_tid=gn_logo
https://es.mathworks.com/help/matlab/ref/plot.html
PH Control Using MATLAB, Mostefa Ghassoul, Additional information is
available at the end of the chapter, http://dx.doi.org/10.5772/46454

Ajuste no lineal de datos con Matlab, Larotonda, Laboratorio 4 - 2oC 2014

Capítulo 7 Aproximación de funciones y ajuste de datos experimentales

Potrebbero piacerti anche