Hasta dónde llega una escalera: el conjunto alcanzable de la eliminación de armónicos
En la primera parte la onda escalonada de un convertidor se diseñaba como un problema de control óptimo: se pide la amplitud de la fundamental, se eliminan unos armónicos y la forma de la escalera sale sola. Pero quedó una pregunta sin responder. Al subir la amplitud, a partir de 1,17 no había solución, con 3, con 5, con 7 o con 9 niveles. ¿Por qué justo ahí? ¿Y por qué no cambiaba con los niveles?
En diciembre de 2020 lo ataqué con programación dinámica: discretizar el tiempo y reconstruir hacia atrás el conjunto de estados desde los que se puede llegar al objetivo. Aquí está la respuesta exacta, que resulta ser bastante más sencilla: lo que se puede conseguir es un conjunto convexo con una fórmula cerrada, y no depende del número de niveles. Arriba se puede explorar: cada clic pide una fundamental y un armónico ; dentro de la zona azul aparece la onda que lo consigue y, fuera, la recta que demuestra que no existe.
La pregunta: qué coeficientes se pueden conseguir
Una onda entre y , con simetría de media onda, tiene coeficientes de Fourier
y lo mismo con cosenos. Con varios armónicos a la vez, el vector de coeficientes es , donde reúne los senos y cosenos de los armónicos que interesan. La pregunta es qué vectores se pueden obtener eligiendo : el conjunto alcanzable. Un objetivo (por ejemplo, fundamental 0,8 y el 5.º a cero) tiene solución si y solo si está dentro.
En 2020: programación dinámica
El planteamiento de entonces era el natural en control: discretizar el semiperiodo en pasos, , y reconstruir hacia atrás desde el origen la región desde la que todavía se puede llegar. Para describir su borde se usaban direcciones : en cada paso, el borde en la dirección avanza . Con eso se puede dibujar la región en dos o tres dimensiones, pero en más dimensiones una rejilla de estados no escala.
La respuesta exacta: un conjunto convexo
Esa misma fórmula, sin discretizar, es exactamente la descripción del conjunto alcanzable. Como depende linealmente de y se mueve en un intervalo, el conjunto es convexo, y su borde en la dirección está a una distancia
que se alcanza con la onda . Un objetivo es alcanzable si y solo si para todas las direcciones . En dos dimensiones esto dibuja la región entera; en diez dimensiones (la fundamental y cuatro armónicos, con senos y cosenos), sigue siendo un problema convexo pequeño, no una rejilla.

La mayor amplitud que se puede pedir con los armónicos elegidos a cero es la distancia hasta el borde a lo largo del eje de la fundamental:
un programa lineal en cuanto se discretiza la integral. Para el caso de la primera parte (eliminar 5, 7, 11 y 13) da 1,1704: el mismo límite que habíamos encontrado barriendo la amplitud, entre 1,169 y 1,170. Cada conjunto de armónicos tiene el suyo:
| Armónicos eliminados | Mayor fundamental posible |
|---|---|
| ninguno (onda cuadrada) | 1,2732 (= 4/π) |
| 5 | 1,2176 |
| 5, 7 | 1,1884 |
| 5, 7, 11, 13 | 1,1704 |
| 3, 9, 13, 17 | 1,1001 |
| 3, 5, 7, 9 | 1,0311 |
Eliminar armónicos bajos cuesta más amplitud que eliminar altos: el 3.º es el que más recorta.
Por qué el número de niveles no importa
El conjunto alcanzable se ha calculado con en todo el intervalo , sin niveles. ¿Por qué entonces coincide con lo que consigue una escalera de 3 o de 5 niveles? Por un resultado clásico, el teorema de convexidad de Lyapunov: lo que se alcanza con continuo en es exactamente lo mismo que se alcanza con que solo vale o . Los puntos del borde, de hecho, ya los consigue una onda de dos niveles (el signo de ).
Así que cualquier conjunto de niveles que incluya llega exactamente igual de lejos: por eso el 1,17 no cambiaba. Lo que sí cambia con los niveles es cómo se llega: con menos niveles hacen falta más conmutaciones para imitar los valores intermedios. En el visor se ve al cambiar entre 2, 3 y 5 niveles: la zona azul no se mueve, la onda sí.
El certificado: la recta roja
Cuando el objetivo está fuera, el resolvedor de la primera parte (el dual, con su vector ) no converge a nada: crece sin límite, como . Pero no crece en cualquier dirección: crece justo en la dirección de una recta que deja el objetivo a un lado y todo el conjunto alcanzable al otro, . Esa recta es la demostración de que no hay ninguna onda que lo consiga, y es la que dibuja el visor en rojo.
Dos niveles: la penalización lineal
En la primera parte, la penalización que fuerza la escalera (la parábola a trozos) no servía para dos niveles: entre y es plana. Las diapositivas de 2020 usaban otra, lineal: o . Con ella, el principio del máximo da directamente un control de dos valores, según el signo de : la eliminación de armónicos clásica de dos niveles. Las dos versiones dan las dos familias de soluciones simétricas.

Con pocas conmutaciones, los niveles sí importan
Que el conjunto sea el mismo con cualquier número de niveles tiene letra pequeña: vale si se puede conmutar todo lo que haga falta. Cada conmutación son pérdidas en el convertidor, así que la pregunta práctica es otra: ¿qué se alcanza con N conmutaciones por cuarto de periodo? Ahí los niveles cambian el dibujo por completo.

Con dos niveles cada salto va de −1 a +1, y con dos conmutaciones ya se cubre casi todo. Con tres niveles sale una pajarita que se rellena hacia las cuatro conmutaciones. Con cinco, una banda ondulada que tarda en crecer: para poner mucho 5.º armónico hay que oscilar de −1 a +1, y con saltos de medio nivel eso cuesta muchas conmutaciones. Pero lo que interesa en la eliminación de armónicos es el eje horizontal (el armónico a cero), y ahí las bandas multinivel están centradas: un convertidor multinivel llega con pocas conmutaciones a lo que se le pide, y lo que no puede hacer es lo que nadie quiere.
La partícula en la caja que se encoge
El conjunto alcanzable también se puede ver en movimiento. Tomando como estado lo que falta por conseguir de cada coeficiente, , el problema es llevar un punto (la partícula) hasta el origen en el instante . Se mueve con velocidad : el nivel elige hacia dónde y , que gira, curva la trayectoria. Y el conjunto desde el que todavía se puede acabar es una caja convexa que se encoge con el tiempo, , hasta reducirse al origen. Mientras la partícula esté dentro, hay solución.
La lección de la animación es que rebotar bien exige previsión. Esperar a la pared no funciona: al tocarla, el único control que no se sale es el extremo, y la partícula queda pegada conmutando sin parar; dejarle margen tampoco, porque una caja encogida a proporción no es segura. La previsión es exactamente lo que da el dual de la primera parte: una dirección fija que decide todos los rebotes desde el principio.
¿Cuántas conmutaciones?
La partícula óptima rebota pocas veces, pero ¿son las mínimas? Con ecuaciones (la fundamental y los armónicos eliminados), un objetivo genérico necesita al menos conmutaciones por cuarto de periodo: con menos ángulos libres que ecuaciones no hay solución.

- Con 2 y 3 niveles, casi siempre el mínimo. Cuando es impar, exactamente en todas las amplitudes; cuando es par, a veces una de más (con simetría de cuarto de onda, el número de conmutaciones decide en qué nivel acaba la onda en ).
- Con muchos niveles, de una a cuatro de más. La solución de mínimo valor eficaz prefiere añadir pulsos si así se parece más a la sinusoide.
- La solución con el mínimo existe, pero esta formulación no siempre puede elegirla. Buscándola por fuerza bruta (todas las secuencias de niveles) aparece en todos los casos revisados; probando otras penalizaciones convexas solo se llega a ella en un tercio o dos tercios de los casos. La razón es estructural: las soluciones de este método siguen los cruces de umbral de un polinomio trigonométrico, y muchas ondas con el mínimo de conmutaciones no son de esa forma.
- Y no hay atajo convexo. La idea natural, penalizar la variación total de la onda, no sirve: mide cuánto recorre la onda, no cuántas veces salta (una rampa cuesta lo mismo que un escalón), y en cuanto actúa la onda deja de ser una escalera. Contar conmutaciones es combinatorio; por eso la práctica habitual fija su número y enumera secuencias.
En resumen
- Lo que una escalera puede conseguir es un conjunto convexo con fórmula exacta, y su frontera da la mayor amplitud posible para cada conjunto de armónicos eliminados (1,1704 para el 5.º, 7.º, 11.º y 13.º).
- Ese conjunto no depende del número de niveles; lo que cambia con los niveles es cuántas conmutaciones hacen falta para llegar a cada sitio.
- Cuando un objetivo es imposible, la solución trae su demostración: una recta que lo separa del conjunto.
- La formulación por control óptimo usa el mínimo de conmutaciones en los casos sencillos, pero no lo garantiza: minimizar conmutaciones es otro problema, combinatorio.
- Todo lo anterior cabe en el navegador: el conjunto, la onda y el certificado se calculan en milisegundos.
Qué no demuestra esto
- No es teoría nueva. Que el conjunto alcanzable de un sistema lineal con control acotado sea convexo, que su función soporte sea y el teorema de Lyapunov son resultados clásicos de teoría de control. Lo que aporta aquí es aplicarlos a la eliminación de armónicos: explican de golpe el límite de amplitud y por qué no depende de los niveles.
- Las regiones con pocas conmutaciones son muestreadas. Salen de probar ángulos al azar para todas las secuencias de niveles, no de una fórmula; los bordes de las regiones son aproximados.
- El estudio de conmutaciones es numérico, sobre barridos de amplitud y unos pocos casos revisados por fuerza bruta, no un teorema.
- Los límites de la tabla son numéricos. El programa lineal discretiza la integral en 20 000 puntos; los límites son fiables hasta la cuarta cifra, y se comprobaron frente al barrido de amplitudes con el resolvedor de la primera parte.
Cómo reproducirlo
Todo está en control/she-alcanzable
del repositorio de las simulaciones:
python python/alcanzable.py # límites de amplitud por programa lineal
node web/prueba/dos_niveles.mjs # dos niveles con penalización lineal (mapas)
python python/pocas_conmutaciones.py fig/pocas.png # lo alcanzable con N conmutaciones
node web/prueba/particula.mjs 0.8 5 3 tmp/p.json # la partícula (óptima y perezosa)
node web/prueba/conmutaciones.mjs # conmutaciones de la solución óptima
python python/variacion_total.py # la penalización de variación total (no funciona)
python python/figuras_post.py fig # figuras del artículo
cd web && python3 -m http.server # el visor de arriba, en local
El resolvedor es el de la primera parte
(control/she-control-optimo),
con la opción de penalización lineal para dos niveles.