Реферат: Метод Ю.И.Виноградова и А.Ю.Виноградова решения жестких краевых задач без ортонормирования

к.ф.-м.н. Алексей Юрьевич Виноградов (14 ноября 2011)

СОДЕРЖАНИЕ:

Теория метода д.ф.-м.н. Юрия Ивановича Виноградова и к.ф.-м.н. Алексея Юрьевича Виноградова решения жестких краевых задач без ортонормирования. Страницы 1 — 8.Программа (код) на С++, написанная в среде MSVisualStudio 2010 (VisualC++), – программа решения «жесткой» краевой задачи для системы обыкновенных дифференциальных уравнений с постоянными коэффициентами (цилиндр). Страницы 8 – 15.

 

Метод решения жестких краевых задач без ортонормирования.

1. Введение.

На примере системы дифференциальных уравнений цилиндрической оболочки ракеты – системы обыкновенных дифференциальных уравнений 8-го порядка (после разделения частных производных методом Фурье).

Система линейных обыкновенных дифференциальных уравнений имеет вид:

/>,

где /> – искомая вектор-функция задачи размерности 8х1, /> – производная искомой вектор-функции размерности 8х1, /> – квадратная матрица коэффициентов дифференциального уравнения размерности 8х8, /> – вектор-функция внешнего воздействия на систему размерности 8х1.

Краевые условия имеют вид:

/>

где      /> – значение искомой вектор-функции на левом крае х=0 размерности 8х1, /> – прямоугольная горизонтальная матрица коэффициентов краевых условий левого края размерности 4х8, /> – вектор внешних воздействий на левый край размерности 4х1,

/> – значение искомой вектор-функции на правом крае х=1 размерности 8х1, />– прямоугольная горизонтальная матрица коэффициентов краевых условий правого края размерности 4х8, /> – вектор внешних воздействий на правый край размерности 4х1.

В случае, когда система дифференциальных уравнений имеет матрицу с постоянными коэффициентами />=const, решение задачи Коши имеет вид [1]:

/>,

 

где />, где /> — это единичная матрица.

Матричная экспонента ещё может называться матрицей Коши или матрициантом и может обозначаться в виде:

/>.

Тогда решение задачи Коши может быть записано в виде:

/>,

где /> это вектор частного решения неоднородной системы дифференциальных уравнений.

Вместо формулы для вычисления вектора частного решения неоднородной системы дифференциальных уравнений в виде [1]:

/>

предлагается использовать следующую формулу для каждого отдельного участка интервала интегрирования:

/>.

Вычисление вектора частного решения неоднородной системы дифференциальных уравнений производиться при помощи представления матрицы Коши под знаком интеграла в виде ряда и интегрирования этого ряда поэлементно:

/>

Эта формула справедлива для случая системы дифференциальных уравнений с постоянной матрицей коэффициентов />=const.

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

Для случая дифференциальных уравнений с переменными коэффициентами в приведенной выше формуле для каждого участка может использоваться осредненная матрица /> коэффициентов системы дифференциальных уравнений.

Рассмотрим вариант, когда шаги интервала интегрирования выбираются достаточно малыми, что позволяет рассматривать вектор /> на участке /> приближенно в виде постоянной величины />, что позволяет вынести этот вектор из под знаков интегралов:

/>

Известно, что при T=(at+b) имеем />

В нашем случае имеем />

Тогда получаем />.

Тогда получаем ряд для вычисления вектора частного решения неоднородной системы дифференциальных уравнений на малом участке />:

/>

Если участок /> не мал, то его можно поделить на подучастки и тогда можно предложить следующие рекуррентные (итерационные) формулы для вычисления частного вектора:

Имеем />.

Также имеем формулу для отдельного подучастка:

/>.

Можем записать:

/>,

/>.

Подставим /> в /> и получим:

/>

/>.

Сравним полученное выражение с формулой:

/>

и получим, очевидно, что:

/>

и для частного вектора получаем формулу:

/>.

То есть вектора подучастков /> не просто складываются друг с другом, а с участием матрицы Коши подучастка.

            Аналогично запишем /> и подставим сюда формулу для /> и получим:

/>

            Сравнив полученное выражение с формулой:

/>

очевидно, получаем, что:

/>

и вместе с этим получаем формулу для частного вектора:

/>

То есть именно так и вычисляется частный вектор – вектор частного решения неоднородной системы дифференциальных уравнений, то есть так вычисляется, например, частный вектор /> на рассматриваемом участке /> через вычисленные частные вектора />, />, /> соответствующих подучастков />, />, />.

2. Метод решения жестких краевых задач без ортонормирования – метод сопряжения участков, выраженных матричными экспонентами.

Разделим интервал интегрирования краевой задачи, например, на 3 участка. Будем иметь точки (узлы), включая края:

/>.

 

 

Имеем краевые условия в виде:

/>

Можем записать матричные уравнения сопряжения участков:

/>,

/>,

/>.

            Это мы можем переписать в виде, более удобном для нас далее:

/>,

/>,

/>.

где />  — единичная матрица.

            Тогда в объединенном матричном виде получаем систему линейных алгебраических уравнений в следующей форме:

/>.

            Эта система решается методом Гаусса с выделением главного элемента.

            В точках, расположенных между узлами, решение находиться при помощи решения задач Коши с начальными условиями в i-ом узле:

/>.

Применять ортонормирование для краевых задач для жестких обыкновенных дифференциальных уравнений оказывается не надо.

 

3. Вычислительные эксперименты.

Вычислительные эксперименты проводились в сравнении с методом переноса краевых условий Алексея Юрьевича Виноградова. В этом методе используется построчное ортонормирование.

Без ортонормирования в методе переноса краевых условий А.Ю.Виноградова успешно решается задача, например, нагружения цилиндрической оболочки, которая консольно заделана по правому краю и нагружена по левому краю силой, равномерно распределенной по дуге окружности, с отношением длинны к радиусу L/R=2 и с отношением радиуса к толщине R/h=100. Для отношения R/h=200 задача без ортонормирования в методе переноса краевых условий уже не решается, так как выдаются ошибки из-за неустойчивости счета. С применением же ортонормирования  в методе переноса краевых условий решаются успешно задачи и для параметров, например, R/h=300, R/h=500, R/h=1000.

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

Для тестовых расчетов задач с вышеуказанными параметрами новым предлагаемым методом интервал интегрирования разделялся на 10 участков, а между узлами, как и сказано выше, решение находилось как решение задачи Коши. Для решения задач удерживалось 50 гармоник рядов Фурье, так как результат при 50 гармониках уже не отличался от случая удержания 100 гармоник.

Скорость же расчета тестовых задач новым предлагаемым методом не меньше, чем методом переноса краевых условий, так как оба метода в тестовых задачах при удержании 50 гармоник рядов Фурье выдавали готовое решение мгновенно после запуска программы на выполнение (на ноутбуке ASUSM51V CPU Duo T5800). В тоже время программирование нового предложенного здесь метода существенно проще, так как нет необходимости программировать процедуры ортонормирования.

 

ПРОГРАММА НА С++:

// sopryazhenie.cpp: главный файл проекта.

//Решение краевой задачи — цилиндрической оболочки.

//Интервал интегрирования разбит на 10 сопрягаемых участков: левый край — точка 0 и правый край — точка 10

//БЕЗ ОРТОНОРМИРОВАНИЯ

 

#include«stdafx.h»

#include

#include<conio.h>

 

usingnamespace std;

 

//Умножение матрицы A на вектор b и получаем rezult.

voidmat_on_vect(double A[8][8], double b[8], double rezult[8]){

       for(int i=0;i<8;i++){

             rezult[i]=0.0;

             for(int k=0;k<8;k++){

             rezult[i]+=A[i][k]*b[k];

             }

       }

}

 

//Вычисление матричной экспоненты EXP=exp(A*delta_x)

voidexponent(double A[8][8], double delta_x, double EXP[8][8]) {

 

       //n — количество членов ряда в экспоненте, m — счетчик членов ряда (m<=n)

       intn=100, m;

       double E[8][8]={0}, TMP1[8][8], TMP2[8][8];

       inti,j,k;

 

       //E — единичная матрица — первый член ряда экспоненты

       E[0][0]=1.0; E[1][1]=1.0; E[2][2]=1.0; E[3][3]=1.0;

       E[4][4]=1.0; E[5][5]=1.0; E[6][6]=1.0; E[7][7]=1.0;

 

       //первоначальное заполнение вспомогательного массива TMP1 — предыдущего члена ряда для следующего перемножения

       //и первоначальное заполнение экспоненты первым членом ряда

       for(i=0;i<8;i++) {

             for(j=0;j<8;j++) {

                    TMP1[i][j]=E[i][j];

                    EXP[i][j]=E[i][j];

             }

       }

 

       //ряд вычисления экспоненты EXP, начиная со 2-го члена ряда (m=2;m<=n)

       for(m=2;m<=n;m++) {

             for(i=0;i<8;i++) {

                    for(j=0;j<8;j++) {

                           TMP2[i][j]=0;

                           for(k=0;k<8;k++) {

                             //TMP2[i][j]+=TMP1[i][k]*A[k][j]*delta_x/(m-1);

                                  TMP2[i][j]+=TMP1[i][k]*A[k][j];

                           }

                           TMP2[i][j]*=delta_x;//вынесено за цикл произведения строки на столбец

<span style=«font-size: 9.5pt; fon

еще рефераты
Еще работы по математике