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

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

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

подскажите где ошибка - метод конечных разностей для уравнения в частных производных - C++

07.11.2013, 14:33. Просмотров 418. Ответов 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
int main ( void )
{
    setlocale(LC_ALL, "rus");
 
    int I = 10, J = 30, i, j;
    double  T = 3.3, h_x = 0.1, h_t = 0.11, epsilon = h_t + pow(h_x, 2), c;
    double **u = new double *[I + 1];
    for (i = 0; i <= I; i++) u[i] = new double [J + 1]; 
 
    cout<< "Схема может быть неустойчива  при значениях Х :\n";
    for (i = 0; i <= I; i++)
    {
        c = 3 * (1.1 - 0.5 * h_x * i) * h_t * pow(h_x, -2);
        if (c > 0.5) cout << i * h_x << "   ";
    }
    cout <<"\n";
    
    //нулевой слой (j = 0)
    for (i = 0; i <= I; i++)
    {
        u [i][0] = 0.01 * (1 - i * h_x); //НУ, несоответствие ГУ и НУ!
    }
    for (i = 1; i < I; i++)
    //последующие слои
        for (j = 0; j <= J; j++) //расчёт j + 1 - го слоя по j-му
        {
            u [0][j + 1] = 0; //ГУ
            u [i][j + 1] = u [i][j] + h_t * (3 * (1.1 - 0.5 * h_x * i) * (u [i + 1][j] -2 * u [i][j] + u [i - 1][j])/ pow(h_x, 2) + exp(h_t * j) - 1);
            u [I][j + 1] = 0; //ГУ
        }
    
 
    ofstream out;
    out.open ("D:\\proga7.txt");
 
    out << "U = U(0.6, t):\n";
    cout << "U = U(0.6, t):\n";
    for (i = 0; i <= J; i++)
    {
        out << h_t * i <<"\t"<< u [6][i] <<"\n";
        cout << h_t * i <<"\t"<< u [6][i] <<"\n";
    }
    out << "\n U = U(x, 0.33):\n";
    cout << "\n U = U(x, 0.33):\n";
    for (i = 0; i <= I; i++)
    {
        out << h_x * i <<"\t"<< u [i][3] <<"\n";
        cout << h_x * i <<"\t"<< u [i][3] <<"\n";
    }
    out << "\n U = U(x, 0.66):\n";
    cout << "\n U = U(x, 0.66):\n";
    for (i = 0; i <= I; i++)
    {
        out << h_x * i <<"\t"<< u [i][6] <<"\n";
        cout << h_x * i <<"\t"<< u [i][6] <<"\n";
    }
    out << "\n U = U(x, 1.32):\n";
    cout << "\n U = U(x, 1.32):\n";
    for (i = 0; i <= I; i++)
    {
        out << h_x * i <<"\t"<< u [i][12] <<"\n";
        cout << h_x * i <<"\t"<< u [i][12] <<"\n";
    }
    out.close();
    getch();
    return 0;
}
Добавлено через 17 минут
также мне нужно построить с точностью 0.0001, как это можно сделать?
знаю лишь формулу O(\tau+h^2), что означает скорость сходимости схемы к исходной задачи
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.11.2013, 14:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос подскажите где ошибка - метод конечных разностей для уравнения в частных производных (C++):

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

Метод конечных разностей для краевой задачи - C++
Помогите пожалуйста. Надо написать программу, которая решает краевую задачу для ОДУ 2 порядка методом конечных разностей. Никак не могу...

Нахождение конечных разностей в с++ - C++
Очень нужна помощь, недавно начала осваивать с++, нужно написать программу, которая вычисляет конечные разности, вот мой код, не могу...

Итерационное вычисление частных производных - C++
доброго времени суток в задачах по численным методам столкнулся с необходимостью вычисления частных производных сами вычисления &quot;в...

Используя таблицу конечных разностей, определить значение 1 и 2-ой производной - C++
1. Используя таблицу конечных разностей, определить значение 1 и 2-ой производной в точках Х=Х0, Х=Х0+0,5h, X=X10-0,5h, X=X10, используя...

Ищу источники информации по численному решению ДУ в частных производных - C++
Знает ли кто-нибудь хорошую книгу или сайт по численному решению ДУЧП? Например, просто по численным методам есть отличный учебник...

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

Программа для решения квадратного уравнения. Где ошибка? - C++
где ошибка при создании программы для вычисления квадратного уравнения?? #include &lt; iostream&gt; #include &lt;conio.h&gt; #include &lt; math.h&gt; ...

Метод конечных автоматов для списка слов - C++
Дан список слов X1, X2, …, Xk и строка Y длины n. Определить, входит ли одно из слов Xi в строку Y как подстрока за время C∙n (где C –...

Подскажите, где может быть ошибка (структуры)? (скорее всего где-то амперсенд нужен, все вроде проверил) - C++
написать универсальный тип, который представляет точку на плоскости в координатах (х, у) и в полярных координатах. Написать функцию для...

Метод конечных разностей для системы диффуров в частных производных - Численные методы
Доброго времени суток, уважаемые форумчане. У меня возникла проблема при решении одной задачи. Сначала я численно решил систему диффуров...


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

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

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