Рефераты - Афоризмы - Словари
Русские, белорусские и английские сочинения
Русские и белорусские изложения
 

Метод дополнительного аргумента

Работа из раздела: «Математика»

Оглавление

Введение

Постановка начальной задачи

Применение метода дополнительного аргумента к решению характеристической системы

Доказательство эквивалентности систем (8) и (26)

Доказательство существования решения задачи Коши

Постановка задачи численного расчёта

Дискретизация исходной задачи и её решение итерациями

Программа и её описание. Результаты вычислений

Заключение

Литература

Введение

дополнительный аргумент задача коши

Разработано несколько разных методов для исследования разрешимости нелинейных дифференциальных уравнений в частных производных первого порядка. Например, всем известный классический метод характеристик, метод Галеркина, метод потоков. Как и любой метод, каждый из них имеет свои преимущества и свои недостатки. Нельзя выделить какой-либо метод, позволяющий решать любые дифференциальные уравнения в частных производных первого порядка. Каждый из известных методов хорошо применим только к определенному классу уравнений. Если, например, обратиться к тому же самому методу характеристик, то оказывается, что он с успехом применяется лишь в случае, когда коэффициенты перед производными не содержат неизвестных функций. А для систем квазилинейных дифференциальных уравнений или решения нелинейных дифференциальных уравнений реально его применять довольно сложно. В первую очередь, это связано с тем, что при применении метода характеристик для таких уравнений в соответствующем интегральном уравнении появляется суперпозиция неизвестных функций. В последнее время широкое развитие получил, в частности, метод дополнительного аргумента. Он позволяет свести решение исходной задачи к интегральному уравнению или системе интегральных уравнений. В этом уравнении неизвестная функция зависит от трех независимых переменных, но сами уравнения достаточно простые по своей структуре. Для них достаточно просто доказать существование дифференцируемого решения, исследовать качественные свойства решения, а также построить численное решение. В частности, для этого можно использовать метод последовательных приближений. Сущность метода дополнительного аргумента, его применение к решению нелинейных дифференциальных уравнений рассматриваются далее.

Постановка начальной задачи

В области и рассмотрим нелинейное дифференциальное уравнение:

И пусть задано следующее начальное условие

Продифференцируем данное уравнение по х:

Обозначим Тогда уравнение (3) перепишется в виде:

Исходное уравнение (1) в наших новых обозначениях перепишется так:

Преобразуем его так:

Запишем характеристическую систему для уравнения (1) относительно неизвестных функций :

Таким образом, нелинейное уравнение (1) м свели к системе из двух квазилинейных уравнений (8). С учётом (2) зададим начальное условие для функции :

Покажем, что функция , определяемая системой уравнений (8) и начальными условиями (2) и (9), будет являться искомым решением уравнения (1) с начальным условием (2). Для этого достаточно показать, что

Продифференцируем первое уравнение системы по x:

(10)

Вычтем из получившегося равенства второе уравнение системы:

(11)

Обозначим через , тогда из равенство (11) перепишется в виде:

или:

При всех и функция ограничена. Кроме того,

.

Значит, можно определить константу , что при . А это и означает, что
, а значит функция , определяемая системой уравнений (8) и начальными условиями (2) и (9), будет являться искомым решением уравнения (1) с начальным условием (2), что и требовалось доказать.

Применение метода дополнительного аргумента к решению характеристической системы.

Применяя метод характеристик к обоим уравнениям системы (8), получим следующую систему из трёх уравнений:

(13)

Исследуем начальную задачу (8), (2), (9) при помощи метода дополнительного аргумента. Введём следующие обозначения:

То есть рассмотрим следующую систему дифференциальных уравнений относительно неизвестных функций :

(14)

Второе уравнение системы (14) можно рассматривать как линейное неоднородное уравнение первого порядка относительно функции , которая зависит от . Тогда методом Эйлера (метод интегрирующего множителя) можно найти :

Далее, будем искать такое решение системы, которое при перейдёт в точку , то есть

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

(17)

Пользуясь формулой Ньютона-Лейбница из первого уравнения системы (14) получим следующее интегральное уравнение:

= (18)

Из условия (15) , поэтому уравнение (18) можно переписать в виде:

= (19)

Из второго уравнения системы (14) аналогично получим следующее интегральное уравнение:

(20)

Из (17) , а из (19) при получим =, а значит и уравнение (20) перепишется в виде:

(21)

Снова используя формулу Ньютона-Лейбница, получим = и . Поэтому (21) можно переписать так:

(22)

Совершенно аналогично переходим от третьего уравнения системы (14) к уравнению (23):

(23)

Из (23) вытекает, что

Аналогично из (22):

Итак, мы перешли к следующей системе из двух уравнений:

Доказательство эквивалентности систем (8) и (26)

Покажем, что если решением системы уравнений (26) являются непрерывно-дифференцируемые и ограниченные вместе со своими первыми производными функции и , то функции , будут решением задачи Коши (8), (2), (9) при где .

Продифференцируем (22) по :

Умножим второе равенство на :

Получившееся равенство сложим с первым:

Обозначим через , а через тогда последнее равенство перепишется в виде:

Аналогично продифференцируем (23) по :

Умножим второе равенство на :

Сложим получившееся равенство с первым:

Последнее равенство с учётом обозначений , перепишем в виде:

Итак, получили два уравнения от двух неизвестных функций и :

Обозначим через:

Тогда из (27) и (28):

Или:

Меняя порядок интегрирования, будем иметь:

Обозначим через , тогда для всех

Обозначим через , тогда:

Складывая, получаем:

Обозначим через . Очевидно, что для любого

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

Подставим функции

:

С учётом равенств (29) и (24), получим тождество:

Аналогично для второго уравнения системы:

Учитывая (30) и (25), получим тождество:

Проверим, что функции удовлетворяют начальным условиям (2) и (9). Для этого подставим в (26) .

В результате приходим к равенствам:

которые подтверждают, что решение системы (26) удовлетворяет начальным условиям (2), (9).

Итак, мы доказали, что решение задачи (8), (2), (9) даёт решение системы (26), и наоборот, непрерывно дифференцируемое решение системы (26) при ) будет решением задачи (8), (2), (9). То есть эквивалентность двух систем показана.

Доказательство существования решения задачи Коши

Осталось доказать существование ограниченного непрерывно дифференцируемого решения системы уравнений (26), тем самым будет доказано существование классического решения задачи Коши (1), (2).

Введём некоторые обозначения и определения.

Будем обозначать ) и - пространства функций определённых и непрерывных (соответственно со своими производными до порядка по му аргументу, ) на некотором подмножестве евклидова пространства, .

Введём следующие обозначения:

где - произвольно зафиксированное положительное число,

Также будем пользоваться ранее введённым обозначением:

Для произвольной функции и мы положим:

Лемма 1. Пусть , причем и подобраны таким образом, что выполняются неравенства

Пусть, далее - положительный корень уравнения

где - любое число из интервала (0,)

и для любого

где

Тогда при система уравнений (26) имеет единственное решение.

Доказательство.

Будем доказывать существование решения системы уравнений (26) методом последовательных приближений. Положим:

и будем строить последовательности функций

таким образом, что для всех

Или

В силу (31), (32) из (34) и (33) все , будут ограничены:

Будем доказывать, что последовательные приближения сходятся. Найдём разность:

Заметим, что функция имеет ограниченные производные на , поскольку, а

следовательно, удовлетворяет условию Липшица с константой :

||=|

где , а значит

|

Аналогично для функции , , :

.

Из этого равенства выводим, что

||

||

||

Из двух последних слагаемых (36):

С учётом этих равенств получим из (36)

То есть:

Аналогично из (35):

Сложим последние равенства (37) и (38):

где

Рассмотрим вектор . Будем доказывать, что последовательные приближения сходятся по норме к вектору . За норму вектора положим сумму норм и :

Тогда с учётом введённых обозначений равенство (39) перепишется в виде:

Пусть - положительный корень уравнения . Тогда при любом ряд сходится к вектору . Именно, мы можем представить в виде суммы:

Ряд

мажорируется сходящимся (так как рядом

(здесь взято .

Это означает, что его частичная сумма сходится к вектору по норме.

А это и означает, что ряды и также сходятся соответственно к функциям и по норме. Перейдя к пределу в равенствах (33) и (34), получим, что функции и , будут удовлетворять системе (26).

Единственность следует из того факта, что для разности двух возможных решений системы (26) будет выполняться неравенство вида

где.

Лемма 2. При выполнении условий леммы 1 , .

Доказательство.

Согласно (25) функция

непрерывна и ограничена в (так как она получается из известных непрерывных и ограниченных функций с помощью конечного числа арифметических операций и композиций).

С учётом этого функция

также непрерывна и ограничена в .

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

С учетом того, что

|

|

||

||

|

||

|

||

|

получаем:

Приводя подобные, получаем:

Аналогично для функции :

Складывая получившиеся равенства, получаем:

Вспоминая, что

а также, что

получаем:

Обозначая за

Снова введём в рассмотрение вектор . За его норму положим сумму норм и

Тогда получаем:

При имеем

Далее, так как , а , , то , поэтому

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

А это означает, что последовательность ограничена по норме. Следовательно, ограничены по норме и последовательности и .

Чтобы несколько облегчить доказательство её сходимости, рассмотрим вначале линейные интегральные уравнения относительно неизвестных функций и и рассмотрим вектор

Где

где

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

Из равенств (42) и (43):

Где

Аналогично из равенств (41) и (44):

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

Переходя к норме в неравенствах (45) и (46), получаем

Складывая получившиеся неравенства и вспоминая, что

получаем, что для всех будет выполняться неравенство:

При имеем , поэтому из предыдущего неравенства вытекает:

Таким образом, для любого будет выполняться неравенство:

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

Этим самым мы доказали, что последовательность при , а значит и последовательности и сходятся соответственно к функциям и .

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

Складывая получившиеся неравенства, получаем:

Обозначим

Тогда неравенство перепишется в виде:

То есть

При имеем

Далее, так как , а , , то , поэтому

Обозначим

Тогда неравенство перепишется в виде:

Увеличивая число , получаем:

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

А это означает, что последовательность ограничена по норме. Следовательно, ограничены по норме и последовательности и .

Чтобы несколько облегчить доказательство её сходимости, рассмотрим вначале линейное интегральное уравнение относительно неизвестных функций и и рассмотрим вектор

Где

Где

Аналогично для последовательности :

где

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

Переходя к норме в неравенствах (45) и (46), получаем

Складывая получившиеся неравенства и вспоминая, что

получаем, что для всех будет выполняться неравенство:

При имеем , поэтому из предыдущего неравенства вытекает:

Таким образом, для любого будет выполняться неравенство:

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

Этим самым мы доказали, что последовательность при , а значит и последовательности и сходятся соответственно к функциям и .

В результате для последовательностей {} и {} установлены

следующие свойства:

Имеем: последовательность , при любом сходится по норме этого пространства. В силу полноты и замкнутости пространства имеем, что , а значит, обладает частными производными по , причём

Аналогично , а значит

Таким образом, лемма 2 доказана.

На основе этих двух лемм и всего вышеизложенного, можно сформулировать общую теорему:

Теорема 1. Пусть на области и задано нелинейное дифференциальное уравнение:

И пусть задано следующее начальное условие

Если:

Функция непрерывна, ограничена, дважды непрерывно дифференцируема по переменным и все вторые, а также смешанные производные удовлетворяют по этим переменным условию Липшица и ограничены при всех значениях аргументов.

Пусть функция дважды непрерывно дифференцируема на , а её вторая производная ограничена и удовлетворяет условию Липшица.

Тогда существует такая константа , что при задача (1) - (2) имеет единственное непрерывное и ограниченное вместе со своими первыми производными решение, которое совпадает при с функцией , определяемой из системы интегральных уравнений (26).

Постановка задачи численного расчёта

Для решения исходной задачи воспользуемся системой (26) и, для удобства, третьим уравнением

Решение будем рассматривать в области

Рассмотрим несколько примеров с конкретными значениями параметров и заданной функцией .

Пример 1. В качестве функции выберем . Тогда исходное уравнение примет вид:

В качестве начального условия возьмём функцию

Дифференцируя (47) по и полагая , , получаем следующее уравнение:

Используя метод характеристик, получаем:

А значит,

Следовательно, , .

Из равенства

cледует .

При а значит,

То есть

Выразив , получаем:

Как видно, решение получилось глобальное, т.е. определена для любого .

Интегрируя, получаем решение исходной задачи - функцию :

Очевидно, что чем больше значение , тем ближе значения функции к нулю. Также можно заметить, что график функции будет симметричен относительно плоскости или .

Теперь найдём решение исходного уравнения с помощью метода дополнительного аргумента.

Имеем:

Второе уравнение можно рассматривать как обыкновенное дифференциальное уравнение с разделяющимися переменными относительно. Тогда

Подставляя , получаем

Вспоминая, что получаем:

Т.е.

Третье уравнение можно рассматривать как линейное неоднородное дифференциальное уравнение относительно переменной.

Помножим обе части уравнения на

Тогда левая часть уравнения будет производной функции :

И

Тогда, интегрируя, получаем:

Следовательно, функция будет равна

Подставляя находим постоянную :

Тогда

Итак, для программы численного решения исходного уравнения, потребуется три уравнения:

Возьмём , тогда:

Программа численного решения будет основываться на методе последовательных приближений. Поэтому запишем начальные функции, которые будут использоваться для вычисления начальных приближений (подставляем в эти три уравнения ):

Уравнение

не содержит функции , поэтому можно ограничиться вычислением , и затем, пользуясь результатами вычислений , найти из уравнения:

Дискретизация исходной задачи и её решение итерациями

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

Задача численных расчётов - найти значения функции в узлах сетки и воспроизвести результат на графике. Конечной целью является графическое воспроизведение функции .

Введём три индексные переменные , соответствующие переменным , где - число значений , а число значений . Также необходимо ввести не только индексные, но и физические ограничения. Для абсциссы это будет число , а для времени - . Значения хранятся в массиве

Для того чтобы находить значения функции в конкретной точке , необходимо инициализировать три массива:

- массив значений функции

- массив значений функции

- массив значений функции

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

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

где - известная функция, а - неизвестная функция, которую нужно определить. Сама функция представляетя собой некоторый график:

Известно, что физический смысл интеграла - это площадь криволинейной трапеции. Будем рассматривать метод трапеций как наиболее точный при небольшой затрате процессорного времени на вычисления. Зададим сеточные функции и , будем считать параметром массива, притом . Очевидно, что при большом значении , а, следовательно, при большем количестве узлов, мы получим более точное решение. Итак, как известно, площадь трапеции определяется по формуле:

где - стороны трапеции. В нашем случае мы будем иметь следующую формулу:

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

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

Программа и её описание. Результаты вычислений

Текст основной программы приведён ниже.

Программа 1.

#include 'stdafx.h'

#include <iostream>

#include <math.h> //необходимые заголовочные файлы

#include <conio.h>

#include <fstream>

using namespace std;

double U(double t,double x,double u)

{

return u;

}

double fi(double x)

{

return pow(x,2)/2; //функция , первое приближение

}

int _tmain(int argc, _TCHAR* argv[])

{

double T0=5; //определяем физические ограничения по t

const int nt=25;//число значений t

double T[nt]; //массив значений t

double S[nt]; //массив значений s

double dt=T0/(nt-1);//шаг по переменной t

T[0]=0;//начальное значение t, первый элемент массива

S[0]=0;

for (int i=1;i<nt;i++)

{

T[i]=T[i-1]+dt;//заполнение массива значений по t

S[i]=S[i-1]+dt;

}

double X0=20;//определяем ограничения по x

const int nx=20;//число значнеий x

double X[nx];//массив значений x

double dx;

dx=X0/(nx-1);//шаг по переменной x

X[0]=-X0/2;//первый элемент массива

for (int i=1;i<nx;i++)//заполнение массива значений по x

{

X[i]=X[i-1]+dx;

}

/*Массивы значений функций (V1 и V - два соседних приближения)*/

double u[nt][nx];

double (*eta)[nt][nx];

eta=new double[nt][nt][nx];

double (*eta1)[nt][nx];

eta1=new double[nt][nt][nx];

double (*V)[nt][nx];

V=new double[nt][nt][nx];

double (*W)[nt][nx];

W=new double[nt][nt][nx];

double (*V1)[nt][nx];

V1=new double[nt][nt][nx];

for (int i=0;i<nx;i++) /*заполнение массивов при (начальное условие )*/

{

u[0][i]=fi(X[i]);

eta[0][0][i]=X[i];

V[0][0][i]=u[0][i];

}

for (int i=0;i<nt;i++)

{

for (int j=0;j<nt;j++)

{

for (int k=0;k<nx;k++)

{

V[i][j][k]=fi(X[k]); //заполнение массива

}

}

}

for (int j=0;j<nt;j++)

{

for (int k=0;k<nx;k++)

{

u[j][k]=fi(X[k]); //определение функции

}

}

ofstream out('fi.txt');

out<<nx<<endl;

for (int i=0;i<nx;i++)

{

for (int j=0;j<nt;j++)//t

{

out<<u[j][i]<<'t'; //запись значений функции в файл

}

out<<endl;

}

out.close();

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

double sumst=0,sumst1=0,sumst2=0,sum0s=0,sum0s1=0,sum0s2=0;

double e=0.0001;

double dif=11;

double dif1=0;

double difeta=15;

double difeta1=0;

double dif2=0;

for (int n=0;n<5;n++)

{

for (int n=0;n<5;n++)

{

dif=0;//max raznost

difeta=0;//max raznost

//заполнение массива eta

for (int k=0;k<nx;k++)//x

{

for (int j=0;j<nt;j++)//t

{

for (int i=0;i<nt;i++)//s

{

if (i<=j)

{

sumst=0;

//вычисление интеграла

for (int s1=i;s1<j;s1++)

{

sumst+=V[s1][j][k]*dt;

}

eta1[i][j][k]=X[k]-sumst;

}

if (i>j)

{

sumst=0;

for (int s1=i;s1>j;s1--)

{

sumst+=V[s1][j][k]*dt;

}

eta1[i][j][k]=X[k]+sumst;

}

difeta1=fabs(eta1[i][j][k]-eta[i][j][k]);

if (difeta1>difeta) difeta=difeta1;

}

}

}

cout<<'difeta = '<<difeta<<endl;

//заполнение массива V [i][j][k] и W[i][j][k]

for (int k=0;k<nx;k++)//x

{

for (int j=0;j<nt;j++)//t

{

for (int i=0;i<nt;i++)//s

{

V1[i][j][k]=eta1[0][j][k]*exp(-2.0*i);

sum0s=0;

for (int s2=0;s2<i;s2++)

{

sum0s+=exp(2.0*s2)*V1[s2][j][k]*V1[s2][j][k]*dt;

}

W[i][j][k]=exp(-2.0*i)*(eta1[0][j][k]*eta1[0][j][k]*0.5+sum0s);

dif1=fabs(V1[i][j][k]-V[i][j][k]);

if (dif1>dif) dif=dif1;

}

}

}

cout<<dif<<endl;

if (fabs(dif2-dif)<e) break;

dif2=dif;

for (int k=0;k<nx;k++)//x

{

for (int j=0;j<nt;j++)//t

{

for (int i=0;i<nt;i++)//s

{

V[i][j][k]=V1[i][j][k]; /*последнее приближение становится предыдущим и цикл продолжается */

eta[i][j][k]=eta1[i][j][k]; //аналогично

}

}

}

}

for (int k=0;k<nx;k++)//x

{

for (int j=0;j<nt;j++)//t

{

u[j][k]=W[j][j][k]; /*присваиваем функции u значения массива W[j][j][k] */

}

}

}

ofstream out2('u.txt');

out2<<nx<<endl;

for (int i=0;i<nx;i++)

{

for (int j=0;j<nt;j++)//t

{

out2<<u[j][i]<<'t'; //запись результатов в файл

}

out2<<endl;

}

out2.close();

/* запись файла значений известной функции u */

for (int k=0;k<nx;k++)//x

{

for (int j=0;j<nt;j++)//t

{

u[j][k]=(X[k]*X[k])/(4*exp(2.0*T[j])-2);}

}

ofstream out3('fu.txt');

out3<<nx<<endl;

for (int i=0;i<nx;i++)

{

for (int j=0;j<nt;j++)//t

{

out3<<u[j][i]<<'t';

}

out3<<endl;

}

out3.close();

delete []eta;

delete []eta1;

delete []V;

delete []V1;

getch();

return 0;

}

Результаты вычислений записываются в три файла. Первый файл содержит значения функции . Графически её можно представить так:

Во второй файл записываются результаты вычислений в самой программе. Функция выглядит так:

В третий файл записываются значения функции , зная что

Тогда графически это будет иметь вид:

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

Пример 2. Рассмотрим более сложное уравнение. В качестве функции выберем

Тогда исходное уравнение примет вид:

В качестве начального условия возьмём функцию

Тогда

Уравнения системы (26) перепишутся в виде:

Аналогично составляем программу численного решения. Заметим, что в этом случае не получится непосредственно вычислить . Придётся находить значения обеих функций и по их предыдущим приближениям.

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

При увеличении значений значения функции стремятся к нулю.

Таким образом, в программе используются следующие уравнения:

Программа 2.

#include 'stdafx.h'

#include <iostream>

#include <math.h>

#include <conio.h>

#include <fstream>

using namespace std;

double U(double t,double x,double u)

{

return u;

}

double fi(double x)

{

return exp(-pow(x,2));

}

double fi1(double x)

{

return -2*x*exp(-pow(x,2));

}

int _tmain(int argc, _TCHAR* argv[])

{

double T0=5;

const int nt=25;

double T[nt];

double S[nt];

double dt=T0/(nt-1);

T[0]=0;

S[0]=0;

for (int i=1;i<nt;i++)

{

T[i]=T[i-1]+dt;

S[i]=S[i-1]+dt;

}//return 2.0;

double X0=20;

const int nx=20;

double X[nx];

double dx;

dx=X0/(nx-1);

//cout<<dx<<endl;

X[0]=-X0/2;

for (int i=1;i<nx;i++)

{

X[i]=X[i-1]+dx;

}

double u[nt][nx];

double (*eta)[nt][nx];

eta=new double[nt][nt][nx];

double (*eta1)[nt][nx];

eta1=new double[nt][nt][nx];

double (*V)[nt][nx];

V=new double[nt][nt][nx];

double (*W)[nt][nx];

W=new double[nt][nt][nx];

double (*V1)[nt][nx];

V1=new double[nt][nt][nx];

double (*W1)[nt][nx];

W1=new double[nt][nt][nx];

for (int i=0;i<nx;i++)

{

u[0][i]=fi(X[i]);

eta[0][0][i]=X[i];

V[0][0][i]=u[0][i];

}

//V0(s,t,x)=fi(x)

for (int i=0;i<nt;i++)

{

for (int j=0;j<nt;j++)

{

for (int k=0;k<nx;k++)

{

V[i][j][k]=fi(X[k]);

//cout<<V[i][j][k]<<endl;

}

}

}

for (int j=0;j<nt;j++)

{

for (int k=0;k<nx;k++)

{

u[j][k]=fi(X[k]);

}

}

for (int i=0;i<nt;i++)

{

for (int j=0;j<nt;j++)

{

for (int k=0;k<nx;k++)

{

W[i][j][k]=fi1(X[k]);

//cout<<V[i][j][k]<<endl;

}

}

}

ofstream out('fi.txt');

out<<nx<<endl;

for (int i=0;i<nx;i++)

{

for (int j=0;j<nt;j++)//t

{

out<<u[j][i]<<'t';

}

out<<endl;

}

out.close();

double sumst=0,sumst1=0,sumst2=0,sum0s=0,sum0s1=0,sum0s2=0;

double e=0.0001;

double dif=11;

double dif1=0;

double difeta=15;

double difeta1=0;

double dif2=0;

for (int n=0;n<5;n++)

{

for (int n=0;n<5;n++)

{

dif=0;//max raznost

difeta=0;//max raznost

for (int k=0;k<nx;k++)//x

{

for (int j=0;j<nt;j++)//t

{

for (int i=0;i<nt;i++)//s

{

if (i<=j)

{

sumst=0;

for (int s1=i;s1<j;s1++)

{

sumst+=V[s1][j][k]*dt;

}

eta1[i][j][k]=X[k]-sumst;//sumst=integral ot s(i) do t(j) ot Vn-1=sum(V*dt)

}

if (i>j)

{

sumst=0;

for (int s1=i;s1>j;s1--)

{

sumst+=V[s1][j][k]*dt;

}

eta1[i][j][k]=X[k]+sumst;//sumst=integral ot s(i) do t(j) ot Vn-1=sum(V*dt)

}

difeta1=fabs(eta1[i][j][k]-eta[i][j][k]);

if (difeta1>difeta) difeta=difeta1; //нахождение максимальной разности между приближениями eta

}

}

}

cout<<'difeta = '<<difeta<<endl;

for (int k=0;k<nx;k++)//x

{

for (int j=0;j<nt;j++)//t

{

for (int i=0;i<nt;i++)//s

{

for (int s2=0;s2<i;s2++)

{

sumst1+=(2/((1+V[s2][j][k])*(1+V[s2][j][k]))-2/((1+V[s2][j][k])*(1+V[s2][j][k])))*dt;

}

W1[i][j][k]=exp(-eta1[0][j][k]*eta1[0][j][k])*(-2*(eta1[0][j][k]))*sumst1;

sum0s=0;

for (int s2=0;s2<i;s2++)

{

sum0s+=(2/(1+V[s2][j][k])-2/(1+V[s2][j][k]))*dt;

}

sumst2=0;

for (int s2=0;s2<i;s2++)

{

sumst2+=(W[s2][j][k]*W[s2][j][k])*dt;

}

V1[i][j][k]=exp(-eta1[0][j][k]*eta1[0][j][k])+sum0s+sumst2;

//V1[i][j][k]=fi(X[k])*exp(-sum0s);

dif1=fabs(V1[i][j][k]-V[i][j][k]);

cout<<'ijk'<<'t'<<i<<'t'<<j<<'t'<<k<<'t'<<V1[i][j][k]<<'t'<<V[i][j][k]<<'tdif'<<dif<<endl;

if (dif1>dif) dif=dif1; //нахождение максимальной разности между соседними приближениями

}

}

}

cout<<dif<<endl;

if (fabs(dif2-dif)<e) break; //Условие завершения программы

dif2=dif;

for (int k=0;k<nx;k++)//x

{

for (int j=0;j<nt;j++)//t

{

for (int i=0;i<nt;i++)//s

{

V[i][j][k]=V1[i][j][k];

W[i][j][k]=W1[i][j][k];

eta[i][j][k]=eta1[i][j][k];

}

}

}

}

for (int k=0;k<nx;k++)//x

{

for (int j=0;j<nt;j++)//t

{

u[j][k]=V[j][j][k];

}

}

}

ofstream out2('u.txt');

out2<<nx<<endl;

for (int i=0;i<nx;i++)

{

for (int j=0;j<nt;j++)//t

{

out2<<u[j][i]<<'t';

}

out2<<endl;

}

out2.close();

delete []eta;

delete []eta1;

delete []W;

delete []W1;

delete []V;

delete []V1;

getch();

return 0;

}

Результаты вычислений записываются в два файла. Первый файл содержит значения функции . Графически ( с помощью пакета для математических расчётов Scilab 5.2.2) её можно представить так:

Во второй файл записываются результаты вычислений в самой программе. Функция выглядит так:

Заключение

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

В работе исходное дифференциальное уравнение преобразовано в систему из двух квазилинейных уравнений. А посредством метода дополнительного аргумента эта система сведена к системе интегральных уравнений, достаточно простых по структуре. Затем эта система решается с помощью численных методов с последующей реализацией на ПК. Получены трёхмерные графики функции

Доказательство существования решения задачи Коши (1) - (2) позволяет применять метод аргумента для решения уравнения (1) с различными функциями , что иллюстрируется примерами.

Литература

Алексеенко, С. Н., Эгембердиев Ш. А. Применение метода дополнительного аргумента к одномерному аналогу задачи протекания // Материалы IV научной конференции КРСУ, Бишкек, май 1997г. - Бишкек: КРСУ, 1997.-С.26.

Алексеенко, С. Н., Эгембердиев Ш. А. Применение метода дополнительного аргумента к системе нелинейных уравнений типа полной производной по времени // Исслед. по интегродифференциальным уравнениям. - Бишкек: Илим, 1997. - Вып.26. - С. 161-169.

Алексеенко, С. Н., Эгембердиев Ш. А. Применение метода дополнительного аргумента к одномерному варианту задачи протекания с краевыми условиями третьего типа для скорости // Исслед. по интегродифференциальным уравнениям. - Бишкек: Илим, 1998. - Вып.27. - С. 225-243.

Алексеенко, С. Н., Эгембердиев Ш. А. Решение системы уравнений в частных производных первого порядка с начально-краевыми условиями методом дополнительного аргумента // Традиции и новации в культуре университетского образования (КТУ): Сб. трудов международ. науч. конференц. - Бишкек: Технология, 1998. - С.106-112.

Смирнов В. И. Курс высшей математики. Т. IV, Физматгиз. 1958.

Петровский И.Г. Лекции по теории обыкновенных дифференциальных уравнений. Изд. «Наука». М. 1970. 280 с.

ref.by 2006—2019
contextus@mail.ru