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

Рунге-Кутта в С++ (ошибки) - C++

Восстановить пароль Регистрация
 
Dammir
0 / 0 / 0
Регистрация: 04.01.2014
Сообщений: 6
04.01.2014, 02:29     Рунге-Кутта в С++ (ошибки) #1
Доброй ночи.
Решаю ОДУ методом Рунге-Кутта , и такая непонятка выходит, что аналитическое (в excel) и численное (результат проги) расходятся до тех пор, пока аргумент х отрицательный. В чем ошибка - не пойму.
Рунге-Кутта в С++ (ошибки)
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
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <locale.h>
double f(double x) {
    return x*exp(2*x+3);
}
int main(void) {
    float  h, a, b;
    double y, x, p1, p2, p3, p4;
    int n = 1, k;
    const int i = 10;
    FILE *t = fopen("odu.txt", "w");
    setlocale(LC_ALL, "Russian");
    printf("Интервал: ");
    scanf("%f %f", &a, &b);
    printf("Кол-во точек: ");
    scanf("%d", &k);
    printf("Начальное условие: y(%f)= ", a);
    scanf("%lf", &y);
    x = a;
    h = (b - a) / k;  //Нахождение шага h
    h = h / i;
    printf("N     x         y \n");
    fprintf(t, "N     x         y \n");
    while (x < b){
        if (n%i == 0)   {
            printf("%d %f %f\n", n / i, x, y);
            fprintf(t, "%d %f %f\n", n / i, x, y);
        }
        p1 = f(x);
        p2 = f(x + h / 2);
        p3 = f(x + h / 2);
        p4 = f(x + h);
        y = y + h / 6 * (p1 + 2* p2 + 2 * p3 + p4);
        x = x + h; n++;
    }
    getch();
    return 0;
}
Вложения
Тип файла: txt код проги.txt (887 байт, 18 просмотров)
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.01.2014, 02:29     Рунге-Кутта в С++ (ошибки)
Посмотрите здесь:

Метод Рунге-Кутта. C++
метод Рунге-Кутта C++
Алгоритм Рунге-Кутта C++
метод Рунге-Кутта C++
Метод Рунге-Кутта C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ev_Hyper
 Аватар для Ev_Hyper
1805 / 1626 / 435
Регистрация: 15.12.2013
Сообщений: 5,773
04.01.2014, 12:05     Рунге-Кутта в С++ (ошибки) #2
Dammir, а вы уверены что формула в Exel та же, что и в программе?
S_el
1906 / 1501 / 295
Регистрация: 15.12.2013
Сообщений: 5,912
04.01.2014, 12:07     Рунге-Кутта в С++ (ошибки) #3
Цитата Сообщение от Dammir Посмотреть сообщение
Доброй ночи.
Решаю ОДУ методом Рунге-Кутта , и такая непонятка выходит, что аналитическое (в excel) и численное (результат проги) расходятся до тех пор, пока аргумент х отрицательный. В чем ошибка - не пойму.
В Excel тоже численное решение.
Ev_Hyper
 Аватар для Ev_Hyper
1805 / 1626 / 435
Регистрация: 15.12.2013
Сообщений: 5,773
04.01.2014, 12:08     Рунге-Кутта в С++ (ошибки) #4
Dammir, а вообще результат довольно странный, ошибка наверное еще кое-где.
S_el
1906 / 1501 / 295
Регистрация: 15.12.2013
Сообщений: 5,912
04.01.2014, 12:09     Рунге-Кутта в С++ (ошибки) #5
У вас формулы не правильные.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,154
Завершенные тесты: 1
04.01.2014, 12:18     Рунге-Кутта в С++ (ошибки) #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Все правильно работает.
Вы забыли, что в русской кодировке вместо точки надо вводить запятую.
S_el
1906 / 1501 / 295
Регистрация: 15.12.2013
Сообщений: 5,912
04.01.2014, 12:25     Рунге-Кутта в С++ (ошибки) #7
Цитата Сообщение от zss Посмотреть сообщение
Все правильно работает.
Вы забыли, что в русской кодировке вместо точки надо вводить запятую.
Вот оно в чем дело :lol: , спасибо.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.01.2014, 18:13     Рунге-Кутта в С++ (ошибки)
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Dammir
0 / 0 / 0
Регистрация: 04.01.2014
Сообщений: 6
04.01.2014, 18:13  [ТС]     Рунге-Кутта в С++ (ошибки) #8
да, в excel у меня фун-ия проинтегрированная с постоянной интегрирования, а в проге у меня ее производная стоит,как требует Рунге-Кутта.)

Добавлено через 1 минуту
был бы благодарен, если укажете это место

Добавлено через 14 минут
Спасибо, вопрос исчерпан
Yandex
Объявления
04.01.2014, 18:13     Рунге-Кутта в С++ (ошибки)
Ответ Создать тему
Опции темы

Текущее время: 16:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru