Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Sergey Popov                         2:5080/151.20  19 Dec 2001  21:05:22
 To : Nikolay Hatuntsev
 Subject : СДУ
 -------------------------------------------------------------------------------- 
 
 Break due to BPX CARBON.COPY!Nikolay (ET=20:05 seconds)
 
 WARNiNG! Nikolay Hatuntsev is trying to kill virus Sergey Popov!
 
  SP>> может кто подскажет алгоpитм численного pешение данной системы диф.
  SP>> уpавнений (инет пеpеpыл, нашел метод эйлеpа, pунге-кутта но для одного
  SP>> ду)
  SP>> Ъ x' = y
  SP>> А y' = -(a/b)*sin a  ;a и b заданные константы.
  SP>> н.у. y=0, x=x0
 
  NH> Решение системы из двух дифф. уравнений методом Рунге-Кутты 4-го порядка.
 
  я дико извеняюсь, но не мог бы ты подсказать _что_ в моем исходнике невеpно.
 теpзают смутные сомненья, что где-то я напоpтачил. или не понял.
 
  система:
  x'=y
  y'=sin(x)
 #include <iostream.h>
 #include <math.h>
 
 //типа протосы для шняжек.
 double yy(double x, double y, double t);
 double xx(double x, double y, double t);
 
 int main()
 {
 //   double t=0, y=1, x=1; //nachalnie uslovia
    double t0=0, y=0, x=1, t; //nachalnie uslovia
    int N, time;
    double dt=time/N;     //Vremennoy diskremenant
    double xn, yn, k1x, k2x, k3x, k4x, k1y, k2y, k3y, k4y;
 
    cout << "\nInput time: ";
    cin >> time;
    cout << "Input N: ";
    cin >> N;
 
    for(int i=0; i<N; i++)
    {
 //      t=i*dt;
       t=i*dt+t0;
       //иначе начальное значение времени нифига не влияет.
 
       k1x=dt*xx(x,y,t);
       k2x=dt*xx(x+k1x/2,y,t+dt/2);
       k3x=dt*xx(x+k2x/2,y,t+dt/2);
       k4x=dt*xx(x+k3x,y,t+dt);
 
       k1y=dt*yy(x,y,t);
       k2y=dt*yy(x,y+k1y/2,t+dt/2);
       k3y=dt*yy(x,y+k2y/2,t+dt/2);
       k4y=dt*yy(x,y+k3y,t+dt);
 
       xn=x+(k1x + 2*k2x + 2*k3x + k4x)/6;
       yn=y+(k1y + 2*k2y + 2*k3y + k4y)/6;
 
       y=yn;
       x=xn;
    }
  cout << "\ny=" << y << "\n";
  cout << "x=" << x;
 return 0;
 }
 //y'=sin(x)
       double yy(double x, double y, double t)
       {
          return (sin(x));
       };
 //x'=y
       double xx(double x, double y, double t)
       {
          return (y);
       }
 
 [e-mail: xpector(at)hotbox.ru] ъscooterъ ъagata kristiъ ъasmъ ъsoft iceъ ъidaъ
 xpector <underground lab> //ugg ыInformation must be free ыInfective life
 
 ... muzakщ:щ Darude - Drums Of New York
 --- GoldED/386 3.00.Beta5+
  * Origin: <underground system. BBS: D0WN. Mail: 22шш-04шш> (2:5080/151.20)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 СДУ   Sergey Popov   15 Dec 2001 17:55:21 
 СДУ   Nikolay Hatuntsev   16 Dec 2001 22:56:07 
 СДУ   Sergey Popov   19 Dec 2001 21:05:22 
Архивное /ru.algorithms/163653c20f3ab.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional