48 / 48 / 14
Регистрация: 30.03.2009
Сообщений: 523
1

Метод верхней релаксации для уравнения Пуассона

06.11.2013, 20:09. Показов 3948. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет! Есть краевая задача для уравнения Пуассона в области, составленной из прямоугольников.
Метод верхней релаксации для уравнения Пуассона

Метод верхней релаксации для уравнения Пуассона
Функции psi_1,3,5(y) = sin(Pi*y), psi_2,4,6(x) = sin(Pi*x), f(x,y) = 1-x*x-y*y.
Параметры a = b = 2, c = d = 1.
Я так понимаю, область можно разбить на 2 прямоугольника и считать для каждого отдельно.
Т.е. получается матрица заполняется граничными условиями вот так?:
Метод верхней релаксации для уравнения Пуассона
Нигде не могу найти нормального описания метода верхней релаксации для данной задачи. Кто знает подскажите пожалуйста. Или ткните носом в гугль.
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#define _USE_MATH_DEFINES
#include <iostream>
 
 
int const N = 8;
int const M = 8;
 
                                                            //          |
                                                            //          |
//прототипы                                                    //  ^      b|________
double psi_1(double);                                       //  |i      |        |
double psi_2(double);                                       //  |       |   I    |
double psi_3(double);                                       //          |        |
double psi_4(double);                                       //         d|_ _ _ _ |___________
double psi_5(double);                                       //          |        |           |
double psi_6(double);                                       //          |        |      II   |
double f(double);                                           //          |________|___________|________
                                                            //  ----->           c           a
                                                            //    j
double psi_1(double y){
    return sin(M_PI*y);
}
double psi_2(double x){
    return sin(M_PI*x);
}
double psi_3(double y){
    return sin(M_PI*y);
}
double psi_4(double x){
    return sin(M_PI*x);
}
double psi_5(double y){
    return sin(M_PI*y);
}
double psi_6(double x){
    return sin(M_PI*x);
}
double f(double x, double y){
    return (1 - x*x - y*y);
}
double x[N+1], y[M+1], U[N+1][M+1], u[N+1][M+1];
 
void PuassonPr(void)
{
    //Границы
    int n = N/2;
    int m = M/2;
    
    //I
    for(int j = 0; j <= n ; j++)
    {
        U[0][j] = psi_6(x[j]);
        U[M][j] = psi_4(x[j]);
    }
    for (int i = 0; i <= M; i++)
    {
        U[i][0] = psi_5(y[i]);
        U[i][n] = psi_3(y[i]);
    }
 
    //II
    for(int j = n; j <= N ; j++)
    {
        U[0][j] = psi_6(x[j]);
        U[m][j] = psi_2(x[j]);
    }
    for (int i = 0; i <= m; i++)
    {
        U[i][m] = psi_3(y[i]);
        U[i][N] = psi_3(y[i]);
    }
 
    for (int i = 0; i <= M; i++)
    {
        for (int j = 0; j <= N; j++)
        {
            printf("%.3f \t", U[i][j]);
        }
        std::cout << std::endl;
    }
}
 
int main(int argc, char* argv[]){
    double a = 2.0, d = 1.0;
    double b = 2.0, c = 1.0;
    double Hx = a / N;
    double Hy = b / M;
 
    std::cout.precision(3);
    
    for (int i = 0; i < N; i++)
    {
        x[i] = i*Hx;
    }
    
    for (int j = 0; j < M; j++)
    {
        y[j] = j*Hy;
    }
 
    PuassonPr();
    
    std::system("pause");
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.11.2013, 20:09
Ответы с готовыми решениями:

Разработать алгоритм численного решения СЛАУ методом верхней релаксации
Помогите пожалуйста курсач горит (:ireful: Разработать алгоритм численного решения cистема...

Алгоритм и код программы решения уравнения Пуассона методом матричной прогонки
Объясните, пожалуйста алгоритм и код на Си++ задачи: ∂2P/∂x2+∂2P/∂y2=-f(x,y)

Метод итераций для уравнения
#include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; double e=2.7; double q=0; int...

Метод итерации для уравнения
Почему как надо подправить программу, чтобы она начала считаться методом итераций для функции...

0
06.11.2013, 20:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.11.2013, 20:09
Помогаю со студенческими работами здесь

Метод верхней релаксации или метод простых итераций СЛАУ
Год назад закончился Фортран, кто же знал, что он вернется при параллельном программировании....

Метод последовательной верхней релаксации
Решить методом последовательной верхней релаксации СЛАУ с разреженной матрицей 50х50. Коэффициент...

Метод последовательной верхней релаксации
Помогите пожалуйста кто чем может. Советом или ссылкой на литературу, не могу найти в инетике...

Алгоритм верхней релаксации
Мне нужно решить СЛАУ методом квадратного корня и уточнить полученное решение методом верхней...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru