Program dotyczy problemu jak w temacie. Niestety wyniki powstałe różnią się od tych przykładowych... nie potrafię zidentyfikować błędu . Pomoże ktoś ?
Opis metod i przykłady działania :
http://oen.dydaktyka.agh.edu.pl/dydaktyka/matematyka/c_metody_numeryczne/wyklad/mrk.htm
Kod Programu :
#include <iostream>
#include <iomanip>
using namespace std;
//Define constants
#define X0 0
#define Y0 1
#define H 0.1
#define N 2
//Define Functions
double f(double x, double y);
double runge(double x, double y);
//Main Function
int main(double x, double y)
{
cout<<"\t******"
<<"\n\n";
cout<<" "
<<setw(25)<<"x"<<setw(27)<<"\ty"
<<"\n"
<<"\t----------------------------------------------------------"
<<"\n";
y=Y0;
for(int i=1;i<=10;i++)
{
x=X0+(i*H);
y=runge(x,y);
cout<<left<<setw(4)<<i<<"|"
<<setprecision(8)<<left<<setw(20)<<"\t"<<x
<<setprecision(8)<<left<<setw(20)<<"\t"<<y;
cout<<"\n\n";
}
cout<<"\n\n";
system("pause");
return 0;
}
double runge(double x, double y)
{
double K1 = (H * f(x,y));
double K2 = (H * f((x + (1 / 2 * H)), (y + (1 / 2 * K1))));
double K3 = (H * f((x + (1 / 2 * H)), (y + (1 / 2 * K2))));
double K4 = (H * f((x + H), (y + K3)));
double runge = y + ((K1 +2*K2 + 2*K3 + K4)/6);
return runge;
}
double f(double x, double y)
{
double f = x+y;
return f;
}