<div dir="ltr"><div>Buenas tardes me gustaria saber si me puden hacer el favor y me ayudan con este codigo ya que me sale el error <br><br>RungeKutta4V2.C:37:8: error: expected unqualified-id before numeric constant<br>RungeKutta4V2.C:44:8: error: expected unqualified-id before numeric constant <br>
</div>el codigo es <br><br><br>/* From: "COMPUTATIONAL PHYSICS, 2nd Ed"
<br> by RH Landau, MJ Paez, and CC Bordeianu
<br> Copyright Wiley-VCH, 2007.
<br> Electronic Materials copyright: R Landau, Oregon State Univ, 2007;
<br> MJ Paez, Univ Antioquia, 2007; & CC Bordeianu, Univ Bucharest, 2007
<br> Support by National Science Foundation
<br>*/
<br>// Edwin Munevar
<br>// RungeKutta4.C: 4th order Runge-Kutta solution adapted for any kind of acceleration
<br>
<br>#include <stdio.h>
<br>#include<iostream>
<br>#include<math.h>
<br> <br>#define N 2 // number of equations: y(t) and v(t)
<br>#define dist 0.1 // stepsize
<br>#define MIN 0.0 // minimum x
<br>#define MAX 200.0 // maximum x
<br>#define b1 0.5 //F=-b1*v
<br>#define a1 0.2 //F=-a1*v*v
<br>#define muc 0.5
<br>#define mue 0.8
<br>#define fN 9.8
<br>#define k 1.0
<br>#define m 1.0
<br>#define Damping 0 //Choose the type of damping
<br>#define om 3
<br>#define mu 0.5
<br>using namespace std;
<br> <br> <br>//-------------------
<br>//Global variables
<br>double omega2 = k/m;
<br>double gb1= b1/m;
<br>double ga1= a1/m;
<br>double mu = 0.5;
<br> <br>//-------------------
<br>//Functions
<br>void runge4(double, double* , double, double);
<br>double f(double, double*, double, int);
<br>double Damp(double*, double);
<br>double mu = (double *);
<br> <br>//--------------------------------------
<br>main(){
<br> //Declaration of variables;
<br> double t=0.0, y[N], a;
<br> double yant, yact;
<br> double Et, Ec, Ep;
<br> <br> //Save data in Runge4.dat
<br> FILE *output;
<br> output= fopen("Runge4.dat","w");
<br>
<br> y[0]= 1.0;// initial position
<br> y[1]= 0.0;// initial velocity
<br>
<br> //Damping .......
<br> a = Damp(y, t);
<br> fprintf(output, "%f\t%f\t%f\t%f\n", t, y[0], y[1], a);
<br>
<br> for (t= MIN; t <= MAX ; t += dist){
<br> yant = y[1];
<br> runge4(t, y, dist, a);
<br> yact = y[1];
<br> //Damping......
<br> a = Damp(y,t);
<br> fprintf(output, "%f\t%f\t%f\t%f\n", t, y[0], y[1], a);
<br> }
<br> printf("data stored in Runge4.dat\n");
<br> fclose(output);
<br>} //End of main program
<br> <br> <br>//------------------------------------------------------
<br>//Runge-Kutta function
<br>void runge4(double t, double y[], double step, double a) { // rk subroutine
<br> double f(double t, double y[], double a, int i);
<br> double Dt = step/2.0, // the midpoint
<br> yt1[N], yt2[N], yt3[N], k1[N], k2[N], k3[N],k4[N]; // for Runge-Kutta
<br> int i;
<br> for (i = 0; i<N; i++){
<br> k1[i] = f(t, y, a, i);
<br> yt1[i]= y[i]+0.5*(k1[i]*step);
<br> }
<br> for (i = 0; i<N; i++){
<br> //Damping.....
<br> a = Damp(yt1,t);
<br> k2[i] = f(t+Dt, yt1, a, i);
<br> yt2[i]= y[i]+0.5*(k2[i]*step);
<br> }
<br> for (i = 0; i<N; i++){
<br> //Damping.....
<br> a = Damp(yt2,t);
<br> k3[i] = f(t+Dt, yt2, a, i);
<br> yt3[i]= y[i]+(k3[i]*step);
<br> }
<br> for (i = 0; i<N; i++){
<br> //Damping....
<br> a = Damp(yt3,t);
<br> k4[i]= f(t + step, yt3, a, i);
<br> }
<br> <br> for (i = 0; i<N; i++)
<br> y[i] += (k1[i]+2*k2[i]+2*k3[i]+k4[i])*step/6.0; //Runge-Kutta 4th order
<br>}
<br> <br> <br>//---------------------------------------------
<br>double f(double t, double y[], double a, int i) {// RHS function
<br> if (i == 0) return(y[1]); // RHS of first equation
<br> if (i == 1) return(a); // RHS of second equation
<br>}
<br> <br> <br>//---------------------------------------------
<br>//Damping functions
<br>double Damp(double yf[],double t){
<br>
<br> double res;
<br> //F=0
<br> if(Damping == 0)
<br> res= -mu*yf[1]*(yf[0]*yf[0] - 1);<br> <br> //F=-bv
<br> else if(Damping == 1)
<br> res= -omega2*yf[0]-gb1*yf[1];
<br> //F=-b*v*v
<br> else if(Damping == 2){
<br> if(yf[1] >= 0.0)
<br> res= -omega2*yf[0]-ga1*yf[1]*yf[1];
<br> else
<br> res= -omega2*yf[0]+ga1*yf[1]*yf[1];
<br> }
<br> //F = -muc*N
<br> else if(Damping == 3){
<br> if(yf[1] >= 0.0)
<br> res= -omega2*yf[0]-muc*fN;
<br> else
<br> res= -omega2*yf[0]+muc*fN;}
<br> else{
<br> cout << "Unknown damping" << endl;
<br> return -1;}
<br>
<br> return res;
<br>}<br></div>