Iniciar sesiónCrear cuenta

# Dev - C++ - Ayuda con un codigo de Lorentz

Vista:

## Ayuda con un codigo de Lorentz

Publicado por Alejandra (7 intervenciones) el 19/04/2015 20:01:19
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
```#include <cmath>
```
```#include <cstdlib>
```
```#include <fstream>
```
```#include <iostream>
```
`using namespace std;`
` `
```#include "vector.h"
```
`using namespace cpl;`
` `
```double sigma = 10;                 //  Lorenz model constants in textbook
```
`double b = 8.0 / 3.0;`
`double r = 25;`
` `
```Vector f(Vector txyz) {            //  The Lorenz equations
```
`    double t = txyz[0];`
`    double x = txyz[1];`
`    double y = txyz[2];`
`    double z = txyz[3];`
`    Vector f(4);`
`    f[0] = 1;`
`    f[1] = - sigma * x + sigma * y;`
`    f[2] = - x * z + r * x - y;`
`    f[3] = x * y - b * z;`
`    return f;`
`}`
` `
```void RK4Step(                      //  4th order Runge-Kutta
```
```    Vector& y,                     //  extended solution vector
```
```    double h)                      //  step size
```
`{`
`    Vector k1 = h * f(y);`
`    Vector k2 = h * f(y + 0.5 * k1);`
`    Vector k3 = h * f(y + 0.5 * k2);`
`    Vector k4 = h * f(y + k3);`
`    y += (k1 + 2 * k2 + 2 * k3 + k4) / 6.0;`
`}`
` `
```Vector txyz(4);                    //  global variable to hold t,x,y,z
```
` `
```void initialize() {                //  initial conditions in textbook
```
`    txyz[0] = 0.0;`
`    txyz[1] = 0.0;`
`    txyz[2] = 1.0;`
`    txyz[3] = 0.0;`
`}`
` `
```double dt = 0.001;                 //  time step for integration
```
` `
```void findNextCrossing() {          //  find next Poincare section point
```
` `
```    Vector txyzOld = txyz;         //  save the old point
```
` `
`    while (true) {`
```        RK4Step(txyz, dt);         //  take a step
```
` `
```        // check whether y changes sign, i.e., crosses y = 0
```
`        if (txyz[2] * txyzOld[2] < 0)`
```            break;                 // stop stepping
```
`        else`
`            txyzOld = txyz;`
`    }`
` `
```    //  use linear interpolation like in projectile.cpp to find intersection
```
`    double r = txyzOld[2] / txyz[2];`
`    for (int i = 0; i < 4; i++)`
`        txyz[i] = (txyzOld[i] + r * txyz[i]) / (r + 1);`
`}`
` `
`int main(int argc, char *argv[]) {`
` `
`    cout << " Trajectory and Poincare Section for the Lorenz Attractor\n"`
`         << " using 4th order Runge-Kutta with time step dt = " << dt << "\n"`
`         << " sigma = " << sigma << ", b = " << b << ", r = " << r << endl;`
` `
`    initialize();`
`    cout << " initial conditions: x = " << txyz[1] << "\t"`
`         << ", y = "  << txyz[2] << "\t" << ", z = "  << txyz[3] << endl;`
` `
```    //  transient trajectory
```
`    double t = 50;`
`    string fileName = "transient.data";`
`    cout << " Integrating to time t = " << t << "\n"`
`         << " trajectory in file " << fileName << endl;`
`    ofstream dataFile(fileName.c_str());`
`    dataFile << txyz[0] << "\t" << txyz[1] << "\t"`
`             << txyz[2] << "\t" << txyz[3] << "\n";`
`    int step = 0;`
`    int skip = 5;`
`    while (txyz[0] < t) {`
`        RK4Step(txyz, dt);`
```        if (++step % skip != 0)    // record every skip steps
```
`           continue;`
`        dataFile << txyz[0] << "\t" << txyz[1] << "\t"`
`                 << txyz[2] << "\t" << txyz[3] << "\n";`
`    }`
`    dataFile.close();`
` `
```    //  Poincare section
```
`    fileName = "section.data";`
`    int points = 1000;`
`    cout << " Finding " << points << " Poincare section points at y = 0\n"`
`         << " section data in file " << fileName << endl;`
`    dataFile.open(fileName.c_str());`
`    for (int point = 0; point < points; point++) {`
`        findNextCrossing();`
`        dataFile << txyz[0] << "\t" << txyz[1] << "\t"`
`                 << txyz[2] << "\t" << txyz[3] << "\n";`
`    }`
`}`

Estoy intentando usar ese codigo pero me arroja error en el #include <vector.h> que puedo hacer?
Valora esta pregunta
0

## Ayuda con un codigo de Lorentz

Publicado por vangodp (287 intervenciones) el 20/04/2015 03:13:21
Pues ese es un fichero que debería estar en la misma carpeta. que el programa principal, caso contrario no funcionará.
Valora esta respuesta
0

## Ayuda con un codigo de Lorentz

Publicado por Alejandra (7 intervenciones) el 20/04/2015 03:37:15
No está, y no consigo ninguno internet con el que logré que funcione el codigo, help me
Valora esta respuesta
0

## Ayuda con un codigo de Lorentz

Publicado por vangodp (287 intervenciones) el 20/04/2015 12:29:05
Quizás ese te sirva aun que he probado y no tiene errores no se si es el que buscas.

Te los dejo para bajar como un archivo comprimido.

Debes crear un proyecto y ponerlo todo en la misma carpeta.

Además fiate que se llama Vector.hpp y Vector.cpp, en uno esta la declaración de la clase y en otro están las implementaciones.

Donde pone #include "Vector.h" cambialo para #include "Vector.hpp" o usa el que te pase en el comprimido.

Si tienes problemas para crear un proyecto dime cual ide usas y veré si te puedo ayudar.

Suerte
Valora esta respuesta
0

## Ayuda con un codigo de Lorentz

Publicado por Alejandra (7 intervenciones) el 20/04/2015 16:31:57
Hola gracias, Pero igual acabo de compilar y nada, igual me genera error en la parte de vectores, puedes ver el codigo y decirme que estoy haciendo mal, o que te parece que esta mal, Coloque el #include <vector.hpp> pero igual no compila, y cree un proyecto y meti las tres cosas que me pasaste. Yo utilizo DEV C++
Valora esta respuesta
0

## Ayuda con un codigo de Lorentz

Publicado por Alejandra (7 intervenciones) el 20/04/2015 17:54:15
Listo ya compila todo. Muchas Gracias.
Valora esta respuesta
0

## Ayuda con un codigo de Lorentz

Publicado por vangodp (287 intervenciones) el 20/04/2015 18:03:51
Lo he encontrado por que el que lo creo puso un nombre de espacio bien peculiar namespace cpl XDD. Eso fue lo que use para encontrarlo XD

Suerte
Valora esta respuesta
0

## Ayuda con un codigo de Lorentz

Publicado por Alejandra (7 intervenciones) el 20/04/2015 18:18:03
Bueno jeje ahora te voy a molestar con lo siguiente tengo este codigo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
```#include <iostream>
```
```#include <math.h>
```
` `
```#ifdef __APPLE__
```
```#include <OpenGL/OpenGL.h>
```
```#include <GLUT/glut.h>
```
```#else
```
```#include <glut.h>
```
```#endif
```
` `
`void myinit() {`
` `
```	// set the background color
```
`	glClearColor(0.0f, 0.0f, 0.0f, 1.0f);`
` `
```	// set the foreground (pen) color
```
`	glColor4f(1.0f, 1.0f, 1.0f, 1.0f);`
`}`
` `
`void mydisplay() {`
` `
```	// clear the screen
```
`	glClear(GL_COLOR_BUFFER_BIT);`
` `
```	// swap the buffers
```
`	glutSwapBuffers();`
`}`
` `
`void mykey(unsigned char mychar, int x, int y) {`
` `
```	// exit the program when the Esc key is pressed
```
`	if (mychar == 27) {`
`		exit(0);`
`	}`
` `
`}`
` `
`int main (int argc, char **argv) {`
` `
```	// initialize GLUT
```
`	glutInit(&amp argc, argv);`
` `
```	// set up our display mode for color with alpha and double buffering
```
`	glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE);`
` `
```	// create a 400px x 400px window
```
`	glutInitWindowSize(400, 400);`
`	glutCreateWindow("Strange Attractors in C++ and OpenGL Tutorial");`
` `
```	// register our callback functions
```
`	glutDisplayFunc(mydisplay);`
`	glutKeyboardFunc(mykey);`
` `
```	// call our initialization function
```
`	myinit();`
` `
```	// start the program
```
`	glutMainLoop();`
` `
`    return 0;`
`}`

que me esta generando este error... error: 'amp' was not declared in this scope
glutInit(&amp argc, argv);
^
pero no entiendo porque, tengo entendido que asi es como declaro eso, espero tu consejo, te adjunto el glut.h y el codigo
Valora esta respuesta
0

## Ayuda con un codigo de Lorentz

Publicado por vangodp (287 intervenciones) el 20/04/2015 23:27:39
Lo siento, pero de open gl o lo que sea voy pillao XD
Valora esta respuesta
0