Kashub's Code Barn - "aaa"

podświetlone jako qbasic (dodał(a) aaa @ 2009-01-27 13:00:26)

Twoja wyszukiwarka
Podświetl ten kod w:
Ostatnio dodane:
Losowe wpisy:
#include<iostream>
#include<math.h>
#include <fstream>
#include "calerf.h"
void rozw_analityczne (INT ile_x, INT ile_t, DOUBLE h, DOUBLE dt);
void bezp(INT ile_x, INT ile_t);
USING namespace std;
 
DOUBLE D = 1;   //wspolczynnik ciepla
DOUBLE t_max = 2;  // max t (na osi y)
DOUBLE x_max = 6*sqrt(D*t_max);  // max na osi x
DOUBLE lambda = 0.4; //lambda dla metody bezposredniej
 
 
INT main ()
{  
    CONST INT ile_x = 40; //krok na osi x
    DOUBLE h = x_max / ile_x;
    DOUBLE dt =  h*h*lambda / D;
    CONST INT ile_t = static_cast<CONST int> ( (t_max/dt) + 1 ); 
    //cout<<ile_t<<endl;
    rozw_analityczne(ile_x,ile_t,h,dt);
    bezp (ile_x, ile_t);
    SYSTEM ("pause");
}
 
 
void rozw_analityczne (INT ile_x, INT ile_t, DOUBLE h, DOUBLE dt)
{
     INT ile=0;
    DOUBLE **analit; 
    analit=new DOUBLE*[ile_t];
    FOR (INT i=0;i<ile_t;i++)
    analit[i]=new DOUBLE[ile_x];     
    DOUBLE t = 0,x = 0;
    ofstream file( "analit.txt" );
    FOR (INT j = 0; j < ile_t; j++)
    {
        file<<"Dla t="<<j<<endl<<endl;
        FOR (INT i = 0; i < ile_x ; i++)
        {
        analit[j][i] = erfc (x / (2*sqrt(D*t)));
        //cout<<analit[j][i]<<endl;
        file<<"x["<<i<<"] U(x,t) = "<<analit[j][i]<<endl;
        ile++;
        x = x+h;
        }
    file<<"\n\n"<<endl;
    x = 0;
    t = t+dt;
    }
    file.CLOSE();
}
 
void bezp(INT ile_x, INT ile_t)
{
     INT ile = 0;
    DOUBLE **bezpo;
    bezpo=new DOUBLE*[ile_t];
    FOR (INT i=0;i<ile_t;i++)
    bezpo[i]=new DOUBLE[ile_x];
     ofstream file( "bezpo.txt" );
     file<<"Dla t=0"<<endl<<endl;
     FOR(INT j=0; j<ile_x; j++)  //warunek poczatkowy
     {
         file<<"x["<<j<<"] U(x,t) = "<<bezpo[0][j]<<endl;
     }
     file<<"\n\n"<<endl;
     FOR( INT i = 0; i < ile_t; i++ ) //warunek brzegowy dla x0
     {
          bezpo[i][0] = 1;
     }        
     FOR( INT i = 0; i < ile_t; i++ ) //warunek brzegowy dla x ostatniego
     {
          bezpo[i][ile_x-1] = 1;
     }     
    FOR(INT i=1; i<ile_t; i++)
    {
            file<<"Dla t="<<i<<endl<<endl;
            FOR (INT j=1; j<ile_x; j++)
            {
             bezpo[i][j] =bezpo[i-1][j] + lambda*(bezpo[i-1][j-1] -2* bezpo[i-1][j] + bezpo[i-1][j+1]);
             ile++;
             file<<"x["<<j<<"] U(x,t) = "<<bezpo[i][j]<<endl;
             }
    file<<"\n\n"<<endl;
    }
    file.CLOSE();
}
 
 
| Wózki dla dzieci | | karma dla psa - sklep | | Programista Trójmiasto | | Skróć link | | Blog o książkach | | Załóż za darmo bloga | | Kody programów | | Wklejacz kodów | | Gnieżdżewo | | Opisy GG |