Documentaciónode_exacta_tabla(expr, x0, y0, h, n)

ode_exacta_tabla(expr,x0,y0,h,n)\texttt{ode\_exacta\_tabla}(expr, x_{0}, y_{0}, h, n)

Nombre

ode_exacta_tabla - Evalua una solucion exacta de EDO y devuelve toda la trayectoria.

Sinopsis

tray = numericos.ode_exacta_tabla(expr, x0, y0, h, n)

Descripcion

Evalua una expresion que representa directamente la solucion exacta sobre un mallado uniforme de paso h.

A diferencia de ode_exacta(), esta variante retorna los vectores completos de x e y.

Validaciones y casos borde

  • Valida que h no sea cero.
  • Valida que n sea entero y no negativo.
  • Si n == 0, retorna una tabla con el unico punto inicial (x0, y0).
  • Cada valor nuevo se evalua en el mismo x que se guarda en la trayectoria.
  • Admite h negativo para recorrer el mallado hacia atras.
  • Si una validacion falla, emite ERROR().

Comportamiento

  • Avanza x en incrementos de h.
  • Evalua la expresion con RESOLVER() en cada nuevo valor de x.
  • Guarda el punto inicial y cada punto nuevo calculado.
  • Retorna una TABLA con dos vectores: x e y.

Funciones API relacionadas

  • numericos.ode_exacta()
  • numericos.ode_euler_tabla()
  • numericos.ode_heun_tabla()
  • numericos.ode_rk4_tabla()

Parámetros

ParámetroTipoDescripción
exprSTRINGExpresion matematica en texto evaluada por RESOLVER().
x0NUMERICOPosicion inicial en x; en formulas se representa como x0x_{0}.
y0NUMERICOPosicion inicial en y; en formulas se representa como y0y_{0}.
hNUMERICOPaso numerico usado en derivacion, integracion o EDO.
nNUMERICOCantidad de pasos; debe ser un entero no negativo.

Valor de retorno

TABLA - Tabla con los vectores x e y obtenidos al evaluar la expresion exacta paso a paso.

Ejemplo

ejemplo.blox
Solo lectura
INCLUIR "numericos.api"
INCLUIR "tablas.api"
INCLUIR "vectores.api"
INCLUIR "graficos.api"

FUNCION PRINCIPAL
INICIO "Comparacion Euler vs RK4 para dy/dx = f(x,y)"

    STRING f_edo
    NUMERICO x0, y0, h, n
    NUMERICO y_exacta, y_euler, y_rk4
    TABLA tray_exacta, tray_euler, tray_rk4

    // Definimos la EDO: dy/dx = f(x, y)
    // En este caso dy/dx = (x^2 - 1)/y^2
    // cuya solucion analitica es: y = (x^3 - 3*x + 8)^(1/3)
    //
    f_edo = "(x^2 - 1)/y^2"          

    x0 = 0
    y0 = 2          // y(0) = 2
    h  = 0.2
    n  = 25


    y_exacta = numericos.ode_exacta("(x^3 - 3*x + 8)^(1/3)", x0, y0, h, n)
    y_euler = numericos.ode_euler(f_edo, x0, y0, h, n)
    y_rk4   = numericos.ode_rk4(f_edo, x0, y0, h, n)

    IMPRIMIR("\nSoluc. exacta: y(5) = ", y_exacta)
    IMPRIMIR("\n        Euler: y(5) ≈ ", y_euler)
    IMPRIMIR("\n        RK4  : y(5) ≈ ", y_rk4)
    IMPRIMIR("\n")

    tray_exacta = numericos.ode_exacta_tabla("(x^3 - 3*x + 8)^(1/3)", x0, y0, h, n)
    VECTOR X_exacta, Y_exacta
    X_exacta = tray_exacta.x
    Y_exacta = tray_exacta.y

    tray_euler = numericos.ode_euler_tabla(f_edo, x0, y0, h, n)
    VECTOR X_euler, Y_euler
    X_euler = tray_euler.x
    Y_euler = tray_euler.y

    // No se usa ahora
    //
    tray_rk4   = numericos.ode_rk4_tabla(f_edo, x0, y0, h, n)
    VECTOR X_rk4, Y_rk4
    X_rk4 = tray_rk4.x
    Y_rk4 = tray_rk4.y


    // Esta funcion ya fue reemplazada por:
    // graficar_trayectorias_n(curvas, titulo, archivo)
    // Se deja para ver otras opciones
    //
    graficos.graficar_trayectorias2(X_euler, Y_euler, "Euler",
                                    X_exacta, Y_exacta,   "Exacta",
                                    "dy/dx = (x^2 - 1)/y^2 (Exacta vs Euler)",
                                    "PROG900 - API - NUMERICOS - 4.3 Grafico = Comparacion Euler y Rk4.png")




FINAL

Restringido: este ejemplo no puede ejecutarse en el Playground web porque la API requerida no está disponible en el sandbox.