Saltar al contenido principal

# 2.2: Mintérminos y cálculos de MATLAB

$$\newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} }$$

$$\newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}}$$

$$\newcommand{\id}{\mathrm{id}}$$ $$\newcommand{\Span}{\mathrm{span}}$$

( \newcommand{\kernel}{\mathrm{null}\,}\) $$\newcommand{\range}{\mathrm{range}\,}$$

$$\newcommand{\RealPart}{\mathrm{Re}}$$ $$\newcommand{\ImaginaryPart}{\mathrm{Im}}$$

$$\newcommand{\Argument}{\mathrm{Arg}}$$ $$\newcommand{\norm}[1]{\| #1 \|}$$

$$\newcommand{\inner}[2]{\langle #1, #2 \rangle}$$

$$\newcommand{\Span}{\mathrm{span}}$$

$$\newcommand{\id}{\mathrm{id}}$$

$$\newcommand{\Span}{\mathrm{span}}$$

$$\newcommand{\kernel}{\mathrm{null}\,}$$

$$\newcommand{\range}{\mathrm{range}\,}$$

$$\newcommand{\RealPart}{\mathrm{Re}}$$

$$\newcommand{\ImaginaryPart}{\mathrm{Im}}$$

$$\newcommand{\Argument}{\mathrm{Arg}}$$

$$\newcommand{\norm}[1]{\| #1 \|}$$

$$\newcommand{\inner}[2]{\langle #1, #2 \rangle}$$

$$\newcommand{\Span}{\mathrm{span}}$$ $$\newcommand{\AA}{\unicode[.8,0]{x212B}}$$

$$\newcommand{\vectorA}[1]{\vec{#1}} % arrow$$

$$\newcommand{\vectorAt}[1]{\vec{\text{#1}}} % arrow$$

$$\newcommand{\vectorB}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} }$$

$$\newcommand{\vectorC}[1]{\textbf{#1}}$$

$$\newcommand{\vectorD}[1]{\overrightarrow{#1}}$$

$$\newcommand{\vectorDt}[1]{\overrightarrow{\text{#1}}}$$

$$\newcommand{\vectE}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash{\mathbf {#1}}}}$$

$$\newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} }$$

$$\newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}}$$

$$\newcommand{\avec}{\mathbf a}$$ $$\newcommand{\bvec}{\mathbf b}$$ $$\newcommand{\cvec}{\mathbf c}$$ $$\newcommand{\dvec}{\mathbf d}$$ $$\newcommand{\dtil}{\widetilde{\mathbf d}}$$ $$\newcommand{\evec}{\mathbf e}$$ $$\newcommand{\fvec}{\mathbf f}$$ $$\newcommand{\nvec}{\mathbf n}$$ $$\newcommand{\pvec}{\mathbf p}$$ $$\newcommand{\qvec}{\mathbf q}$$ $$\newcommand{\svec}{\mathbf s}$$ $$\newcommand{\tvec}{\mathbf t}$$ $$\newcommand{\uvec}{\mathbf u}$$ $$\newcommand{\vvec}{\mathbf v}$$ $$\newcommand{\wvec}{\mathbf w}$$ $$\newcommand{\xvec}{\mathbf x}$$ $$\newcommand{\yvec}{\mathbf y}$$ $$\newcommand{\zvec}{\mathbf z}$$ $$\newcommand{\rvec}{\mathbf r}$$ $$\newcommand{\mvec}{\mathbf m}$$ $$\newcommand{\zerovec}{\mathbf 0}$$ $$\newcommand{\onevec}{\mathbf 1}$$ $$\newcommand{\real}{\mathbb R}$$ $$\newcommand{\twovec}[2]{\left[\begin{array}{r}#1 \\ #2 \end{array}\right]}$$ $$\newcommand{\ctwovec}[2]{\left[\begin{array}{c}#1 \\ #2 \end{array}\right]}$$ $$\newcommand{\threevec}[3]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \end{array}\right]}$$ $$\newcommand{\cthreevec}[3]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \end{array}\right]}$$ $$\newcommand{\fourvec}[4]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}$$ $$\newcommand{\cfourvec}[4]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}$$ $$\newcommand{\fivevec}[5]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}$$ $$\newcommand{\cfivevec}[5]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}$$ $$\newcommand{\mattwo}[4]{\left[\begin{array}{rr}#1 \amp #2 \\ #3 \amp #4 \\ \end{array}\right]}$$ $$\newcommand{\laspan}[1]{\text{Span}\{#1\}}$$ $$\newcommand{\bcal}{\cal B}$$ $$\newcommand{\ccal}{\cal C}$$ $$\newcommand{\scal}{\cal S}$$ $$\newcommand{\wcal}{\cal W}$$ $$\newcommand{\ecal}{\cal E}$$ $$\newcommand{\coords}[2]{\left\{#1\right\}_{#2}}$$ $$\newcommand{\gray}[1]{\color{gray}{#1}}$$ $$\newcommand{\lgray}[1]{\color{lightgray}{#1}}$$ $$\newcommand{\rank}{\operatorname{rank}}$$ $$\newcommand{\row}{\text{Row}}$$ $$\newcommand{\col}{\text{Col}}$$ $$\renewcommand{\row}{\text{Row}}$$ $$\newcommand{\nul}{\text{Nul}}$$ $$\newcommand{\var}{\text{Var}}$$ $$\newcommand{\corr}{\text{corr}}$$ $$\newcommand{\len}[1]{\left|#1\right|}$$ $$\newcommand{\bbar}{\overline{\bvec}}$$ $$\newcommand{\bhat}{\widehat{\bvec}}$$ $$\newcommand{\bperp}{\bvec^\perp}$$ $$\newcommand{\xhat}{\widehat{\xvec}}$$ $$\newcommand{\vhat}{\widehat{\vvec}}$$ $$\newcommand{\uhat}{\widehat{\uvec}}$$ $$\newcommand{\what}{\widehat{\wvec}}$$ $$\newcommand{\Sighat}{\widehat{\Sigma}}$$ $$\newcommand{\lt}{<}$$ $$\newcommand{\gt}{>}$$ $$\newcommand{\amp}{&}$$ $$\definecolor{fillinmathshade}{gray}{0.9}$$

Los conceptos y procedimientos en esta unidad juegan un papel importante en muchos aspectos del análisis de temas de probabilidad y en el uso de MATLAB a lo largo de este trabajo.

## Vectores minterm y MATLAB

La formulación sistemática en el módulo anterior Mintérms muestra que cada combinación booleana, como unión de minterms, puede ser designada por un vector de coeficientes cero-uno. Un coeficiente uno en la posición$$i$$ th (numeración desde cero) indica la inclusión de minterm$$M_i$$ en la unión. Formulamos este patrón cuidadosamente a continuación y mostramos cómo se pueden utilizar las operaciones lógicas de MATLAB en la configuración y solución de problemas.

Supongamos que$$E$$ es una combinación booleana de$$A, B, C$$. Entonces, por la expansión minterm,

$$E = \bigvee_{J_E} M_i$$

donde$$M_i$$ es el$$i$$ th minterm y$$J_E$$ es el conjunto de índices para los$$M_i$$ incluidos en$$E$$. Por ejemplo, considere

$$E = A(B \cup C^c) \cup A^c (B \cup C^c)^c = M_1 \bigvee M_4 \bigvee M_6 \bigvee M_7 = M(1, 4, 6, 7)$$

$$F = A^c B^c \cup AC = M_0 \bigvee M_1 \bigvee M_5 \bigvee M_7 = M(0, 1, 5, 7)$$

Podemos designar cada conjunto por un patrón de ceros y unos ($$e_0, e_1, \cdot\cdot\cdot, e_7$$). Los que indican qué minterms están presentes en el conjunto. En el patrón para set$$E$$, minterm$$M_i$$ se incluye en$$E$$ iff$$e_i = 1$$. Esto es, en efecto, otro arreglo del mapa minterm. De esta forma, es conveniente ver el patrón como un vector minterm, que puede ser representado por una matriz de filas o un vector de fila [$$e_0, e_1, \cdot\cdot\cdot, e_7$$]. Nos resulta conveniente utilizar el mismo símbolo para el nombre del evento y para el vector minterm o matriz que lo representa. Así, para los ejemplos anteriores,

$$E \sim$$[0 1 0 0 1 0 1 1] y$$F \sim$$ [1 1 0 0 0 0 1 0 1]

Debe ser evidente que esta formalización puede extenderse a conjuntos generados por cualquier clase finita.

Vectores minterm para combinaciones booleanas

Si$$E$$ y$$F$$ son combinaciones de grupos$$n$$ generadores, entonces cada uno está representado por un vector minterm único de longitud$$2^n$$. En el tratamiento en el módulo Minterms, determinamos el vector minterm con la ayuda de un mapa minterm. Deseamos desarrollar una manera sistemática de determinar estos vectores.

Como primer paso, suponemos que tenemos vectores minterm para$$E$$ y$$F$$ y queremos obtener el vector minterm de combinaciones booleanas de estos.

1. La expansión minterm para$$E \cup F$$ tiene todos los minterms en cualquiera de los dos conjuntos. Esto significa que el elemento$$j$$ th del vector for$$E \cup F$$ es el máximo de los elementos$$j$$ th para los dos vectores.
2. La expansión minterm para solo$$E \cap F$$ tiene esos minterms en ambos conjuntos. Esto significa que el elemento$$j$$ th del vector for$$E \cap F$$ es el mínimo de los elementos$$j$$ th para los dos vectores.
3. La expansión minterm para solo$$E^c$$ tiene esos minterms no en la expansión para$$E$$. Esto significa que el vector para$$E^c$$ tiene ceros y unos intercambiados. El elemento$$j$$ th de$$E^c$$ es uno si el elemento correspondiente de$$E$$ es cero.

Ilustramos para el caso de las dos combinaciones$$E$$ y$$F$$ de tres grupos generadores, considerados anteriormente

$$E = A(B \cup C^c) \cup A^c (B \cup C^c)^c \cup A^c (B \cup C^c)^c \sim$$[0 1 0 0 1 0 1 1] y$$F = A^c B^c \cup AC \sim$$ [1 1 0 0 0 0 1 0 1]

Entonces

$$E \cup F \sim$$[1 1 0 0 1 1 1 1],$$E \cap F \sim$$ [0 1 0 0 0 0 0 1], y$$E^c \sim$$ [1 0 1 1 0 1 0 1 0 0 1 0 0 0]

Operaciones lógicas de MATLAB

Las operaciones lógicas de MATLAB en matrices cero-uno proporcionan una forma conveniente de manejar combinaciones booleanas de vectores minterm representados como matrices. Para dos matrices cero-uno$$E, F$$ del mismo tamaño

• $$E|F$$es la matriz obtenida tomando el elemento máximo en cada lugar.
• $$E\text{&}F$$es la matriz obtenida tomando el elemento mínimo en cada lugar.
• $$E^c$$es la matriz obtenida intercambiando uno y cero en cada lugar en$$E$$.

Por lo tanto, si$$E, F$$ son vectores minterm para conjuntos con el mismo nombre, entonces$$E|F$$ es el vector minterm para$$E \cup F$$,$$E\text{&}F$$ es el vector minterm para$$E \cap F$$, y$$E = 1 - E$$ es el vector minterm para$$E^c$$.

Esto sugiere un enfoque general para determinar vectores minterm para combinaciones booleanas.

Comience con vectores minterm para los grupos generadores.
Utilice las operaciones lógicas de MATLAB para obtener el vector minterm para cualquier combinación booleana.

Supongamos, por ejemplo, que la clase de grupos electrógenos es$$\{A, B, C\}$$. Entonces los vectores minterm para$$A$$$$B$$, y$$C$$, respectivamente, son

$$A =$$[0 0 0 0 1 1 1 1]$$B =$$ [0 0 1 1 0 0 1 1]$$C =$$ [0 1 0 1 0 1 0 1 0 1 0 1]

Si$$E = AB \cup C^c$$, entonces la combinación lógica$$E = (A \text{&} B)\ |\ C$$ de las matrices rinde$$E =$$ [1 0 1 0 1 0 1 1 1].

Implementación de MATLAB

Un paso clave en el procedimiento que acabamos de esbozar es obtener los vectores minterm para los elementos generadores$$\{A, B, C\}$$. Tenemos una función m para proporcionar tales vectores fundamentales. Por ejemplo, para producir el segundo vector minterm para la familia (es decir, el vector minterm para$$B$$), el patrón básico de cero uno se replica dos veces para dar

 0     0     1     1     0     0     1     1


La función minterm (n, k) genera el k-ésimo vector minterm para una clase de n grupos generadores.

minterms para la clase {a, b, c}.

>> A = minterm(3,1)
A =  0     0     0     0     1     1     1     1
>> B = minterm(3,2)
B =  0     0     1     1     0     0     1     1
>> C = minterm(3,3)
C =  0     1     0     1     0     1     0     1

patrones minterm para las combinaciones booleanas

$$F = AB \cup B^c C$$$$G = A \cup A^c C$$

F = (A&B)|(~B&C)
F =  0     1     0     0     0     1     1     1
>> G = A|(~A&C)
G =  0     1     0     1     1     1     1     1
>> JF = find(F)-1           % Use of find to determine index set for F
JF =   1     5     6     7  % Shows F = M(1, 5, 6, 7)

Estos patrones básicos de minterm son útiles no solo para combinaciones booleanas de eventos sino también para muchos aspectos del análisis de aquellas variables aleatorias que toman solo un número finito de valores.

Arreglos cero-uno en MATLAB

El tratamiento anterior oculta el hecho de que una matriz rectangular de ceros y unos puede tener dos significados y funciones muy diferentes en MATLAB.

Una matriz numérica (o vector) sujeta a las operaciones habituales sobre matrices..
Una matriz lógica cuyos elementos son combinados por a. Operadores lógicos para dar nuevos arrays lógicos; b. Operaciones de matriz (elemento por elemento) para dar matrices numéricas; c. Operaciones de matriz con matrices numéricas para dar resultados numéricos.

Algunos ejemplos simples ilustrarán las principales propiedades.

>>> A = minterm(3,1);
>> B = minterm(3,2);
>> C = minterm(3,3);
>> F = (A&B)|(~B&C)
F =  0     1     0     0     0     1     1     1
>> G = A|(~A&C)
G =  0     1     0     1     1     1     1     1
>> islogical(A)       % Test for logical array
ans =    0
>> islogical(F)
ans =   1
>> m = max(A,B)       % A matrix operation
m =   0     0     1     1     1     1     1     1
>> islogical(m)
ans =   0
>> m1 = A|B           % A logical operation
m1 =   0     0     1     1     1     1     1     1
>> islogical(m1)
ans = 1
>> a = logical(A)      % Converts 0-1 matrix into logical array
a =   0     0     0     0     1     1     1     1
>> b = logical(B)
>> m2 = a|b
m2 =   0     0     1     1     1     1     1     1
>> p = dot(A,B)        % Equivalently, p = A*B'
p =  2
>> p1 = total(A.*b)
p1 =  2
>> p3 = total(A.*B)
p3 =  2
>> p4 = a*b'           % Cannot use matrix operations on logical arrays
??? Error using ==> mtimes   % MATLAB error signal
Logical inputs must be scalar.

A menudo es deseable tener una tabla de los vectores minterm generadores. El uso de la función minterm en un simple “for loop” produce la siguiente función m.

La función mintable (n) Genera una tabla de vectores minterm para$$n$$ generar conjuntos.

mintable para tres variables

>> M3 = mintable(3)
M3 = 0     0     0     0     1     1     1     1
0     0     1     1     0     0     1     1
0     1     0     1     0     1     0     1

Como aplicación de mintable, considerar el problema de determinar la probabilidad$$k$$ de$$n$$ eventos. Si$$\{A_i: 1 \le i \le n\}$$ hay alguna clase finita de eventos, el evento que exactamente$$k$$ de estos eventos ocurren en un ensayo puede caracterizarse simplemente en términos de la expansión minterm. El evento$$A_{kn}$$ que$$k$$ ocurre exactamente viene dado por

$$A_{kn} = the\ disjoint\ union\ of\ those\ minterms\ with\ exactly\ k\ positions\ uncomplemented$$

En la matriz estos son los minterms correspondientes a columnas con exactamente$$k$$ unos. El evento BKNbkN que$$k$$ o más ocurren viene dado por

$$B_{kn} = \bigvee_{r = k}^{n} A_{rn}$$

Si tenemos las probabilidades minterm, es fácil escoger los minterms apropiados y combinar las probabilidades. El siguiente ejemplo en el caso de tres variables ilustra el procedimiento.

la encuesta de software (continuación)

En el problema de la encuesta de software, las probabilidades minterm son

$$pm =$$[0 0.05 0.10 0.05 0.20 0.10 0.40 0.10]

donde$$A =$$ evento tiene procesador de textos,$$B =$$ evento tiene hoja de cálculo,$$C =$$ evento tiene un programa de base de datos. Se desea obtener la probabilidad que un individuo seleccionado tiene$$k$$ de estos,$$k = 0, 1, 2, 3$$.

Solución

Formamos un mintable para tres variables. Contamos el número de “éxitos” correspondientes a cada minterm mediante el uso de la función sum de MATLAB, que da la suma de cada columna. En este caso, sería fácil determinar cada valor distinto y sumar las probabilidades sobre los minterms que arrojan este valor. Para casos más complicados, tenemos una función m llamada csort (para ordenar y consolidar) para realizar esta operación.

>> pm = 0.01*[0 5 10 5 20 10 40 10];
>> M = mintable(3)
M =
0     0     0     0     1     1     1     1
0     0     1     1     0     0     1     1
0     1     0     1     0     1     0     1
>> T = sum(M)                                    % Column sums give number
T =  0     1     1     2     1     2     2     3 % of successes on each
>> [k,pk] = csort(T,pm);                         % minterm, determines
% distinct values in T and
>> disp([k;pk]')                                 % consolidates probabilities
0         0
1.0000    0.3500
2.0000    0.5500
3.0000    0.1000

Para tres variables, es bastante fácil identificar las diversas combinaciones “a ojo” y hacer las combinaciones. Para un mayor número de variables, sin embargo, esto puede llegar a ser tedioso. El enfoque es mucho más útil en el caso de los Eventos Independientes, debido a la facilidad de determinar las probabilidades minterm.

Procedimientos Minvec

El uso de la tilde$$\sim$$ para indicar el complemento de un evento suele ser incómodo. Se acostumbra indicar el complemento de un evento$$E$$ por$$E^c$$. En MATLAB, no podemos indicar el superíndice, por lo que indicamos el complemento por$$E^c$$ en lugar de$$\sim E$$. Para facilitar la escritura de combinaciones, contamos con una familia de procedimientos minvec (minvec3, minvec4,..., minvec10) para agilizar la expresión de combinaciones booleanas de$$n = 3, 4, 5, \cdot\cdot\cdot, 10$$ conjuntos. Estos generan y nombran el vector minterm para cada conjunto generador y su complemento.

combinaciones booleanas usando minvec3

Deseamos generar una matriz cuyas filas sean los vectores minterm para$$\Omega = A \cup A^c, A, AB, ABC, C,$$ y$$A^c C^c$$, respectivamente.

>> minvec3                               % Call for the setup procedure
Variables are A, B, C, Ac, Bc, Cc
They may be renamed, if desired
>> V = [A|Ac; A; A&B; A&B&C; C; Ac&Cc];  % Logical combinations (one per
% row) yield logical vectors
>> disp(V)
1     1     1     1     1     1     1     1   % Mixed logical and
0     0     0     0     1     1     1     1   % numerical vectors
0     0     0     0     0     0     1     1
0     0     0     0     0     0     0     1
0     1     0     1     0     1     0     1
1     0     1     0     0     0     0     0

Si tenemos la probabilidad de cada minterm generado por una clase finita, podemos determinar la probabilidad de cualquier combinación booleana de los miembros de la clase. Cuando conocemos la expansión minterm o, equivalentemente, el vector minterm, simplemente seleccionamos las probabilidades correspondientes a las minterms en la expansión y las agregamos. En el siguiente ejemplo, hacemos esto “a mano” para luego mostrar cómo hacerlo con MATLAB.

Consideremos$$E = A (B \cup C^c) \cup A^c (B \cup C^c)^c$$ y$$F = A^c B^c \cup AC$$ del ejemplo anterior, y supongamos que las respectivas probabilitas minterm son

$$p_0 = 0.21$$,$$p_1 = 0.06$$,$$p_2 = 0.29$$,$$p_3 = 0.11$$,,$$p_4 = 0.09$$,$$p_5 = 0.03$$,$$p_6 = 0.14$$,$$p_7 = 0.07$$

El uso de un mapa minterm muestra$$E = M(1, 4, 6, 7)$$ y$$F = M(0, 1, 5, 7)$$. para que

$$P(E) = p_1 + p_4 + p_6 + p_7 = p(1, 4, 6, 7) = 0.36$$y$$P(F) = p(0, 1, 5, 7) = 0.37$$

Esto se maneja fácilmente en MATLAB.

• Utilice minvec3 para establecer los vectores minterm generadores.
• Utilice operaciones de matriz lógica

$$E = (A \text{&} (B|Cc))|(Ac\text{&}((B|Cc)))$$ y$$F = (Ac \text{&} Bc)|(A\text{&}C)$$

para obtener los vectores minterm (lógicos) para$$E$$ y$$F$$
• Si$$pm$$ es la matriz de probabilidades minterm, realizar el producto punto algebraico o producto escalar de la matriz pmpm y el vector minterm para la combinación. Esto puede ser llamado por los comandos de MATLAB PE = E*pm' y PF = f*pm'.

La siguiente es una transcripción de las operaciones de MATLAB.

>> minvec3                 % Call for the setup procedure
Variables are A, B, C, Ac, Bc, Cc
They may be renamed, if desired.
>> E  = (A&(B|Cc))|(Ac&~(B|Cc));
>> F  = (Ac&Bc)|(A&C);
>> pm = 0.01*[21 6 29 11 9 3 14 7];
>> PE = E*pm'              % Picks out and adds the minterm probabilities
PE =  0.3600
>> PF = F*pm'
PF =  0.3700

solución del problema de la encuesta de software

Establecimos las ecuaciones matriciales con el uso de MATLAB y resolvemos para las probabilidades minterm. A partir de estos, podemos resolver para las probabilidades de “objetivo” deseadas.

>> minvec3
Variables are A, B, C, Ac, Bc, Cc
They may be renamed, if desired.
Data vector combinations are:
>> DV = [A|Ac; A; B; C; A&B&C; Ac&Bc; (A&B)|(A&C)|(B&C); (A&Bc&C) - 2*(Ac&B&C)]
DV =
1     1     1     1     1     1     1     1    % Data mixed numerical
0     0     0     0     1     1     1     1    % and logical vectors
0     0     1     1     0     0     1     1
0     1     0     1     0     1     0     1
0     0     0     0     0     0     0     1
1     1     0     0     0     0     0     0
0     0     0     1     0     1     1     1
0     0     0    -2     0     1     0     0
>> DP = [1 0.8 0.65 0.3 0.1 0.05 0.65 0];  % Corresponding data probabilities
>> pm = DV\DP'                             % Solution for minterm probabilities
pm =
-0.0000                                          % Roundoff -3.5 x 10-17
0.0500
0.1000
0.0500
0.2000
0.1000
0.4000
0.1000
>> TV = [(A&B&Cc)|(A&Bc&C)|(Ac&B&C); Ac&Bc&C]       % Target combinations
TV =
0     0     0     1     0     1     1     0    % Target vectors
0     1     0     0     0     0     0     0
>> PV = TV*pm                          % Solution for target probabilities
PV =
0.5500                             % Target probabilities
0.0500

Un enfoque alternativo

El procedimiento anterior primero obtuvo todas las probabilidades minterm, luego las utilizó para determinar las probabilidades para las combinaciones objetivo. El siguiente procedimiento no requiere el cálculo de las probabilidades minterm. En ocasiones los datos no son suficientes para calcular todas las probabilidades minterm, pero son suficientes para permitir la determinación de las probabilidades objetivo.

Supongamos que los vectores minterm de datos son linealmente independientes, y los vectores minterm objetivo son linealmente dependientes de los vectores de datos (es decir, los vectores objetivo pueden expresarse como combinaciones lineales de los vectores de datos). Ahora cada probabilidad objetivo es la misma combinación lineal de las probabilidades de datos. Para determinar las combinaciones lineales, resolver la ecuación matricial

$$TV = CT * DV\ which\ has\ the\ MATLAB\ solution\ CT = TV/DV$$

Entonces la matriz$$tp$$ de probabilitos diana viene dada por$$tp = CT * DP'$$. Continuando con los procedimientos anteriores de MATLAB, contamos con:

>> CT = TV/DV;

>> tp = CT*DP'

tp = 0.5500
0.0500

## El procedimiento mincalc

El procedimiento mincalc realiza cálculos como en los ejemplos anteriores. Los refinamientos consisten en determinar la consistencia y la computabilidad de diversas probabilidades minterm individuales y probilidades objetivo. La verificación de consistencia es principalmente para probabilidades minterm negativas. Las pruebas de computabilidad son pruebas de independencia lineal mediante el cálculo de rangos de varias matrices. El procedimiento selecciona las probabilidades minterm computables y las probabilidades objetivo computables y las calcula.

Para utilizar el procedimiento, el problema debe formularse de manera adecuada y precisa, de la siguiente manera:

Utilice el programa minvecq de MATLAB para establecer vectores minterm para cada uno de los q eventos básicos.
Los datos consisten en combinaciones booleanas de los eventos básicos y las respectivas probabilidades de estas combinaciones. Estas se organizan en dos matrices:

• La matriz vectorial de datos$$DV$$ tiene las combinaciones booleanas de datos, una en cada fila. MATLAB traduce cada fila en el vector minterm para la combinación booleana correspondiente. La primera entrada (en la primera fila) es A | Ac (for$$A \bigvee A^c$$), que es todo el espacio. Su vector minterm consiste en una fila de unos.
• La matriz de probabilidad de datos$$DP$$ es una matriz de filas de las probabilidades de datos. La primera entrada es una, la probabilidad de todo el espacio.

El objetivo es determinar la probabilidad de varias combinaciones booleanas objetivo. Estos se ponen en la matriz del vector objetivo$$TV$$, uno en cada fila. MATLAB produce el vector minterm para cada combinación booleana de destino correspondiente.

Nota computacional. En mincalc, es necesario convertir las matrices DV y TV que consisten en patrones cero-uno en matrices cero-uno. Esto se logra para DV por la operación. y de manera similar para TV. Tanto las matrices originales como las transformadas tienen el mismo patrón cero-uno, pero MATLAB las interpreta de manera diferente.

Caso habitual

Los vectores minterm de datos son linealmente independientes y los vectores objetivo son cada uno linealmente dependientes de los vectores minterm de datos. Entonces, cada vector minterm objetivo es expresable como una combinación lineal de vectores minterm de datos. Así, existe una matriz$$CT$$ tal que$$TV = CT * DV$$. MATLAB resuelve esto con el comando$$CT = TV/DV$$ Las probabilidades de destino son las mismas combinaciones lineales de las probabilidades de datos. Estos son obtenidos por la operación MATLAB$$tp = DP * CT'$$.

Notas de precaución

El programa mincalc depende de la provisión en MATLAB para resolver ecuaciones cuando hay menos de datos completos disponibles (basado en la descomposición del valor singular). Hay varias situaciones que deben ser atendidas como casos especiales. Por lo general, es una buena idea verificar los resultados a mano para determinar si son consistentes con los datos. La comprobación a mano suele ser mucho más fácil que obtener la solución sin ayuda, por lo que el uso de MATLAB es ventajoso incluso en casos cuestionables.

El Problema Cero. Si la probabilidad total de un grupo de minterms es cero, entonces se deduce que la probabilidad de cada minterm en el grupo es cero. Sin embargo, si mincalc no tiene suficiente información para calcular las probabilidades minterm separadas en el caso de que no sean cero, no recogerá en el caso cero el hecho de que las probabilidades minterm separadas son cero. Simplemente considera que estas probabilidades minterm no son computables.
Dependencia lineal. En el caso de la dependencia lineal, la operación requerida por el comando CT = TV/DV puede no ser capaz de resolver las ecuaciones. La matriz puede ser singular, o puede que no pueda decidir cuál de las ecuaciones de datos redundantes usar. En caso de que proporcione una solución, el resultado debe verificarse con la ayuda de un mapa minterm.
Comprobación de consistencia. Dado que la verificación de consistencia es para minterms negativos, si no hay datos suficientes para calcular las probabilidades minterm, no hay verificación simple de la consistencia. A veces la probabilidad de un vector objetivo incluido en otro vector realmente excederá lo que debería ser la probabilidad mayor. Sin una verificación considerable, puede ser difícil determinar la consistencia.
En algunos casos inusuales, el comando CT = TV/DV no opera adecuadamente, aunque los datos deberían ser adecuados para el problema en cuestión. Aparentemente el proceso de aproximación no converge.

MATLAB Soluciones para ejemplos usando mincalc

encuesta de software

% file mcalc01   Data for software survey
minvec3;
DV = [A|Ac; A; B; C; A&B&C; Ac&Bc; (A&B)|(A&C)|(B&C); (A&Bc&C)  - 2*(Ac&B&C)];
DP = [1 0.8 0.65 0.3 0.1 0.05 0.65 0];
TV = [(A&B&Cc)|(A&Bc&C)|(Ac&B&C); Ac&Bc&C];
disp('Call for mincalc')
>> mcalc01         % Call for data
Call for mincalc   % Prompt supplied in the data file
>> mincalc
Data vectors are linearly independent
Computable target probabilities
1.0000    0.5500
2.0000    0.0500
The number of minterms is 8
The number of available minterms is 8
Available minterm probabilities are in vector pma
To view available minterm probabilities, call for PMA
>> disp(PMA)       % Optional call for minterm probabilities
0         0
1.0000    0.0500
2.0000    0.1000
3.0000    0.0500
4.0000    0.2000
5.0000    0.1000
6.0000    0.4000
7.0000    0.1000

% file mcalc02.m    Data for computer survey
minvec3
DV =   [A|Ac; A; B; C; A&B&C; A&C; (A&B)|(A&C)|(B&C); ...
2*(B&C) - (A&C)];
DP = 0.001*[1000 565 515 151 51 124 212 0];   TV = [A|B|C; Ac&Bc&C];
disp('Call for mincalc')
>> mcalc02
Call for mincalc
>> mincalc
Data vectors are linearly independent
Computable target probabilities
1.0000    0.9680
2.0000    0.0160
The number of minterms is 8
The number of available minterms is 8
Available minterm probabilities are in vector pma
To view available minterm probabilities, call for PMA
>> disp(PMA)
0         0.0320
1.0000    0.0160
2.0000    0.3760
3.0000    0.0110
4.0000    0.3640
5.0000    0.0730
6.0000    0.0770
7.0000    0.0510
% file mcalc03.m    Data for opinion survey
minvec4
DV = [A|Ac; A; B; C; D; A&(B|Cc)&Dc; A|((B&C)|Dc) ; Ac&B&Cc&D; ...
A&B&C&D; A&Bc&C; Ac&Bc&Cc&D; Ac&B&C; Ac&Bc&Dc; A&Cc; A&C&Dc; A&B&Cc&Dc];
DP =  0.001*[1000 200 500 300 700 55 520 200 15 30 195 120 120 ...
140 25 20];
TV = [Ac&((B&Cc)|(Bc&C)); A|(B&Cc)];
disp('Call for mincalc')
>> mincalc03
Call for mincalc
>> mincalc
Data vectors are linearly independent
Computable target probabilities
1.0000    0.4000
2.0000    0.4800
The number of minterms is 16
The number of available minterms is 16
Available minterm probabilities are in vector pma
To view available minterm probabilities, call for PMA
>> disp(minmap(pma))    % Display arranged as on minterm map
0.0850    0.0800    0.0200    0.0200
0.1950    0.2000    0.0500    0.0500
0.0350    0.0350    0.0100    0.0150
0.0850    0.0850    0.0200    0.0150

El procedimiento mincalct

Una modificación útil, que llamamos mincalct, calcula las probabilidades objetivo disponibles, sin verificar y computar las probabilidades minterm. Este procedimiento asume un archivo de datos similar al de mincalc, excepto que no necesita la matriz de destino$$TV$$, ya que solicita entradas de combinación booleana de destino. El procedimiento mincalct se puede utilizar después de que mincalc haya realizado sus operaciones para calcular probabilidades de combinaciones de objetivos adicionales.

(continuación) Datum objetivo adicional para la encuesta de opinión

Supongamos que mincalc se ha aplicado a los datos para la encuesta de opinión y que se desea determinar$$P(AD \cup BD^c)$$. No es necesario recalcular todas las demás cantidades. Simplemente podemos usar el procedimiento mincalct e ingresar la combinación booleana deseada en el prompt.

>> mincalct
Enter matrix of target Boolean combinations  (A&D)|(B&Dc)
Computable target probabilities
1.0000    0.2850

Las llamadas repetidas para mcalct se pueden usar para calcular otras probabilidades objetivo.

This page titled 2.2: Mintérminos y cálculos de MATLAB is shared under a CC BY 3.0 license and was authored, remixed, and/or curated by Paul Pfeiffer via source content that was edited to the style and standards of the LibreTexts platform.