Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
ILKarina
17 / 17 / 13
Регистрация: 06.03.2013
Сообщений: 331
Завершенные тесты: 2
#1

Вычислить методом прогонки область, разделенная на 3 части

07.12.2013, 10:21. Просмотров 671. Ответов 8
Метки нет (Все метки)

помогите пожалуйста. надо вычислить методом прогонки область, разделенная на 3 части(D0, D1, D2). Заданы лишь граничные условия. В D1 ρ <0, в D2 ρ>0 => D0 ρ=0.
Вычисление коэффициентов в pdf.
Я попытался вычислить D0 чтобы оно стало начальным условием:
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
class Program{
        const double eta = 0.5;
        const double l = 1.0;
        const double T = 1.0;
        const int n = 20;
        const int M = 20;
        const int m = 10;
        const double h = 0.05;
        const double tau = 0.05;
        const double A = 5.0;
        public static double rho(double t){
            return t - eta;
        }
        public static double f(double x, double t, double B){
            double e = Math.Exp(B*(x+t));
            return A*B*e*(rho(t) - B);
        }
        public static double m1(double B, double t){
            return A * Math.Exp(B*t);
        }
        public static double m2(double B, double t){
            return A * Math.Exp(B*(l+t));
        }
        public static double U(double x, double t, double B){
            return A * Math.Exp(B*(x+t));
        }
        
        static void Main(string[] args){
            double B = double.Parse(Console.ReadLine());
            double x, t;
            double[] alpha = new double[n];
            double[] beta = new double[n];
            double[] F = new double[n];
            double[,] y = new double[n + 1, m + 1];
            double[,] z = new double[n + 1, M + 1];
            double[,] v = new double[n + 1, M];
            double[] a = new double[n];  //над гл.диагональю
            double[] b = new double[n];  //под гл.диагональю
            double[] c = new double[n];  //гл.диагональ
            double[,] d1 = new double[n + 1, M + 1];  //абсолютная погрешность
            double[,] d2 = new double[n + 1, M + 1];  //относительная погрешность
            
            b[0] = 0;
            c[0] = 1;
            F[0] = m1(B, m*tau);
            alpha[0] = b[0] / c[0];
            beta[0] = F[0] / c[0];
            for (int i = 1; i <= n-1; i++)
            {
                x = i * h;
                alpha[i] = b[i] / (c[i] - (a[i] * alpha[i - 1]));
                beta[i] = (((h * h) * f(x, m, B)) + (a[i] * beta[i - 1])) / (c[i] - (a[i] * alpha[i - 1]));
                y[i+1, m] = alpha[i] * y[i - 1, m] + beta[i];
                Console.WriteLine(y[i, m]);
            }
            //for (int i = 0; i < = n - 1; i++) {}
            Console.ReadLine();
 
        }
    }
но у меня даже это не выходит...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.12.2013, 10:21
Ответы с готовыми решениями:

Вычислить интегралы функций методом Гаусса и методом трапеций
Помогите кто может курсовая горит!!!! Нужно вычислить три функции sin(ax-b),...

Каким методом можно выделить область на изображении и поместить в буфер
Посоветуйте метод выделение, последующий шаг занести в буффер, чтобы можноего...

СЛАУ методом прогонки
Помогите решить систему методом прогонки )

Решение СЛАУ методом прогонки
Метод прогонки

Решить СЛАУ методом прогонки
Решить СЛАУ методом прогонки По возможности поясните в чем заключается...

8
ILKarina
17 / 17 / 13
Регистрация: 06.03.2013
Сообщений: 331
Завершенные тесты: 2
07.12.2013, 10:23  [ТС] #2
pdf
0
Вложения
Тип файла: pdf untitled-1.pdf (170.8 Кб, 10 просмотров)
Psilon
Master of Orion
Эксперт .NET
5989 / 4842 / 901
Регистрация: 10.07.2011
Сообщений: 14,459
Записей в блоге: 5
Завершенные тесты: 4
07.12.2013, 12:41 #3
ILKarina, что именно не выходит?

Не по теме:

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

0
ILKarina
17 / 17 / 13
Регистрация: 06.03.2013
Сообщений: 331
Завершенные тесты: 2
07.12.2013, 13:45  [ТС] #4
http://www.cyberforum.ru/cgi-bin/latex.cgi?v_{i}^j = \alpha_{i} v_{i+1} +\beta_{i}
0
Psilon
Master of Orion
Эксперт .NET
5989 / 4842 / 901
Регистрация: 10.07.2011
Сообщений: 14,459
Записей в блоге: 5
Завершенные тесты: 4
07.12.2013, 14:54 #5
ILKarina, нужно в тег [LATEX] оборачивать:
http://www.cyberforum.ru/cgi-bin/latex.cgi?v_{i}^j = \alpha_{i} v_{i+1} +\beta_{i}

Так с чем конкретно проблемы-то? Ну формула, что дальше?
1
ILKarina
17 / 17 / 13
Регистрация: 06.03.2013
Сообщений: 331
Завершенные тесты: 2
07.12.2013, 15:36  [ТС] #6
1. этого тега нету в редакторе, так что я решил, что этого тега нету вообще. но все равно спасибо.
2. это формула для нахождения функции методом прогонки. коффициенты уже в пдф есть. вычисление области(или же скорее сказать линии) http://www.cyberforum.ru/cgi-bin/latex.cgi?D_{0} я попытался запрогать, но не выходит.Вот и прошу указать на ошибку.
0
Psilon
Master of Orion
Эксперт .NET
5989 / 4842 / 901
Регистрация: 10.07.2011
Сообщений: 14,459
Записей в блоге: 5
Завершенные тесты: 4
07.12.2013, 15:39 #7
ILKarina,
1. тег появляется при нажатии кнопочки "предпросмотр".
2. пока не могу помочь, голова больная, прошу извинить и дождаться кого-нибудь еще
1
ILKarina
17 / 17 / 13
Регистрация: 06.03.2013
Сообщений: 331
Завершенные тесты: 2
08.12.2013, 20:18  [ТС] #8

Не по теме:

SOMEBODY HELP ME!!!!



Добавлено через 22 часа 35 минут

Не по теме:

somebody please

0
ILKarina
17 / 17 / 13
Регистрация: 06.03.2013
Сообщений: 331
Завершенные тесты: 2
09.12.2013, 23:47  [ТС] #9
Извините за дубль. Но прошлую мою тему вытеснило другими постами(не моими) или обновлениями. А сдавать уже нужно срочно.
Есть область разделенная на три части. Необходимо вычислить значения функции в области методом прогонки.
http://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
           \left\{  <br />
           \begin{array}{lcl}  <br />
           \rho(t)\frac{\partial u}{\partial t} = \frac{\partial^2 u}{\partial x^2} + f(x,t)\\\\<br />
	o < x < l , o < t < T\\\\<br />
	\rho < 0 \; \in \, D_{1} ; \rho > 0 \; \in \, D_{2}\\\\<br />
	U(o,t) = \mu_{1} , U(l,t) = \mu_{2}\\\\<br />
	U|_{y-0} = U|_{y+0},\frac{\partial u}{\partial t}|_{y-0}=\frac{\partial u}{\partial t}|_{y+0}  <br />
           \end{array}   <br />
           \right.  <br />

Входные данные:
http://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
\rho = t - \eta, f = ABe^{B(x+t)}[(t-\eta)-B]\\\\<br />
\mu_{1} = Ae^{Bt},\mu_{2} = Ae^{B(l+t)}, A = 5\\\\<br />
B = {-1;1}, l=1, T=1, \eta = \frac{1}{2}, h = 0.05, \tau = 0.05\\\\
Точное решение: http://www.cyberforum.ru/cgi-bin/latex.cgi?U = Ae^{B(x+t)}\\
Попытался найти значения области http://www.cyberforum.ru/cgi-bin/latex.cgi?D_{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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
class Program{
        const double eta = 0.5;
        const double l = 1.0;
        const double T = 1.0;
        const int n = 20;
        const int m = 10;
        const int M = 20;
        const double h = 0.05;
        const double tau = 0.05;
        const double A = 5.0;
        public static double rho(double t){
            return t - eta;
        }
        public static double f(double x, double t, double B){
            //double e = ;
            return A*B*Math.Exp(B*(x+t))*((t-eta) - B);
        }
        public static double m1(double B, double t){
            return A * Math.Exp(B*t);
        }
        public static double m2(double B, double t){
            return A * Math.Exp(B*(l+t));
        }
        public static double U(double x, double t, double B){
            return A * Math.Exp(B*(x+t));
        }
        
        static void Main(string[] args){
            Double B = double.Parse(Console.ReadLine());
            double x,t;
            double [] v = new double[n+1];
            double [,] y = new double[n + 1, m + 1];
            double [,] z = new double[n + 1, M + 1];
            double [] alpha = new double [n];
            double [] beta = new double [n];
            double [] a = new double [n+1];
            double [] b = new double [n+1];
            double [] c = new double [n+1];
            double [] F = new double [n+1];
 
            for (int i = 0; i <= n; i++)
            {
                x = i * h;
                a[i] = 1;
                c[i] = 2;
                b[i] = 1;
                F[i] = (h*h)*f(x, eta, B);
                c[0] = 1;
                b[0] = 0;
                F[0] = m1(B, eta);
                //a[n] = 0; c[n] = 1; F[n] = m2(B, eta);
                alpha[0] = b[0] / c[0];
                beta[0] = F[0] / c[0];
                }
            for (int i = 1; i <= n-1; i++)
            {
                alpha[i] = b[i] / (c[i] - (a[i] * alpha[i - 1]));
                beta[i] = (F[i] + (a[i] * beta[i - 1])) / (c[i] - (a[i] * alpha[i - 1]));
            }
            for (int i = 1; i <= n-1; i++ )
            {
                v[0] = alpha[0] * v[i] + beta[0];
                v[i] = alpha[i] * v[i + 1] + beta[i];
 
            }
            for (int i = 0; i <= n; i++)
            {
                x = i * h;
                Console.WriteLine("v[" + i + "] = " + v[i] + "   " + U(x, eta, B));
            }
            /*for (int j = m - 1; j >= 0; j--)//D1
            {
                t = j * tau;
                y[0, j + 1] = m1(t + tau, B);
                y[n, j + 1] = m2(t + tau, B);
                Console.WriteLine(j);
            }
            for (int j = m + 1; j <= M; j++)
            {
                t = j * tau;
                z[0, j] = m1(t + tau, B);
                z[n, j] = m2(t + tau, B);
                Console.WriteLine(j);
            }*/
            Console.ReadLine();
        }
 
    }
Но у меня он не правильно вычисляет. Укажите пожалуйста на ошибку.
Если надо вычисление коэффициентов прогонки:
0
Вложения
Тип файла: pdf untitled-1.pdf (170.8 Кб, 4 просмотров)
09.12.2013, 23:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.12.2013, 23:47

Уравнение теплопроводности методом прогонки
Здравствуйте, очень прошу помочь с кодом, в прошлый раз он у меня получился...

Заполнить матрицу методом прогонки
Всем доброго времени суток. Мне нужно сделать матрицу (30х30) так чтобы она...

Решение СЛАУ методом прогонки
Добрый день,нужно решить СЛАУ методом прогонки,вот СЛАУ и ее решение. коэфф...


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

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

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