es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo trazar un gráfico 3D en OpenModelica?

He escrito la clase LorenzAttractor y he trazado correctamente y y z en función de x en 2D. ¿Es posible trazar esto en 3D?

Modelica
model LorenzAttractor
parameter Real sigma = 10;
parameter Real rho = 28;
parameter Real beta = 8/3;
Real x (start=1);
Real y (start = 1);
Real z (start = 1);
equation
der(x) = sigma(y-x);
der(y) = x * (rho-z) – y;
der(z) = x
y – beta*z;
end LorenzAttractor;

Trayectoria de Lorenz Attractor graficando y y z contra x

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, es posible trazar el Atractor de Lorenz en 3D. Una forma de hacerlo es utilizando una herramienta de trazado que permita la visualización en 3D, como la función de trazado en 3D incorporada en OpenModelica. El código a continuación muestra un ejemplo de cómo trazar el Atractor de Lorenz en 3D utilizando OpenModelica:

    model LorenzAttractor3D
      parameter Real sigma = 10;
      parameter Real rho = 28;
      parameter Real beta = 8/3;
      Real x (start=1);
      Real y (start = 1);
      Real z (start = 1);
    equation
      der(x) = sigma*(y-x);
      der(y) = x * (rho-z) - y;
      der(z) = x*y - beta*z;
    end LorenzAttractor3D;
    
    model TestLorenzAttractor3D
      LorenzAttractor3D lorenz;
      import OpenModelica.Scripting.*;
      Real tMax = 100;
      Real dt = 0.01;
      Real t;
      der(t) = 1;
    equation
      when time >= tMax then
        terminate("Simulation finished successfully");
      end when;
      lorenz.x = 1;
      lorenz.y = 1;
      lorenz.z = 1;
      simulate(TestLorenzAttractor3D, startTime = 0, stopTime = tMax, 
        numberOfIntervals = ceil(tMax/dt), tolerance = 1e-6, 
        resultFile = "LorenzAttractor3D_res.mat", method = "dassl");
      plot3d(lorenz.x, lorenz.y, lorenz.z);
    end TestLorenzAttractor3D;
    

    El código anterior define un nuevo modelo LorenzAttractor3D que es idéntico al modelo original LorenzAttractor, excepto por el nombre. El nuevo modelo luego se utiliza en TestLorenzAttractor3D, que importa la biblioteca de scripts de OpenModelica y establece una simulación del modelo LorenzAttractor3D. La simulación se ejecuta utilizando la función simulate, y la trayectoria resultante se traza en 3D utilizando la función plot3d.

    Tenga en cuenta que esta es solo una forma de trazar el Atractor de Lorenz en 3D utilizando OpenModelica, y existen otras herramientas y técnicas de trazado disponibles.

Comments are closed.