Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2013, 20:21   #1
RAEman
Новичок
Джуниор
 
Регистрация: 08.12.2013
Сообщений: 1
По умолчанию вычислить методом прогонки область, разделенная на 3 части

Помогите пожалуйста. C#. Надо вычислить методом прогонки область, разделенная на 3 части(D0, D1, D2). Заданы лишь граничные условия. В D1 ρ<0, в D2 ρ>0 => D0 ρ=0.
Я попытался вычислить D0 чтобы оно стало начальным условием:
Код:
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();
 
        }
    }
но у меня даже это не выходит.
Вычисление коэффициентов в pdf.
Вложения
Тип файла: rar progonka.rar (136.0 Кб, 4 просмотров)
RAEman вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С++ Вычислить Y учитывая область определения функции a, b. mmf_Valya Помощь студентам 8 07.10.2012 00:27
Диф уравнения методом прогонки АндрейА Общие вопросы C/C++ 0 04.09.2012 01:32