Taller1 Simu Ajuste de Datos
Taller1 Simu Ajuste de Datos
Taller1 Simu Ajuste de Datos
SIMULACIÓN DE PROCESOS II
TALLER #1
MINIMIZACIÓN Y AJUSTE DE DATOS
2DO PARCIAL
ESTUDIANTE:
SARA VERA HERNÁNDEZ
CURSO:
7MO SEMESTRE PARALELO “7-1”
FECHA DE REALIZACION:
2 DE ENERO DEL 2018
INTRODUCCION
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
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:
Para usar esta función como ajuste no lineal, usar los datos de erf.mat.
Para usar esta función como ajuste no lineal, usar los datos de expdecay.mat.
GLOSARIO DE COMANDOS
Algoritmo fminsearch
Nota
Las palabras clave para la fminsearch iterativa fminsearch aparecen en negrita después
de la descripción del paso.
r = 2 m - x ( n +1),
dónde
m = Σ x ( i ) / n , i = 1 ... n ,
y calcule f ( r ).
s = m + 2 ( m - x ( n +1)),
y calcule f ( s ).
v ( i ) = x (1) + ( x ( i ) - x (1)) / 2
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
ejemplo
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
S = carga ( 'reacción' );
X = Reactivos en cadena;
y = S.rate;
beta0 = S.beta;
1.2526
0.0628
0.0400
0.1124
1.1914
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
Ejemplos
desplegar todo
Compute 23 módulo 5.
b = mod (23,5)
b=3
El resto después de la división del vector
a = 1: 5;
m = 3;
b = mod (a, m)
b=
12012
a = [-4 -1 7 9];
m = 3;
b = mod (a, m)
b=
2210
Resto después de la división para el divisor negativo
a = [-4 -1 7 9];
m = -3;
b = mod (a, m)
b=
-1 -1 -2 0
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.
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.
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 .
Este código se envía con la caja de herramientas. Para ver, ingresa type objfun :
x=
0.5000 -1.0000
fval =
3.6609e-16
exitflag =
1
ans =
7.3704e-08
linprog
Resolver problemas de programación lineal
Descripción
quadprog
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
Argumentos de entrada
Argumentos de salida
Opciones
fmincon
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.
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)
ejemplo
Nota
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
Nota
ejemplo
ejemplo
ejemplo
ejemplo
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:
Ejemplos
desplegar todo
Encuentre el valor mínimo de la función de Rosenbrock cuando hay una restricción lineal
de desigualdad.
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.
0.5022 0.2489
fminbnd
Sintaxis
Descripción
fminbnd encuentra el mínimo de una función de una variable dentro de un intervalo fijo.
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.
fseminf
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
(LODOS ACTIVADOS)
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
1
𝜇(𝑝𝐻) =
1+ 10(𝑝𝑘1−𝑝𝐻) + 10(𝑝𝐻−𝑝𝑘2)
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
Cree una función en su carpeta de trabajo actual que establece el valor de una variable
global.
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;
setGlobalx (1138)
r = getGlobalx
r=
1138
Compartir la variable global entre la función y la línea de comando
borrar todo
setGlobalx (42)
X
Función no definida o variable 'x'.
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
Nota
Ejemplos
Compresión y expansión μ-Law
datos = 2: 2: 12;
datos = 1: 5;
Algoritmos
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.
Ejemplos
desplegar todo
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
Especificar formato
Especifique el ancho, la precisión y otro formato para una matriz de valores de coma
flotante.
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
ejemplo
plot( X1,Y1 ,..., Xn,Yn ) traza múltiples pares X , Y usando los mismos ejes para todas las
líneas.
ejemplo
ejemplo
plot( Y ) crea un gráfico de línea bidimensional de los datos en Y versus
el índice de cada valor.
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
x = 0: pi / 100: 2 * pi;
y = sin (x);
trama (x, y)
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( 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.
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 .
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.
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
Se ingresa nuevos datos para pH llamándola pHc en vector con datos de 0:1:14
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
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
Como datos generales también se puede resolver ajuste de datos utilizando Excel
usando solver el resultado sería el mismo
REFERENCIAS