Рома_Шелев_II
.pdf
|
L [ |
|
1 |
] |
= GetA( |
1 |
, |
2 |
) |
/ |
GetA( |
1 |
, |
1 |
) |
|
; |
|
|
|
|
|
|
|
|
||||||
|
M[ |
|
1 |
] |
= B[ |
0 |
] |
/ |
GetA( |
1 |
, |
1 |
|
) |
; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
for |
|
( |
I = 2 ; |
I |
< N |
; |
I++ |
) |
{ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
L [ |
I |
] |
= GetA( |
I |
, |
I |
+ 1 |
|
) |
/ |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
( |
GetA( |
I |
, |
I |
1 |
) |
L [ |
I |
1 |
] |
+ |
GetA( |
I |
, |
I |
) |
) |
; |
|
|
|||||||
|
|
|
M[ |
I |
] |
= |
( |
B[ |
I |
1 |
] |
M[ |
I |
1 |
|
] |
GetA( |
I |
, |
I |
1 |
) |
) |
||||||||
|
} |
; |
|
/ |
( |
GetA( |
I |
, |
I 1 |
) |
L [ |
I 1 |
] |
|
+ GetA( |
|
I |
, |
I |
) |
) |
; |
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
X[ |
|
N 1 |
] |
= |
( |
B[ |
N 1 |
] |
M[ |
N 1 |
|
] |
GetA( |
N |
, |
N 1 |
) |
) |
||||||||||||
|
/ |
( |
|
L [ |
N 1 |
] |
GetA( |
N , |
N 1 |
) |
+ GetA( N |
, |
N |
) |
) |
; |
|
|
|
||||||||||||
|
for ( I = N 2 ; I >= 0 ; I ) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
X[ I ] = L [ I + 1 ] X[ I + 1 ] + M[ I + 1 ] ; |
|
|
|
|
|
|
||||||||||||||||||||||||
} |
; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void PrintX ( ) |
{ |
i n t |
I |
; |
for |
( |
I |
|
= |
0 |
; |
I |
< N |
; |
I++ |
) |
|
|
|
|
|
|
|
||||||||
|
p r i n t f ( |
|
" |
%1 6 . 1 4 l f \n" |
, X[ |
I |
] |
) |
|
; |
p r i n t f ( |
|
"\n" |
) |
; |
} |
; |
|
|
|
|
||||||||||
void PrintB ( ) |
{ |
i n t |
I |
; |
for |
( |
I |
|
= |
0 |
; |
I |
< N |
; |
I++ |
) |
|
|
|
|
|
|
|
||||||||
|
p r i n t f ( |
|
" |
%1 6 . 1 4 l f \n" |
, B[ |
I |
] |
) |
|
; |
p r i n t f ( |
|
"\n" |
) |
; |
} |
; |
|
|
|
|
||||||||||
i n t main ( ) |
{ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
i n t |
|
I |
= 0 |
; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CalcB ( |
B |
) ; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
CalcX ( ) |
; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
PrintX ( ) |
; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
return |
0 |
; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
} |
; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5.4Метод простой итерации
#i n c l u d e <s t d i o . h> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
#i n c l u d e |
<math . h> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
#i n c l u d e " Trapezy . c " |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
#i n c l u d e |
"GetA . c " |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#d e f i n e |
N |
20 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#d e f i n e |
Accuracy |
0 .0 1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
double Delta ; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
double X[ |
N ] ; // |
S o l u t i o n |
o f |
system |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
double B[ N ] ; |
// I n t e g r a l array |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
void CalcX ( ) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
double NewX[ |
|
N ] |
; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
i n t |
I |
, J ; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
NewX[ 0 ] = |
( |
B[ |
0 |
] |
GetA( |
1 , |
2 |
) |
X[ |
1 |
] |
) / |
GetA( |
1 |
, |
1 |
) |
; |
|||||||
NewX[ |
N 1 |
] |
= B[ |
N 1 |
] |
/ |
GetA( |
N |
, |
N |
) |
; |
|
|
|
|
|
|
|
|
|||||
for ( |
I = 1 |
; |
I |
< N 1 |
|
; |
I++ ) |
{ |
|
|
|
|
|
X[ |
|
1 |
|
|
|
|
|
||||
|
NewX[ I |
] |
= |
( |
B[ |
I |
] |
GetA( |
I |
+ |
1 |
, |
I |
) |
I |
] |
|
|
|
|
|||||
} ; |
GetA( |
I |
+ |
1 |
, |
I + |
|
2 |
) |
X[ |
I |
+ |
1 |
] |
) |
/ |
GetA( |
I |
+ 1 |
, |
I |
+ |
1 |
) ; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11
Delta |
= 0 . |
; |
|
|
|
|
|
|
|
||
for |
( |
I |
= 0 |
; |
I < N |
; |
I++ ) |
|
|
|
|
{ |
i f |
( |
f a b s ( |
X[ |
I |
] |
NewX[ |
I ] |
) > Delta |
) |
|
Delta |
|
= f a b s ( |
X[ |
I |
] |
NewX[ |
I |
] ) ; X[ I |
] = NewX[ I ] ; } ; |
};
void PrintX ( )
{ i n t I |
; |
for ( I = 0 ; |
I |
< N |
; |
I++ |
) |
p r i n t f ( |
" |
%1 6 . 1 4 l f \n" |
, |
X[ |
I |
] ) ; |
p r i n t f ( "\n" ) ; } ; |
i n t main ( ) |
{ |
|
|
|
|
|
|
i n t |
I = 0 ; |
|
|
|
|
|
CalcB ( B ) ;
do CalcX ( ) ; while ( Delta > 0.001 ) ; PrintX ( ) ;
return 0 ;
} ;
5.5вспомогательная программа GetA. c
#d e f i n e |
N 20 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#d e f i n e |
Accuracy |
0 .0 1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
/ Function |
to |
Get |
needed |
A array |
value / |
|
|
|
|
|
|
|
|||||||
/ ==================================== / |
|
|
|
|
|
|
|
||||||||||||
double GetA |
( |
i n t |
I |
, |
i n t |
J ) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
double Res |
; |
|
( ( |
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
double Aver |
= |
double ) |
|
( |
I |
I |
) |
+ |
1 . |
) |
|
; |
|
|||||
|
i f ( |
I == 1 && J == 1 ) Res = |
0 . 5 |
; |
// |
F i r s t |
|
A row |
|
||||||||||
|
else |
i f |
( |
I == 1 && J == 2 |
) |
Res = |
0.25 ; / / |
|
F i r s t |
A row |
|||||||||
|
else |
i f |
( |
I == N && J == N ) |
Res = |
1 . |
; |
// |
Last A row |
||||||||||
|
else |
i f |
( |
I == N && J == I 1 |
) |
Res = |
0.2 |
|
; |
|
|
||||||||
|
else i f ( |
I < N && J == I 1 ) |
|
|
|
|
|
|
|
|
|
||||||||
|
Res = 1 . / |
( |
( ( |
double ) |
( |
I |
|
I |
) |
|
+ |
5 . ) |
|
) |
; |
|
|||
|
else |
i f |
( |
I < N && J == I ) |
|
Res = |
1 . |
|
; |
|
|
|
|
|
|||||
|
else i f ( |
I < N && J == I + 1 ) |
( |
|
|
|
|
|
|
|
I ) + 5 . ) ) ; |
||||||||
|
Res = |
( |
( |
double ) |
I + 3 . ) |
|
/ |
( |
( |
|
double |
|
) |
( I |
|||||
|
else Res = |
0 . |
; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
} ; |
return |
Res |
; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5.6Функции на Matlab для построения графиков
Построение значений системы и интеграла
xkm=load ( ’ integral20 . txt ’ ) ; plot (xkm ( : , 1 ) ,xkm ( : , 2 ) , ’ r ’ )
12
6Заключение
По результатам лабораторной работы можно сказать, что и метод прогонки, и метод минимальной невязки можно использовать для решения систем линейных уравнений. Преимуществом метода прогонки является простота реализации, но при этом для некоторых систем возможно накопление погрешности. Метод минимальной невязки обеспечивает быструю сходимость к решению системы с заданной точностью, но реализуется сложнее.
Список литературы
[1]Самарский А. А., Введение в численные методы. М.: Наука. 1982. 272с.
[2]Квадратурные формулы. Численное интегрирование /сос. В.В.Кулинич - Нижний Новгород, изд. ННГУ им.Н.И.Лобачевского, 2005 г. -24 с.
[3]Фаддеев Д. К., Фаддеева В. Н., Вычислительные методы линейной алгебры. М.-Л.: Физматгиз. 1960. 656 с.
13