Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Численные методы Часть 5..pdf
Скачиваний:
9
Добавлен:
15.11.2022
Размер:
7.37 Mб
Скачать

Алгоритм решения

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

 

 

 

 

 

 

 

 

Программа 2.1

/ /

Стационарная задача

теплопроводности

//

Ne

число

сегментов

 

 

//

Nk

число

узлов

 

 

 

//

locale

массив

коэффициентов системы уравнений для сегмента

//

localF

массив

правых частей системы уравнений для сегмента

//

globalC

массив

коэффициентов системы уравнений для объекта

//

globalF

массив

коэффициентов системы уравнений для объекта

/ /

хО

массив

координат узлов

 

//

начальная

точка

 

 

/ /

х1

конечная

точка

 

 

//

h

длина

сегмента

 

 

/ /

W0

амплитуда

мощности источников

/ /

L

коэффициент

теплопроводности

//

ТО

температура

на

левом торце

(хО)

//

Те

температура

среды

 

/ /

А

коэффициент

теплоотдачи

 

#define

Ne

64

 

 

 

 

 

void main(void)

 

 

 

 

{ double

globalC[Ne+1] [Ne+1], globalF[Ne+1], x[Ne+l] ;

 

double

locale[2][2],

localF[2],

x0=0., xl=M_PI, h=(xl-

xO)/Ne;

 

 

 

 

 

 

 

 

double L=70.0, N=1000.0, T0=100.0, Te=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<Nk; i++)

for(globalF [i]=0.0, j=0; j<Nk; j++) globalC[i] [j]=0.0; for(k=0; k<Ne ; k++)

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

{locale[0][0]=L/h; locale [0] [1]=-L/h; l ocale[1] [0]=-L/h; l ocale[1][1]=L/h;

localF [0] =W0* (cos (x[k] )- (sin(x[k+l] )-sin(x[k])) /h) ; localF [1] =W0* ((sin(x[k+l] )-sin(x[k] ))/h-cos (x[k+l] ));

//формирование матриц коэффициентов и правых частей для объекта

globalC [к] [к]+=1оса1С [0] [0] ; globalC[к] [к+1]+=1оса1С[0] [1] ; globalC [к+1] [к]+=1оса1С[1] [0] ;

globalC [к+1] [к+1]+=1оса1С [1] [1] ;______________________________

71

X

 

 

я

л

 

 

^k%^\dx = - =-89,1268,

|Х(р'ср'зdx = Jtp'cp\dx = 0,

 

0

h

 

 

0

 

0

 

W0Jsinx<pxdx = -W0sin2/>-2siny> = 52,7393;

 

 

о

 

 

h

 

 

 

П

 

 

 

Я

л

 

 

jA.(p2<po<& = 0,

|X(p'2<P|d£c = —= -89,1268,

 

jM<p'2fd x = ^

= \78,2535,

[Хф'2ф;<& = y = -89,1268,

 

о

h

 

 

о

 

h

 

’fi / / , n

... "r .

.

sin3/»-2sin2/H-sin/j

J Лф2ф4<& = 0,

fF0J sin хф2Л = -Ж0------------ ------------- = 74,5847;

'зФоdx = |А.фзф'£*с = 0 ,

|Хфзф'2<& = -

= -89,1268,

 

^

О*1

 

 

^

 

\

 

/Мфз )2^

= у

= 178,2535,

| Х

ф » = - = -89,1268,

 

и/"г •

,

 

... sin*. - 2sin.r,+sinx,

 

 

W0 Ism^ф3о!г= -JV0----- -----------

2-------- - = 52,7393;

 

о

 

 

 

*

 

 

 

Я

 

 

 

 

Я

л

 

|Хф'ф'йЬг = |Яф'4ф ^

= |Я,ф'ф2Л = 0,

|Я.ф'4фз<& = - = -89,1268,

ГХ(ф;)2оЬс+ а = - + а = 119,127,

оh

W0Jsinлгфзdx = ^ ( Sm4/7 in3/; - cosЗАj + aT„ =609,9684.

Подстановка полученных значений в (2.17) приводит к системе (табл. 2.1) пяти линейных алгебраических уравнений