0

Runge-Kutta is supposed to be used to obtain the numerical solution to a boundary layer problem. I'm trying to get the output to go to excel where it will show me the values for G1, G2 and G3 but it won't go to excel. Please help!

#include <iostream>
#include <cmath>
#include <iomanip>
#include <fstream>

using namespace std;


int main ()
{
	double totalerror, allowederror;
	double G1, G2, G3;
	double firstguess;
	double n;
	double ystar1, ystar2, ystar3;
	double h;
	double fstar1, fstar2, fstar3;
	double y1, y2, y3;
	double secondguess, thirdguess;
	double G1guess, G2guess;
	const double pi = acos(-1.0);
	totalerror=10;

	ofstream results;
	results.open ("output.xls");
	

	/*
	cout << "Please enter the allowed error." ;
	cin >> allowederror;

	cout << "Please enter the step size. "; 
	cin >> h;

	cout << "Please enter the first guess for G3. ";
	cin >> firstguess;

	cout << "Please enter the second guess for G3. ";
	cin >> secondguess;
	*/
	allowederror = .001;
	h = .01;
	firstguess = 1;
	secondguess = .1;


	while (totalerror > allowederror)
	{

	G1 = 0;
	G2 = 0;
	G3 = firstguess;
	n = 0;
	while (n < 10)
	{

	ystar1 = G1 + h*G2; 
	ystar2 = G2 + h*G3;
	ystar3 = G3 + h*-G1*G3;
	
	fstar1 = ystar2; 
	fstar2 = ystar3;
	fstar3 = -ystar1*ystar3;

	y1 = G1 + 0.5*h*(G2+fstar1);  //new y values
	y2 = G2 + 0.5*h*(G3+fstar2);
	y3 = G3 + 0.5*h*(-G1*G3+fstar3);

	G1 = y1; 
	G2 = y2;
	G3 = y3;

	n = n+h;
	}

	G1guess = G2;

	G1 = 0;
	G2 = 0;
	G3 = secondguess;
	n = 0;
	while (n < 10)
	{

	ystar1 = G1 + h*G2; 
	ystar2 = G2 + h*G3;
	ystar3 = G3 + h*-G2*G3;
	
	fstar1 = ystar2; 
	fstar2 = ystar3;
	fstar3 = -ystar1*ystar3;

	y1 = G1 + 0.5*h*(G2+fstar1);  
	y2 = G2 + 0.5*h*(G3+fstar2);
	y3 = G3 + 0.5*h*(-G1*G3+fstar3);

	G1 = y1; 
	G2 = y2;
	G3 = y3;

	n = n+h;

	}
	G2guess = G2;


	double m = (G2guess-G1guess)/(secondguess-firstguess);
	double b = G1guess - m*firstguess;
	thirdguess = (1-b)/m;

	double firsterror = abs(1-G1guess);
	double seconderror = abs(1-G2guess);

	if (firsterror < seconderror)
	{
		firstguess = firstguess;

	}
	else
	{
		firstguess = secondguess;
	}

	secondguess = abs(thirdguess);

	
	totalerror = abs(secondguess - firstguess);
	}

	G1 = 0;
	G2 = 0;
	G3 = thirdguess;
	n = 0;
	while (n < 2*pi)
	{

	ystar1 = G1 + h*G2; 
	ystar2 = G2 + h*G3;
	ystar3 = G3 + h*-G1*G3;
	
	fstar1 = ystar2; 
	fstar2 = ystar3;
	fstar3 = -ystar1*ystar3;

	y1 = G1 + 0.5*h*(G2+fstar1);  
	y2 = G2 + 0.5*h*(G3+fstar2);
	y3 = G3 + 0.5*h*(-G1*G3+fstar3);

	G1 = y1; 
	G2 = y2;
	G3 = y3;

	results << n << '\t' <<  G2 << endl;

	n = n+h;


	}
	
	results.close();

	return 0;
}
2
Contributors
1
Reply
2
Views
8 Years
Discussion Span
Last Post by jencas
This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.