# Calculadora MAV - CAS Híbrido ## Descripción Sistema de Álgebra Computacional (CAS) que combina SymPy con clases especializadas para networking, programación y análisis numérico. Incluye sistema de tipos dinámico con auto-descubrimiento. ## Características Principales - **Motor SymPy completo**: Cálculo simbólico y numérico integrado - **Sistema de tipos dinámico**: Auto-descubrimiento desde `custom_types/` - **Sintaxis simplificada**: `Tipo[args]` en lugar de `Tipo("args")` - **Detección automática de ecuaciones**: Sin sintaxis especial - **Resultados interactivos**: Elementos clickeables para plots, matrices y listas - **Autocompletado inteligente**: Basado en tipos registrados dinámicamente ## Tipos Especializados ### Redes y Direcciones IP ```python IP4[192.168.1.100/24] IP4[10.0.0.1, 8] IP4[172.16.0.5, 255.255.0.0] IP4Mask[24] IP4Mask[255.255.255.0] ``` ### Sistemas Numéricos ```python Hex[FF] # Hexadecimal Bin[1010] # Binario Dec[255] # Decimal Chr[A] # Caracteres ASCII ``` ### Métodos Disponibles Los tipos incluyen métodos específicos accesibles con autocompletado: ```python ip = IP4[192.168.1.100/24] ip.NetworkAddress[] # Dirección de red ip.Nodes() # Hosts disponibles Hex[FF].toDecimal() # Conversiones ``` ## Sistema de Ecuaciones ### Detección Automática ```python x + 2 = 5 # Detectado automáticamente y**2 - 4 = 0 # Agregado al sistema sin(x) = 1/2 # Ecuaciones trigonométricas ``` ### Resolución ```python solve(x**2 + 2*x - 8, x) # Resolver ecuación específica x=? # Atajo para solve(x) ``` ## Funciones Matemáticas ### Cálculo ```python diff(x**3, x) # Derivadas integrate(sin(x), (x, 0, pi)) # Integrales limit(sin(x)/x, x, 0) # Límites series(exp(x), x, 0, 5) # Series ``` ### Álgebra ```python simplify(expr) # Simplificación expand((x+1)**3) # Expansión factor(x**2-1) # Factorización solve([eq1, eq2], [x, y]) # Sistemas ``` ### Matrices ```python Matrix([[1, 2], [3, 4]]) # Crear matriz det(M) # Determinante inv(M) # Inversa ``` ## Resultados Interactivos Los siguientes resultados son clickeables en la interfaz: - **📊 Ver Plot**: Abre matplotlib para gráficas - **📋 Ver Matriz**: Vista expandida con operaciones - **📋 Ver Lista**: Contenido completo de listas largas - **🔍 Ver Detalles**: Información completa de objetos ## Plotting ```python plot(sin(x), (x, -2*pi, 2*pi)) # Plot 2D plot3d(x**2 + y**2, (x, -5, 5), (y, -5, 5)) # Plot 3D ``` ## Variables y Símbolos Todas las variables son símbolos SymPy automáticamente: ```python x = 5 # x es Symbol('x') con valor 5 y = x + 2 # y es 7 (evaluado) z = x + a # z es Symbol('x') + Symbol('a') (simbólico) ``` ## Interfaz de Usuario ### Paneles - **Izquierdo**: Entrada de código - **Derecho**: Resultados con colores y elementos interactivos ### Autocompletado - Escribir `.` después de cualquier objeto muestra métodos disponibles - El sistema usa tipos registrados dinámicamente - Funciona con objetos SymPy y tipos personalizados ### Menús - **Archivo**: Nuevo, Cargar, Guardar - **Editar**: Limpiar, operaciones CAS - **CAS**: Variables, ecuaciones, resolver sistema - **Tipos**: Información de tipos, recargar sistema - **Ayuda**: Guías y referencia ## Sistema de Tipos Dinámico ### Auto-descubrimiento Los tipos se cargan automáticamente desde `custom_types/`: - Archivos `*_type.py` son detectados automáticamente - Cada archivo define clases y función `register_classes_in_module()` - Sistema modular y extensible sin modificar código central ### Información de Tipos Use **Menú Tipos → Información de tipos** para ver: - Clases registradas disponibles - Sintaxis de corchetes soportada - Métodos de cada tipo ### Recargar Tipos **Menú Tipos → Recargar tipos** para desarrollo en tiempo real. ## Casos de Uso ### Análisis de Redes ```python network = IP4[192.168.0.0/24] host = IP4[192.168.0.100/24] network.Nodes() # Hosts disponibles host.NetworkAddress[] # Dirección de red ``` ### Conversiones Numéricas ```python Hex[FF].toDecimal() # 255 Dec[66].toChr() # Chr('B') ``` ### Análisis Matemático ```python f = sin(x) * exp(-x**2/2) df_dx = diff(f, x) # Derivada critical_points = solve(df_dx, x) # Puntos críticos plot(f, df_dx, (x, -3, 3)) # Visualización ``` ## Extensibilidad ### Crear Nuevos Tipos 1. Crear archivo en `custom_types/nuevo_type.py` 2. Definir clase heredando de `ClassBase` o `SympyClassBase` 3. Implementar función `register_classes_in_module()` 4. El sistema detecta automáticamente el nuevo tipo ### Ejemplo de Estructura ```python # custom_types/ejemplo_type.py from sympy_Base import SympyClassBase class Class_Ejemplo(SympyClassBase): def __init__(self, value): super().__init__(processed_value, original_str) @staticmethod def Helper(input_str): return "Ayuda para Ejemplo" @staticmethod def PopupFunctionList(): return [("metodo", "Descripción del método")] def register_classes_in_module(): return [("Ejemplo", Class_Ejemplo, "SympyClassBase", {})] ``` ## Resolución de Problemas ### Errores Comunes - **Dependencias faltantes**: Ejecutar `pip install sympy matplotlib numpy` - **tkinter en Linux**: `sudo apt-get install python3-tk` - **Sintaxis**: Usar `Tipo[args]` no `Tipo("args")` ### Performance - Expresiones complejas pueden ser lentas en SymPy - Plots 3D requieren tiempo de renderizado - Matrices grandes consumen memoria ### Debugging - Los logs se guardan en `logs/` - Usar **Menú Tipos → Información** para verificar tipos cargados - Verificar `custom_types/` para tipos personalizados ## Arquitectura ### Componentes Principales - **type_registry.py**: Sistema de auto-descubrimiento - **main_evaluation.py**: Motor CAS híbrido - **tl_bracket_parser.py**: Parser de sintaxis con corchetes - **tl_popup.py**: Resultados interactivos - **main_calc_app.py**: Aplicación principal ### Flujo de Ejecución 1. Auto-descubrimiento de tipos en `custom_types/` 2. Registro dinámico de clases y métodos 3. Parser convierte sintaxis con corchetes 4. Motor SymPy evalúa expresiones 5. Resultados se presentan interactivamente --- **Calculadora MAV - CAS Híbrido** *Sistema extensible para cálculo matemático y análisis especializado*