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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Матрицы, наследование матриц http://www.cyberforum.ru/cpp-beginners/thread1000604.html
Добрый день! Помогите исправить, немного не понимаю,что не так сделано Даны три матрицы размером 4х4, 6х6 и 8х8. Для всех матриц найти среднее арифметическое элементов, которые расположены на главной диагонали. Для второй матрицы найти сумму элементов которые расположены выше главной диагонали. Для третьей матрицы найти сумму элементов которые расположены ниже главной диагонали. ...
C++ Заменить в веденной строке с клавиатуры все х на у Не могу разобрать чего то не хватает в коде для функции replace и begin помогите разобраться пожалуйста ... //--------------------------------------------------------------------------- #include <vcl.h> #include <conio.h> #include <stdlib.h> #include <string> #include <algorithm> #include <iostream> http://www.cyberforum.ru/cpp-beginners/thread1000589.html
найти ошибку! C++
вот код программы #include "stdafx.h" #include <iostream> #include <stdio.h> #include <conio.h> #include <algorithm> #include <math.h> #include <fstream> #include <Windows.h>
C++ Класс строк
Доброго времени суток) классы вот только начал изучать, прошу сильно не бить) Вот задание: Создать класс строк и производный от него - класс строк из цифр. Определить конструкторы и деструктор, переопределить вывод и ввод из потока. Перегружать оператора присваивания и конструктор копирования в базовом и производном классе. Вот что вышло на первых парах: (присутствуют ошибки:cry:) #include...
C++ Компиляция исходных файлов http://www.cyberforum.ru/cpp-beginners/thread1000570.html
Господа, добрый день. Имеется проект, написанный на C++. Мне необходимо, так сказать, лишь "собрать его". Я сам не шибко программирую на цпп, так, строчку вывести, да пару арифм. операций произвести. Попробовал как было описано в мануале к нему (Spheres.html), но не получается. Дело было в командной строке с помощью g++. Ткните, пожалуйста, носом. Архив со всеми исходными кодами...
C++ Шаблонный класс День добрый. Пишу матричный калькулятор на шаблонном классе. Хочу добиться того, чтобы можно было оперировать с матрицами всех численных типов. Для 1 типа класс отлажен и работает хорошо, но, когда переделал под все типы, всё пошло наперекосяк. И первый вопрос в том как произвести действие над объектами разных классов и можно-ли вообще? К примеру обращение матрицы. Ввожу целочисленную, но функция... подробнее

Показать сообщение отдельно
illuminates
1 / 1 / 0
Регистрация: 14.06.2012
Сообщений: 98
07.11.2013, 14:33     подскажите где ошибка - метод конечных разностей для уравнения в частных производных
Вычисляю по явной схеме. Выдает какие-то очень большие числа. Подскажите пожалуйста где ошибка.

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), что означает скорость сходимости схемы к исходной задачи
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 19:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru