Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Ирина0101
0 / 0 / 0
Регистрация: 21.11.2013
Сообщений: 3
#1

Метод Рунге-Кутта 4 порядка - C++

04.12.2013, 23:36. Просмотров 559. Ответов 0
Метки нет (Все метки)

Товарищи-знатоки помогите пожалуйста в решении следующей задачи:

Применяя метод Рунге-Кутта 4го порядка точности, найти решение задачи в следующих точках 0.1,0.3,0.4. Нарисовать фазовый портрет на плоскости. Вычисление провести с точностью 0.01, t<=0.5.

http://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{dx1}{dt}=-x1*x2
http://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{dx2}{dt}={x1}^{2}+{x2}^{2}
http://www.cyberforum.ru/cgi-bin/latex.cgi?x1(0)=-2
http://www.cyberforum.ru/cgi-bin/latex.cgi?x2(0)=0

Мой код не доработан,помогите исправить:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include<iostream>
#include<cmath>
#include<cstdlib>
using namespace std;
 
double f1 (double t,double y, double x)
{
       double a=(-1)*x*y;
       return a;          
}
double f2 (double t,double y, double x)
{
       double a=x*x+y*y;
       return a;          
}
 
int main()
{ 
    double x,y,x0=-2,y0=0,h=0.1,n=10,t=0.5;
    double k0,k1,k2,s0,s1,s2,X,Y,k3,s3;
    double x_n=-2,y_n=0;
    double eps=0.01;
    do
    {
        k0=h*f1(t,y0,x0);
        s0=h*f2(t,y0,x0);
        k1=h*f1(t+h/2,y0+k0/2,x0+s0/2);
        s1=h*f2(t+h/2,y0+k0/2,x0+s0/2);
        k2=h*f1(t+h/2,y0+k0/2,x0+s0/2);
        s2=h*f2(t+h/2,y0+k0/2,x0+s0/2);
        k3=h*f1(t+h,y0+k0,x0+s0);
        s3=h*f2(t+h,y0+k0,x0+s0);
        y=y0+(k0+2*k1+2*k2+k3)/6;
        x=x0+(s0+2*s1+2*s2+s3)/6;
        y0=y;
        x0=x;
        cout<<"t="<<t<<" "<<"y="<<y<<" "<<"x="<<x<<endl;
        t=t+h;
    }
    while(t<=n);
    {
        X=x;
        x0=x_n;
        Y=y;
        y0=y_n;
        h=h/2;
        cout<<X<<endl;
        t=0;
        do
        {
            k0=h*f1(t,y0,x0);
                s0=h*f2(t,y0,x0);
                k1=h*f1(t+h/2,y0+k0/2,x0+s0/2);
                s1=h*f2(t+h/2,y0+k0/2,x0+s0/2);
                k2=h*f1(t+h/2,y0+k0/2,x0+s0/2);
                s2=h*f2(t+h/2,y0+k0/2,x0+s0/2);
                k3=h*f1(t+h,y0+k0,x0+s0);
                s3=h*f2(t+h,y0+k0,x0+s0);
                y=y0+(k0+2*k1+2*k2+k3)/6;
                x=x0+(s0+2*s1+2*s2+s3)/6;
            y0=y;
            x0=x;
            cout<<"t="<<t<<" "<<"y="<<y<<" "<<"x="<<x<<endl;
            t=t+h;
        }
        while(t<=n);
    }
    while((fabs(x-X)<eps)||(fabs(y-Y)<eps))
    cout<<"Y="<<y<<" "<<"X="<<x<<endl;
    system("pause");
    return 0;
}
У меня происходит зацикливание,ребята помогите)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.12.2013, 23:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Метод Рунге-Кутта 4 порядка (C++):

Метод рунге-кутта 3 порядка - C++
дана функция d(y(x))/dx=e^x-2y(x) Нач. условия y(0)=e Код#include&lt;stdio.h&gt; #include&lt;conio.h&gt; #include&lt;math.h&gt; float fun(float...

Метод Рунге-Кутта 3 порядка - C++
Начерикал что-то,вроде бы работает,но не уверен,да и не доходит,как под условия сделать задачи,тыкните,пожалуйста #include &quot;stdafx.h&quot; ...

Метод Рунге-Кутта 4-го порядка - C++
Правильно ли я записал выражения для коэффициентов моего уравнения(система Лоренца) #include &lt;math.h&gt; #include &lt;stdlib.h&gt; ...

Метод Рунге-Кутта 2-го порядка - C++
Написал код программы. С компиляцией вроде бы нет проблем. А цикл for воспринимать не хочет. Программа просто его пропускает. Помогите...

Метод Рунге-Кутта 4-го порядка - C++
#include &lt;stdio.h&gt; #include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; double f(double x, double y) { ...

Метод Рунге-Кутта 4 порядка - C++
Помогите найти ошибку в методе рунге-Кутта 4 порядка System::System(double m, const Vector3D&amp; g, double C, double f, double p, double S,...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.12.2013, 23:36
Привет! Вот еще темы с ответами:

Метод Рунге-Кутта второго порядка - C++
В общем есть задание. Задание к-е на скрине: Ток в электрической цепи описывается дифференциальным уравнением (которое на скрине),...

Метод Рунге-Кутта четвертого порядка - C++
Доброго времени суток. Задание по выч. мату. координаты х рассчитываются просто по шагу, но у присваивается значение начальной точки и не...

Метод Рунге-Кутта 4 порядка (исправить код) - C++
Всем привет. Нужно решить пример методом Рунге-Кутта 4-го порядка точности. Пример: y=1/2*x*y x0=0 - начало интервала. y0=1 -...

Метод Рунге-Кутта пятого порядка, модификация Мерсона - C++
помогите сделать этот метод при условии - автоматический выбор шага по контрольным членами((( заранее спасибо!!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru