Runge–Kutta methods

Συζητήσεις για την γλώσσα C και C++

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
hurry-o
Δημοσιεύσεις: 18
Εγγραφή: 19 Σεπ 2009 19:35

Runge–Kutta methods

Δημοσίευση από hurry-o » 16 Ιαν 2011 22:14

Καλήσπερα σε όλους. Έχω μια εργασία που πρέπει να βελτιώσω τον αλγόριθμο Runge–Kutta 4ης τάξης. ο κώδικας είναι ο εξής:

Κώδικας: Επιλογή όλων

#include <iostream>
#include <math.h>

using namespace std;

//--------------------------synartish f&#40;t,y&#41;---------------------------//
double f&#40;double t,double y&#41; &#123;

double fv;

fv=1+y*y;

return fv;
&#125;//f


//--------------------------kyrios programma------------------------------//
int main&#40;&#41; &#123;



//-------------------------dhlosh metavlitwn-----------------------------//
double a,b;
double y0;
double y&#91;100&#93;;
double h;
double t0=0;
double t&#91;100&#93;;
double k1,k2,k3,k4;
double t1,t2,t3;
double y1,y2,y3;
int N;




//----------------------------epexergasia--------------------------------//
cout<<"dwse to &#40; a &#41; &#58; "; cin>>a;
cout<<"dwse to &#40; b &#41; &#58; "; cin>>b;
cout<<"dwse thn arxikh synthikh &#40; y0 &#41; &#58; "; cin>>y0;
cout<<"dwse to bhma &#40; h &#41; &#58; "; cin>>h;
cout<<endl;

N=&#40;b-a&#41;/h;
t&#91;0&#93;=t0;  y&#91;0&#93;=y0;

cout<<"--------------------------------------------------------------"<<endl;
cout<<"j           t              h                y "<<endl;
cout<<"--------------------------------------------------------------"<<endl;
cout<<endl;

if &#40;t&#91;0&#93;<=b&#41;
&#123;
   	for &#40;int j=0; j<N+1; ++j&#41;
   	&#123;
      cout.setf&#40;ios&#58;&#58;fixed,ios&#58;&#58;floatfield&#41;;
      cout.precision&#40;6&#41;;

      k1=h*f&#40;t&#91;j&#93;,y&#91;j&#93;&#41;;

      t1=t&#91;j&#93;+&#40;1./2&#41;*h;
      y1=y&#91;j&#93;+&#40;1./2&#41;*k1;

      k2=h*f&#40;t1,y1&#41;;

      t2=t&#91;j&#93;+&#40;1./2&#41;*h;
      y2=y&#91;j&#93;+&#40;1./2&#41;*k2;

      k3=h*f&#40;t2,y2&#41;;

      t3=t&#91;j&#93;+h;
      y3=y&#91;j&#93;+k3;

      k4=h*f&#40;t3,y3&#41;;


            t&#91;j+1&#93;=t&#91;j&#93;+h;


            y&#91;j+1&#93;=y&#91;j&#93;+&#40;1./6&#41;*&#40;k1+2*k2+2*k3+k4&#41;;


//---------------------------exodos apotelesmatwn----------------------//

      		cout<<&#40;j&#41;<<"       t = ";
            cout.precision&#40;2&#41;;
            cout<<t&#91;j&#93;<<"      ";
            cout.precision&#40;4&#41;;
            cout<<"h = "<<h<<"       "<<"y  = ";
            cout.precision&#40;8&#41;;
            cout<<y&#91;j&#93;<<"   "<<endl;



      &#125;//for
cout<<endl;
cout<<"--------------------------------------------------------------"<<endl;

&#125;//if

int p; cin>>p;

&#125;//main


το σημείο που έχω κολλήσει είναι πως θα δίνω την συνάρτηση f από το πληκτρολόγιο,σκεφτήκα να ζητάω ένα string αλλα μετά πως θα το κάνω cout μέσα στην συνάρτηση ώστε να κάτσουν πάνω t και y.

Στην ουσία ζητάω τον τρόπο για να δίνει ο χρήστης μια μαθηματική συνάρτηση και να την χρησιμοποιώ στην εφαρμογή μου για να βγάζω αποτελεσμάτα.


Ευχαριστω.

Απάντηση

Επιστροφή στο “C, C++”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες