[go: up one dir, main page]

Menu

Home

Miguel Alejan. Moreno Barrientos

Ir a documentación online de Usuario y Desarrollador


Ejemplo con vectores

En este ejemplo se muestran algunas coordenadas de una circunferencia usando su ecuación vectorial:

package jme;

import java.text.DecimalFormat;

import jme.Expresion;
import jme.excepciones.ExpresionException;
import jme.terminales.VectorEvaluado;

/**
 *  Obtener los puntos de una circunferencia de
 *  forma paramétrica usando JME.
 *
 *  Se usará la expresión [a,b]+r[cos(t),sin(t)].
 *  Alternativamente [a+r*cos(t),b+r*sin(t)].
 */
public class Circunferencia
{
    public static void main( String[] args )
    {
        try
        {
            // Establecer expresión y constantes
            final Expresion paramCirc = new Expresion( "[a,b]+r[cos(t),sin(t)]" );  // forma paramétrica de una circunferencia centrada en (a,b) de radio 'r'
            paramCirc.setConstante( "a", 3 ).setConstante( "b", 1 );  // se establece el centro de la circunferencia
            paramCirc.setConstante( "r", 2 );  // se establece el radio (se pueden establecer las constantes en una línea, o usando varias)


            // iterar sobre variable paramétrica 't' desde 0 a 2pi
            final DecimalFormat df = new DecimalFormat( "0.000" );
            for ( double t = 0; t < 2*Math.PI; t += 0.1 )
            {
                paramCirc.setVariable( "t", t );
                final VectorEvaluado resultado = paramCirc.evaluarAVector();  // el resultado será un vector bidimensional (x,y). Se puede comprobar con el método '#esVector'

                final double x = resultado.getNumero(0).doble(),
                             y = resultado.getNumero(1).doble();
                System.out.println( "t(" + df.format(t) + ") -> (" + df.format(x) + "," + df.format(y) + ")"  );
            }
        }
        catch ( ExpresionException e )
        {
            System.err.println( e.getMessage() );
        }
    }
}

Output:
t(0,000) -> (5,000,1,000)
t(0,100) -> (4,990,1,200)
t(0,200) -> (4,960,1,397)
t(0,300) -> (4,911,1,591)
t(0,400) -> (4,842,1,779)
t(0,500) -> (4,755,1,959)
t(0,600) -> (4,651,2,129)
t(0,700) -> (4,530,2,288)
t(0,800) -> (4,393,2,435)
t(0,900) -> (4,243,2,567)

...


REPL Mode

El jar ejecutable lanza el modo REPL.

Aproximación de la integral con redondeo y sin redondeo:

>>> int(abs(sin(x)),x,0,pi2,1e6)

     ==> RealDoble: 4.00000000000007

    (parse: 279µs(0%) / eval: 1,24s(100%) / total: 1,24s)

>>> roundp si
roundp=true  prec=1.0E-12
>>> int(abs(sin(x)),x,0,pi2,1e6)

     ==> RealDoble: 4

    (parse: 298µs(0%) / eval: 1,005s(100%) / total: 1,005s)

>>>