24 / 8 / 17
Регистрация: 22.12.2015
Сообщений: 2,099
1

Метод конечных разностей для решения дифференциального уравнения

26.08.2017, 20:02. Показов 17911. Ответов 3
Метки нет (Все метки)

Используя метод конечных разностей, решить краевую задачу для дифференциального уравнения второго порядка с точностью и построить график по полученным результатам. Интервал интегрирования 0,1.
Метод конечных разностей для решения дифференциального уравнения
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0.50
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.08.2017, 20:02
Ответы с готовыми решениями:

Решение краевой задачи для линейного дифференциального уравнения второго порядка методом конечных разностей
Помогите составить программу в С++: Используя метод конечных разностей, найти решение краевой...

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

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

Конечно-разностный метод решения краевой задачи (дифференциального уравнения)
Решить краевую задачу конечно-разностным методом, условие в приложенных скриншотах и pdf-файле. ...

3
24 / 8 / 17
Регистрация: 22.12.2015
Сообщений: 2,099
30.08.2017, 16:36  [ТС] 2
Лучший ответ Сообщение было отмечено scherbakovss201 как решение

Решение

Мне бы график построить в консоли под мое задание.ума не приложу как это сделать если тут двухмерная марица.

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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#include <iostream>
#include <windows.h>
#include <cmath>
using namespace std;
 
double p(double x){
        return exp(x);
}
 
double q(double x){
        return 2*x;
}
 
double f(double x){
        return pow(x,3);
}
 
void gauss(double** A, double* B, double* X, int n);
 
int main() {
        double alpha0=2; double alpha1=-2.5; double Ac=0;
        double beta0=3; double beta1=-3.4; double Bc=5;
        double a0=0.1; double b0=1.3;
        int n=4;
        //matrix A[n+1][n+1]
        double **A = new double*[n+1];
        for(int i=0; i<n+1; i++){
                A[i]=new double[n+1];
        }
        //===
        double *B = new double[n+1]; //vector B[n+1]
        double *X = new double[n+1]; //vector X[n+1]
        //Grid
        double h=(b0-a0)/n;
        for(int i=0; i<=n; i++){
                X[i]=a0+i*h;
                //cout << X[i] << endl;
        }
        //===
        cout << "h=" << h << endl;
        //calculate matrix A, B
        for(int i=0; i<=n-2; i++){
        A[i][i]=h*h*q(X[i])-h*p(X[i])+1;
        A[i][i+1]=h*p(X[i])-2;
        A[i][i+2]=1;
        B[i]=h*h*f(X[i]);
        }
        A[n-1][0]=alpha0*h-alpha1;
        A[n-1][1]=alpha1;
        A[n][n-1]=-beta1;
        A[n][n]=beta0*h+beta1;
        B[n-1]=h*Ac;
        B[n]=h*Bc;
        //===
        //print A
        for(int i=0; i<=n; i++){
                for(int j=0; j<=n; j++){
                        cout << "A["<<i<<"]"<<"["<<j<<"]="<<A[i][j] <<" ";
                }
                cout << endl;
        }
        //===
        cout << endl;
        //print B
        for(int i=0; i<=n; i++){
                cout << "B["<<i<<"]="<<B[i] <<" ";
        }
        cout << endl;
        cout << endl;
        //===
        //solve A*X1=B
        double *X1 = new double[n+1]; //vector X1[n+1]
        gauss(A,B,X1,n+1); //solve
        //print X1
        for(int i=0; i<=n; i++){
                cout << "X1[" << i << "]=" << X1[i] << " ";
        }
        //===
         system("PAUSE");
        return 0;
}
 
void gauss(double** A, double* B, double* X, int n){
        int m=n+1;
        //create C[n][n+1]
        double **C = new double*[n];
        for(int i=0; i<n; i++){
                C[i]=new double[n+1];
        }
        //===
        //split A and B to C
        for(int i=0;i<n;i++){
                for(int j=0;j<n;j++){
                        C[i][j]=A[i][j];
                }
                C[i][n]=B[i];
        }
        //===
        /*
        //print C
        for(int i=0;i<n;i++){
                for(int j=0;j<n+1;j++){
                        cout << C[i][j] << " ";
                }
                cout << endl;
        }
        //===
        */
 
        //forward
        for (int k=0; k<n-1; k++){
            for (int i=k+1;i<n;i++){
                for (int j=m-1; j>=k; j--){
                        C[i][j]=C[i][j]-C[i][k]*C[k][j]/C[k][k];
                }
        }
        }
        //reverse
        X[n-1]=A[n-1][m-2]/A[n-1][m-2];
 
        for (int i=n-2; i>=0; i--){
                double s=0;
                for (int j=i+1;j<m-1;j++){
                        s=s+C[i][j]*X[j];
                }
                X[i]=(C[i][m-1] - s)/C[i][i];
        }
 
}
0
24 / 8 / 17
Регистрация: 22.12.2015
Сообщений: 2,099
30.08.2017, 16:47  [ТС] 3
Метод конечных разностей для решения дифференциального уравнения
0
0 / 0 / 0
Регистрация: 11.07.2019
Сообщений: 8
17.05.2020, 21:56 4
Добрый день,а можно вопрос,откуда у вас появились альфы и бетты в программе если на фото выглядят по другому?

Добавлено через 28 минут
Цитата Сообщение от inquisitor Посмотреть сообщение
а откуда взялись коэфициенты? у меня схожая задача,хочу переделать под свою но совершенно не понятно как.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.05.2020, 21:56
Помогаю со студенческими работами здесь

Метод конечных разностей
#include &quot;stdafx.h&quot; #include&quot;iostream&quot; #include&quot;cmath&quot; using namespace std; int main() { ...

Метод Эйлера: численное решение начальных задач для дифференциального уравнения
Численно решить начальные задачи для дифференциального уравнения: (Знак системы) y'=-y+exp(x)...

Метод Эйлера: численное решение начальных задач для дифференциального уравнения - C++
Численно решить начальные задачи для дифференциального уравнения: (Знак системы) y'=-y+exp(x)...

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


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

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

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