45 votos

Fórmula integral de Cauchy para el teorema de Cayley-Hamilton

Estoy leyendo el libro de Conway sobre el análisis complejo y me encontré con este bonito ejercicio:

Utilice la fórmula integral de Cauchy para demostrar el teorema de Cayley-Hamilton: Si $A$ es un $n \times n$ matriz sobre $\mathbb C$ y $f(z) = \det(z-A)$ es el polinomio característico de $A$ entonces $f(A) = 0$ . (Este ejercicio se ha extraído de un documento de C. A. McCarthy, Amer. Math. Monthly , 82 (1975), 390-391)

Por desgracia, no he podido encontrar dicho documento. Estoy completamente perdido con este ejercicio. No puedo ni empezar a imaginar cómo se podría hacer uso de Cauchy aquí...

Gracias por los consejos.

Saludos, S.L.

2 votos

Una breve búsqueda en Google dio como resultado esta nota .

0 votos

43voto

Grzenio Puntos 16802

Hay muchas partes móviles en este problema, lo que lo hace idóneo para la simulación.

En primer lugar, como mencionó Elvis en los comentarios, parece que Stacey debería tomar unas 16 citas, ya que cada una es de aproximadamente media hora. Pero ya se sabe que a medida que las citas empiezan a retrasarse, las cosas empiezan a desplazarse cada vez más tarde - así que si Stacey sólo va a empezar una cita si le queda media hora (tanto barrer el pelo del suelo, ¿eh, Stacey?) entonces vamos a tener menos de 16 huecos posibles, si utilizamos una bola de cristal para programar citas sin tiempo de descanso.

Optimally spaced haircuts

En la siguiente simulación, podemos investigar la curva de coste en función de la duración de la cita. Por supuesto, el resto de los parámetros también acabarán jugando un papel aquí - y en la realidad, Stacey no va a programar sus citas con minutos fraccionarios de diferencia, pero esto nos da alguna intuición sobre lo que está pasando.

enter image description here

También he trazado la hora a la que Stacey tiene que estar en el trabajo como el color. Decidí que Stacey nunca programaría su última cita después de las 7:30, pero a veces la cita llega tarde, ¡o hay un retraso! Se puede ver que la hora a la que se va a casa está cuantificada, de modo que a medida que las citas se alargan, se tiene una cita menos y entonces no se tiene que trabajar hasta tan tarde. Y creo que ese es un elemento que falta aquí: tal vez programar sus citas con 45 minutos de diferencia es genial, pero obtendrá una cita extra si puede apretarla a 40. Ese coste está incorporado por la espera de Stacey (por eso el coste sube a medida que aumenta la duración de la cita), pero tu valoración del tiempo de espera de Stacey podría no ser correcta.

De todos modos, ¡un problema divertido! Y una buena manera de aprender algunas bondades de ggplot y recordar que mi sintaxis de R es súper inestable. :)

Mi código está abajo - por favor, siéntase libre de ofrecer sugerencias para mejorar.


Para generar el código de la parcela superior:

hairtime = 30
hairsd = 10

nSim = 1000
allCuts = rep(0,nSim)
allTime = rep(0,nSim)

for (i in 1:nSim) {
    t = 0
    ncuts = 0

    while (t < 7.5) {
        ncuts = ncuts+1
        nexthairtime = rnorm(1,hairtime,hairsd)
        t = t+(nexthairtime/60)
    }
    allCuts[i] = ncuts
    allTime[i] = t
}

hist(allCuts,main="Number of haircuts in an 8 hour day",xlab="Customers")

La segunda simulación es mucho más larga...

nSim = 100
allCuts = rep(0,nSim)
allTime = rep(0,nSim)

allCost = rep(0,nSim)

lateMean = 10
lateSD = 3

staceyWasted = 1
customerWasted = 3

allLengths = seq(30,60,0.25)

# Keep everything in 'long form' just to make our plotting lives easier later
allApptCosts = data.frame(matrix(ncol=3,nrow=length(allLengths)*nSim))
names(allApptCosts) <- c("Appt.Length","Cost","Time")
ind = 1

# for every appointment length...
for (a in 1:length(allLengths)) {
    apptlen = allLengths[a]
    # ...simulate the time, and the cost of cutting hair.
    for (i in 1:nSim) {
        appts = seq(from=0,to=(8-hairtime/60),by=apptlen/60)
        t = 0
        cost = 0
        ncuts = 0

        for (a in 1:length(appts)) {
            customerArrival = appts[a]
            # late!            
            if (runif(1)>0.9) {
                customerArrival = appts[a]+rnorm(1,lateMean,lateSD)/60
            }

            waitTime = t-customerArrival
            # negative waitTime means the customer arrives late
            cost = cost+max(waitTime,0)*customerWasted+abs(min(waitTime,0))*staceyWasted
                                        # get the haircut
            nexthairtime = rnorm(1,hairtime,hairsd)
            t = customerArrival+(nexthairtime/60)
        }
        allCost[i] = cost
        allApptCosts[ind,1] = apptlen
        allApptCosts[ind,2] = cost
        allApptCosts[ind,3] = t
        ind = ind+1
    }
}

qplot(Appt.Length,Cost,geom=c("point"),alpha=I(0.75),color=Time,data=allApptCosts,xlab="Appointment Length (minutes)",ylab="Cost")+
      geom_smooth(color="black",size=2)+
    opts(axis.title.x=theme_text(size=16))+
    opts(axis.title.y=theme_text(size=16))+
    opts(axis.text.x=theme_text(size=14))+
    opts(axis.text.y=theme_text(size=14))+
    opts(legend.text=theme_text(size=12))+
    opts(legend.title=theme_text(size=12,hjust=-.2))

0 votos

Ah, eso es genial. ¡Muchas gracias, Theo!

0 votos

Qué prueba más bonita. :)

2 votos

@S. L.: A mí también me gusta y no lo conocía. ¡Gracias por hacer esta pregunta!

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X