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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.95
Alexandr1966
25 / 25 / 1
Регистрация: 17.12.2012
Сообщений: 438
#1

Метод Рунге-Кутта 4 порядка (исправить код) - C++

29.04.2014, 15:18. Просмотров 2820. Ответов 6
Метки нет (Все метки)

Всем привет. Нужно решить пример методом Рунге-Кутта 4-го порядка точности.

Пример:
y=1/2*x*y
x0=0 - начало интервала.
y0=1 - конец интервала.
h=0.1 - шаг.

Ответ (из книги):
x=0 y=1
x=0.1 y=1.0025
x=0.2 y=1.0100
x=0.3 y=1,0277
x=0.4 y=1,0408
x=0.5 y=1.0645
x=0.6 y=1.0942
x=0.7 y=1,1303
и так далее до x=1.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
#include "stdafx.h"
#include <iostream>
#include <math.h>
using namespace std;
 
double f(double x, double y)
{
          return 1/2*x*y;               
}
 
int main(void){
   int i;
   double x,y,h,k1,k2,k3,k4;
   
   x=0;
   y=1;
   h=0.1;   
 
   for(i=1;i<=10;i++)
   {
      k1=f(x, y);
      k2=f(x+h/2, y+h/2*k1);
      k3=f(x+h/2, y+h/2*k2);
      k4=f(x+h, y+h*k3);
      x+=h;
      y= ????????????????????????????????
      printf("x=%.1lf   y=%.4lf     \n", x,y);
   }
 system("PAUSE");
}
Где y=????? вот видимо здесь что-то не то(

http://ru.wikipedia.org/wiki/%D0%9C%...82%D1%82%D1%8B

Добавлено через 1 час 34 минуты
Ребята помогите код исправить или дополнить
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.04.2014, 15:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Метод Рунге-Кутта 4 порядка (исправить код) (C++):

Метод Рунге-Кутта 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) { ...

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

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

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

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

Метод рунге-кутта 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...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Ev_Hyper
Заблокирован
29.04.2014, 15:41 #2
Alexandr1966, ошибка у вас в функции:
C++
1
y=1/2*x*y
а начальные условия:
y(0) = 1. Подставьте сами, и скажите какой ответ должен быть.
0
Alexandr1966
25 / 25 / 1
Регистрация: 17.12.2012
Сообщений: 438
29.04.2014, 17:20  [ТС] #3
Ev_Hyper, что значит ошибка в функции?! она такая задана, пример из учебника

Добавлено через 21 секунду
Ev_Hyper, Игрек НЕ ОТ НУЛЯ, а игрек нулевое

Добавлено через 16 секунд
Ev_Hyper, вы можете исправить код?

Добавлено через 50 минут
программисты помогите решить, горю
0
Ev_Hyper
Заблокирован
30.04.2014, 08:18 #4
Alexandr1966, я же вам доступно объяснил, что параметры некорректны. Если пример из книги, то скажите автора, главу и страницу.

Цитата Сообщение от Alexandr1966 Посмотреть сообщение
Ev_Hyper, Игрек НЕ ОТ НУЛЯ, а игрек нулевое
Alexandr1966, http://www.cyberforum.ru/cgi-bin/latex.cgi?{y}_{0} = y({x}_{0})=y(0)
0
zss
Модератор
Эксперт С++
6382 / 5947 / 1927
Регистрация: 18.12.2011
Сообщений: 15,264
Завершенные тесты: 1
30.04.2014, 08:45 #5
Цитата Сообщение от Alexandr1966 Посмотреть сообщение
return 1/2*x*y;
y всегда равен нулю, т.к. 1/2 равно нулю(целое делится на целое)
0
Alexandr1966
25 / 25 / 1
Регистрация: 17.12.2012
Сообщений: 438
30.04.2014, 10:06  [ТС] #6
Ev_Hyper, zss, короче вот код метода для моего примера рабочий и точный.
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
//Метод Рунге-Кутты
#include "stdafx.h"
#include "conio.h"
#include "math.h"
 
double f(double x, double y)
{
          return 0.5*x*y;               
}
 
int main(void)
{
   double x=0,y=1,h=0.1,k1,k2,k3,k4,d;
   printf("x0=0,  y=1,  h=0.1\n\n");
   for(x=0;x<=1;x+=h)
   {
      printf("%.1f    |   %.4f     \n", x,y);
      k1=h*f(x, y);
      k2=h*f(x+h/2, y+k1/2);
      k3=h*f(x+h/2, y+k2/2);
      k4=h*f(x+h, y+k3);
      d=(k1+2*k2+2*k3+k4)/6;
      y=y+d;
   }
_getch();
}
0
Ev_Hyper
Заблокирован
30.04.2014, 10:54 #7
Alexandr1966, если бы вы использовали редактор формул, то вам бы помогли гораздо быстрее...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.04.2014, 10:54
Привет! Вот еще темы с ответами:

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

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

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

Метод Рунге-Кутта 4 порядка для решения системы дифференциальных уравнений - C++
Имеется код программы, но по не очевидным для меня причинам работает не корректно, во время отладки выдает сообщения типа : Run-Time...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
30.04.2014, 10:54
Ответ Создать тему
Опции темы

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