Точные методы позволяют получить верное выражение решения через начальные данные. Тем не менее, они применимы в большинстве случаев к линейным задачам в областях постой формы (прямоугольник, круг и т.д.), когда дифференциальные уравнения и краевые условия линейны относительно искомой функции и ее производных [1].
Приближенные методы решения можно поделить на две группы:
методы, в которых приближенное решение получается в аналитической форме, в виде отрезка некоторого ряда;
методы, в которых приближенное решение получается в виде таблиц в некоторых точках области которую, мы рассматриваем (численные методы).
В данной статье приводится описание решения одной из физических задач методом сеток. В области изменения независимых переменных вводят сетку – дискретную совокупность узловых точек. Вместо функций непрерывного аргумента рассматриваются сеточные функции. Дифференциальные уравнения и краевые условия заменяются приближенными сеточными уравнениями, связывающими значения искомой функции в узлах сетки. В результате получается система линейных алгебраических уравнений, которую можно тем или иным способом решить на компьютере. В качестве примера рассмотрим дифференциальное уравнение теплопроводности, которое имеет вид [2]
, (1)
где , с – удельная теплоемкость материала, ρ – плотность материала, λ – коэффициент теплопроводности, t– совокупность значений температуры в данный момент времени τ. Требуется найти функцию , удовлетворяющую начальному условию
, (2)
и краевым условиям
. (3)
Задача (1)–(3) является смешанной задачей, так как содержит начальные и граничные условия. Приведем описание реализации метода сеток на языке программирования Borland Pascal 7.0. Решение приведем в общем случае уравнения . Для нахождения приближенного решения параболического уравнения разработаем программный продукт: в области , удовлетворяющей условиям
Разобьем область D прямыми: . Здесь h – шаг по оси x, τ– шаг по оси t.
Для того что бы вычислить значения функции на каждом шаге используем формулу:
.
Текст программы, реализованной на языке программирования Borland Pascal, приведен в конце статьи.
Ниже будут описаны функции и процедуры программного модуля и их назначение.
1. Процедура «INIT» осуществляет ввод и считывание вводимых данных. Используются следующие переменные: a – коэффициент перед старшей производной; l – длина отрезка, заключающего переменную x;tt - длина отрезка, заключающего переменную t;hx – шаг по оси Ох, шаг ht по оси Ot вычисляется по формуле ; T0, Tl – значения функции на границе при x = 0 и x = l соответственно. Значение функции в начальный момент времени вычисляется в процедуре «TREAT».
2. Процедура «TREAT» вычисляет значение функции в начальный момент времени, используя цикл с предусловием, реализующийся с помощью оператора «while». Здесь же непосредственно происходит и пошаговое вычисление значения функции по формуле.
3. Программа снабжена двумя механизмами вывода результатов работы: на экран в виде таблицы и в текстовый файл. Процедура «OUTPUT» как раз организует вывод полученных значений на экран и их сохранение в файл «RESULT.txt».
В качестве примера рассмотрим решение уравнения с начальными и краевыми условиями при . Задав прямоугольную сетку с шагом hx = 0.1 и ht = 0.0017, получим следующее решение:
Решение уравнения теплопроводности на языке программирования BorlandPascal
0.000000 |
0.309017 |
0.587785 |
0.809017 |
0.951057 |
1.000000 |
0.000000 |
0.303976 |
0.578196 |
0.795818 |
0.935541 |
0.983686 |
0.000000 |
0.307600 |
0.568763 |
0.782835 |
0.920278 |
0.967637 |
0.000000 |
0.314027 |
0.560914 |
0.770063 |
0.905264 |
0.951851 |
0.000000 |
0.320826 |
0.554625 |
0.757739 |
0.890495 |
0.936083 |
0.000000 |
0.327037 |
0.549510 |
0.746012 |
0.875967 |
0.920176 |
0.000000 |
0.332332 |
0.545182 |
0.734921 |
0.861676 |
0.904084 |
В таблице ось x расположена горизонтально, а ось t расположена вертикально и направлена вниз.
Построим кривые, иллюстрирующие решение дифференциального уравнения. Построение будем проводить в программе для работы с электронными таблицами Microsoft Office Excel 2003. Эволюция решения дифференциального уравнения во времени приведена на рисунке. Кривые построены по данным, приведенным в таблице начиная со значения времени (ось внизу) t = 0 с шагом 0,0017. Слева расположена ось изменения переменной х от начального значения х = 0 до х = 1 с шагом 0,1.
0,0017 0,0034 0,0051 0,0068 0,0085 0,0102
Программный код
program LAB8; uses CRT; var i,j,nt,nx:integer; l,a,tt,hx,ht,Tt0,T0,Tl,x,t1:real; T:array[0..200,0..50] of real; {--------------------------------------} procedure INIT; begin write('a='); readln(a); write('l='); readln(l); write('t='); readln(tt); write('hx='); readln(hx); ht:=sqr(hx)/6; writeln('ht=',ht:1:4); write('T[x=0]='); readln(T0); write('T[x=l]='); readln(Tl); end; {-------------------------------------} procedure TREAT; begin i:=1; j:=0; x:=0; while x |