- •Выполнил:
- •Алгоритм решения
- •Реализация алгоритма
- •Z ai |ф*ФА = /ф* cosxdx’ к = 0,4,
- •Разрешающие соотношения
- •Алгоритм решения
- •Результаты расчётов
- •Разрешающие соотношения
- •Алгоритм решения
- •Реализация алгоритма
- •2.1. Аппроксимация решения кусочно-линейными функциями
- •Алгоритм решения
- •Результаты расчетов
- •Разрешающие соотношения
- •Алгоритм решения
- •Реализация алгоритма
- •Разрешающие соотношения
- •Алгоритм решения
- •Реализация алгоритма
- •3.1. Явная разностная схема
- •Алгоритм решения
- •Реализация алгоритма
- •Разрешающие соотношения
- •Программа 3.2
- •Реализация алгоритма
- •Алгоритм решения
- •Реализация алгоритма
Алгоритм решения
Ниже приведён фрагмент программы на языке Си, реализующей процедуру построения приближённого решения дифференциального уравнения с использованием иерархических кусочно-непрерывных полиномов второй степени.
Программа 2.3
// |
Стационарная задача теплопроводности |
|
||||||
// |
Ne |
число |
сегментов |
|
|
|||
// |
Nk |
число |
узлов |
|
|
|
||
// |
locale |
массив |
коэффициентов |
системы уравнений для |
сегмента |
|||
// |
localF |
массив |
правых частей |
системы уравнений для |
сегмента |
|||
// |
globalC |
|
массив |
коэффициентов системы уравнений для объекта |
||||
// |
globalF |
|
массив |
коэффициентов системы уравнений для объекта |
||||
/ / |
х |
массив координат узлов |
|
|
||||
// |
хО |
начальная |
точка |
|
|
|||
/ / |
х1 |
конечная точка |
|
|
||||
/ / |
h |
длина |
сегмента |
|
|
|||
// |
W0 |
амплитуда |
мощности источников |
|
||||
/ / |
L |
коэффициент |
теплопроводности |
|
||||
// |
ТО |
температура |
на левом торце (хО) |
|
||||
// |
Те |
температура |
среды |
|
|
|||
// |
А |
коэффициент |
теплоотдачи |
|
|
#define Ne 64
void main(void)
{double globalC[2*Ne+l] [ 2*Ne+l], globalF[2*Ne+l] , x[Ne+l] ; double locale[2] [2] , localF[2], x0=0., xl=M_PI, h= (xl-xO) /Ne; double L=70.0, W=1000.0, T0=100.0, 76=20.0, A=30.0;
int i, j, k, Nk=Ne+l;
//определение координат и номеров узлов каждого сегмента for(k=0; k<Nk; k++) x[k]=x0+h*k;
//инициализация массивов коэффициентов и правых частей
//системы уравнений
for(i=0; i<2*Ne+l; i++)
for(globalF[i]=0.0/ j=0; j<2*Ne+l; j++) globalC[i] [j]=0.0; for(k=0; k<2*Ne+l; k++)
// формирование матриц коэффициентов и правых частей для сегмента
{locale [0] [0]=L/h;
locale [0] [1]=1оса1С[1] [0]=0.0; locale [0] [2]=localC[2] [0]=L/h; locale [1] [1]=16.0 *L/(3.0*h); locale [1] [2]=localC [2] [1]=0.0; locale [2] [2]=2.0*L/h;
localF [0] =W0* (cos (x [k] )- (sin(x[k+l] )-sin(x[k] )) /h) ; localF [1] =W0* (8.0* (cos (x [k] )-cos (x [k+1] ))/ (h*h) -
4 . 0 * (sin(x[k])+sin(x[k+1]))/h);
localF [2] =W0* ((sin (x [k+1] )-sin(x [k] )) /h-cos (x [k+1] )) ;