Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по численным методам.doc
Скачиваний:
258
Добавлен:
02.05.2014
Размер:
4.81 Mб
Скачать

Квадратурная формула Гаусса

Входные параметры: a,b– интервал интегрирования;fun– вид функции.

Выходные параметры: d– погрешность интегрирования;res– значение интеграла функции.

Схема алгоритма показана на рисунке 34.

Пример. Вычислить приближенное значение определенного интеграла с точностью 0,01

Текст программы:

Procedure Kvadratur(fun:string;a,b:real;var res,d:real);

var c,h,h1,c1,x1,x2,x3,f1,f3,s1,s2:real;

n:integer;

begin

c:=sqrt(3/5);

h1:=(b-a)/2;

c1:=c*h1;

x2:=(b+a)/2;

f1:=Execute(fun,x2-c1);

f3:=Execute(fun,x2+c1);

s1:=h1*(5*f1+8*Execute(fun,x2)+5*f3)/9;

n:=2;

repeat

h:=(b-a)/n; h1:=h/2; c1:=c*h1;

x2:=a+h1; x1:=x2-c1; x3:=x2+c1; s2:=0;

for i:=1 to n do

begin

s2:=s2+5*Execute(fun,x1)+8*Execute(fun,x2)+5*Execute(fun,x3);

x1:=x1+h; x2:=x2+h; x3:=x3+h;

end;

s2:=s2*h1/9; d:=abs(s1-s2)/63; s1:=s2; n:=2*n;

until d<h;

res:=s2;

end;

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

Результат: - 0.4863854

Погрешность вычисления:0,007

Рисунок 34 - Схема алгоритма квадратурной формулы Гаусса

Варианты заданий для решения задач численного интегрирования и дифференцирования приведены в таблице 7.

Дифференцирование с помощью сплайнов

Входные параметры: a,b– интервал дифференцирования;x– точка дифференцирования;n– число точек дифференцирования;fun– вид функции.

Выходные параметры: y_1,y_2 – значения первой и второй производной в точкеxсоответственно.

Схема алгоритма показана на рисунке 35.

Пример. Продифференцировать функцию , количество точек разбиения 5, значение точки х=1.

Текст программы:

procedure Spl_Integr(fun:string;a,b,x:real;n:integer;var y_1,y_2:real);

var h,h1,h2,aa:real;

y:array of real;

begin

h:=(b-a)/n;

SetLength(y,n-1);

aa:=a;

for i:=0 to length(y)-1 do

begin

y[i]:=execute(fun,aa); form3.Memo1.Lines.Add(floattostr(y[i]));

aa:=aa+h;

end;

i:=trunc((x-a)/h+h/2);

h1:=2*h; h2:=h*h; if i=0 then

begin

y_1:=(-3*y[0]+4*y[1]-y[2])/h1; y_2:=(2*y[0]-5*y[1]+4*y[2]-y[3])/h2;

end;

if (i>0)and(i<n) then begin

y_1:=(-y[i-1]+y[i+1])/h1; y_2:=(y[i-1]-2*y[i]+y[i+1])/h2; end;

if i=n then

begin

y_1:=(y[n-2]-4*y[n-1]+3*y[n])/h1; y_2:=(-y[n-3]+4*y[n-2]-5*y[n-1]+2*y[n])/h2;

end;

end;

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

Первая производная:3,808

Вторая производная:10,00

Рисунок 35 - Схема алгоритма дифференцирования с помощью сплайнов

Варианты заданий приведены в таблице 7.

Лабораторная работа №11

Жесткие задачи для систем ОДУ

Метод Гира

Входные параметры: n– порядок системы;y0 – массив изnчисел, содержащий решение в начальной точке;eps– интегрирования;masq– массив размерностиn´n, содержащий матрицу системы.

Выходные параметры: res– массив изnчисел, содержащий решение системы.

Схема алгоритма показана на рисунке 36.

Пример. Решить задачу Коши для системы

при начальных условиях у1(0)=1, у2(0)=0.

Текст программы:

procedure gira(a,b:real;n,kolfun:integer;x:real;var y_1:TFunZnach);

var fun:array[1..NumFun,1..4] of real;

h:real;

begin

h:=(b-a)/n;

for i:=1 to 4 do

begin runge_ku(a,b,1,1,x,y_1); x:=x+h;

for k:=1 to kolfun do fun[k,i]:=y_1[k];

end;

for i:=5 to n do

begin

for k:=1 to kolfun do begin

y_1[k]:=fun[k,4]; runge_ku(a,b,1,1,x,y_1);

y_1[k]:=1/25*(48*fun[k,4]-36*fun[k,3]+16*fun[k,2]-3*fun[k,1]+12*h*f(y_1[k],x));

fun[k,1]:=fun[k,2]; fun[k,2]:=fun[k,3]; fun[k,3]:=fun[k,4]; fun[k,4]:=y_1[k];

end;

x:=x+h;

end;

end;

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

Х

У(1)

у(2)

.10000Е+00

.48703Е+00

.34270Е+00

.20000Е+00

.35432Е+00

.32700Е+00

.30000Е+00

.28565Е+00

.27417Е+00

.40000Е+00

.23483Е+00

.22550Е+00

.50000Е+00

.19396Е+00

.18492Е+00

.60000Е+00

.16060Е+00

.15159Е+00

.70000Е+00

.13330Е+00

.12430Е+00

.80000Е+00

.11095Е+00

.10195Е+00

.90000Е+00

.83650Е-01

.82750Е-01

.10000Е+01

.68668Е-01

.67768Е-01

.11000Е+01

.56402Е-01

.55502Е-01

.12000Е+01

.46359Е-01

.45459Е-01

.13000Е+01

.38137Е-01

.37237Е-01

.14000Е+01

.31405Е-01

.30505Е-01

.15000Е+01

.25894Е-01

.24994Е-01

.16000Е+01

.21381Е-01

.20481Е-01

.17000Е+01

.17687Е-01

.16787Е-01

.18000Е+01

.14662Е-01

.13762Е-01

.19000Е+01

.12185Е-01

.11285Е-01

.20000Е+01

.92579Е-02

.91678Е-02

.

Рисунок 36 - Схема алгоритма метода Гира

Варианты заданий для решения Жестких задач для систем ОДУ приведены в таблице 8.

Метод Ракитского (матричной экспоненты).

Входные параметры: n– порядок системы;x– начальное значениеx;

h– шаг интегрированияh;Q– массив изnчисел, содержащий решение в начальной точке;F– массив размерностиn´n, содержащий матрицу системы.

Выходные параметры: X– массив изnчисел, содержащий решение системы.

Схема алгоритма показана на рисунке 37.

Пример. Решить задачу Коши для системы

при начальных условиях у1(0)=1, у2(0)=0.

Текст программы:

ProcedureMetRak(N:Word;VarH:Real;A:MasReal;VarF,Q:MasReal;Nts,Ind:Integer);

Var

RabMas1: MasReal;

RabMas2: MasReal;

S,Fak : Real;

i,j,k : Byte;

BEGIN

IF Ind=0 Then

Begin

S:=0;

For i := 1 To N Do

For j := 1 To N Do S:=S+A[i,j]*A[i,j];

S:=Sqrt(S); H:=0.1/S; Nts := 0; RabMas1 := A;

For I := 1 To N Do

Begin

For J := 1 To N Do Begin

Q[i][j] := A[i][j]*H/2; F[i][j] := A[i][j]*H

End;

Q[i][i] := Q[i][i] + 1; F[i][i] := F[i][i] + 1

End;

Fak := 1;

For K := 2 To 4 Do

Begin Fak := Fak*k; MulMat(N, RabMas1, A, RabMas2);

For I := 1 To N Do

For J := 1 To N Do

Begin

F[i][j] := F[i][j] + RabMas2[i][j]*Step(H, k)/Fak;

IF k < 4 Then Q[i][j] := Q[i][j] + RabMas2[i][j]*Step(H, k)/(Fak*(k+1));

End;

RabMas1 := RabMas2

End;

MulConst(N, h, Q)

End;

IF Nts > 0 Then

Begin

H := H*Step(2,Nts); MulMat(N, F, F, RabMas1);

RabMas2 := F; F := RabMas1;

For I := 1 To N Do RabMas2[i][i] := RabMas2[i][i] + 1;

MulMat(N, Q, RabMas2, RabMas1);

Q := RabMas1

End;

End;

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

х

у(1)

у(2)

.10000Е+00

.47703Е+00

.34170Е+00

.20000Е+00

.34432Е+00

.32600Е+00

.30000Е+00

.27565Е+00

.27317Е+00

.40000Е+00

.22483Е+00

.22450Е+00

.50000Е+00

.18396Е+00

.18392Е+00

.60000Е+00

.15060Е+00

.15059Е+00

.70000Е+00

.12330Е+00

.12330Е+00

.80000Е+00

.10095Е+00

.10095Е+00

.90000Е+00

.82650Е-01

.82650Е-01

.10000Е+01

.67668Е-01

.67668Е-01

.11000Е+01

.55402Е-01

.55402Е-01

.12000Е+01

.45359Е-01

.45359Е-01

.13000Е+01

.37137Е-01

.37137Е-01

.14000Е+01

.30405Е-01

.30405Е-01

.15000Е+01

.24894Е-01

.24894Е-01

.16000Е+01

.20381Е-01

.20381Е-01

.17000Е+01

.16687Е-01

.16687Е-01

.18000Е+01

.13662Е-01

.13662Е-01

.19000Е+01

.11185Е-01

.11185Е-01

.20000Е+01

.91579Е-02

.91578Е-02

Рисунок 37 - Схема алгоритма метода Ракитского

Варианты заданий

Таблица 8

№ вари-

анта

Матрицасистемы

Вектор начальных условий

1

2

3

1

-.18000Е + 01

-.51350Е + 02

.12175Е + 02

.51650Е + 02

.23200Е+02

-.41500Е+02

-.25000Е+00

.16800Е+02

.97000Е + 01

-.40000Е + 02

.50000Е + 01

.30300Е + 02

.83500Е + 01

-.31350Е + 02

.21750Е + 01

.21500Е + 02

.8415Е+00

.5403Е+00

-.4161Е+00

.9093Е+00

2

.22600Е + 02

-.26800Е + 02

-.46000Е + 01 .22000Е + 01

.47600Е+02

-.22000Е+02

-.17000Е+02

-.27600Е+02

.29600Е + 02

-.20000Е + 02

-.10000Е + 02

-.96000Е + 01

.27800Е + 02

-.16800Е + 02

-.96000Е + 01

-.1ЗОООЕ+02

.9093Е+00

-.4161Е+00

-.6536Е+00

-.7568Е+00

3

.37000Е + 02

-.18917Е + 02

-.13042E+ 02

-.20583Е + 02

.65333Е+02

-.15833Е+02

-.27083E+02

-.52000Е+02

.42833Е + 02

-.1ЗЗЗЗЕ + 02

-.18333E + 02

-.29500Е + 02

.40583Е + 02

-.12250Е + 02

-.16375E+ 02

-.30833Е + 02

.1411Е+00

-.9900Е+00

.9602E+00

-.2794Е+00

4

.48900Е + 02

-.15200Е + 02

-.19400Е + 02

-.36700Е + 02

.81400Е+02

-.13000Е+02

-.35500Е+02

-.71400Е+02

.54400Е + 02

-.10000Е + 02

-.25000Е + 02

-.44400Е + 02

.51700Е + 02

-.10200Е + 02

-.21900Е + 02

-.44500Е + 02

-.7568Е+00

-.6536Е+00

-.1455Е+00

.9894Е+00

5

.59800Е + 02

.13150Е + 02

-.24925Е + 02

-.50150Е + 02

.96800Е+02

-.11500Е+02

-.43250Е+02

-.88800Е+02

.65300Е + 02

-.80000Е + 01

-.З1000Е + 02

-.57300Е + 02

.62150Е + 02

-.91500Е + 01

-.26925Е + 02

-.56500Е + 02

-.9589Е+00

.2837Е+00

-.8391Е+00

-.5440Е+00

6

.70200Е + 02

-.11933Е + 02

-.30033Е + 02

-.62267Е + 02

.11187Е+03

-.10667Е+02

-.50667Е+02

-.10520Е+03

.75867Е + 02

-.66667Е + 01

-.36667Е + 02

-.69200Е + 02

.72267Е + 02

-.86000Е + 01

-.31700Е + 02

-.67667Е + 02

.9602Е+00

.9602Е+00

.8439Е+00

-.5366Е+00

7

.80314Е + 02

.11193Е + 02

-.34904Е + 02

-.73621Е + 02

.12674Е+02

-.10214Е+02

-.57893Е+02

-.12103Е+03

.86243Е + 02

-.57143Е + 01

.42143Е + 02

-.80529Е + 02

.82193Е + 02

-.83357Е + 01

-.36332Е + 02

-.78357Е + 02

.6570Е+00

.7539Е+00

.1367Е+00

.9906Е+00

8

.90250Е + 02 -.10750Е + 02

-.39625Е + 02

-.84500Е + 02

.14150Е+03

-.1000Е+02

-.65000Е+02

-.13650Е+03

.96500Е + 02

-.50000Е + 01

-.47500Е + 02

-.91500Е + 02

.92000Е + 02

-.82500Е + 01

-.40875Е + 02

-.88750Е + 02

.9894Е+00

-.1455Е+00

-.9577Е+00

-.2879Е+00

9

.10007Е + 03

-.10506Е + 02

-.44247Е + 02

-.95061Е + 02

.15618Е+03

-.99444Е+01

-.72028Е+02

-.15173Е+03

.10668Е + 03

-.44444Е + 01

-.52778Е+02

-.10223Е + 03

.10173Е + 03

-.82833Е + 01

-.45358Е + 02

-.98944Е + 02

.4121Е+00

-.9111Е+00

.6603Е+00

-.7510Е+00

Продолжение таблицы 8

1

2

3

4

5

6

10

.10980Е + 03

-.10400Е + 02

-.48800Е + 02

-.10540Е + 03

.17080Е+03

-.1000Е+02

-.79000Е+02

-.16680Е+03

.11680Е + 03

-.40000Е + 01

-.58000Е + 02

-.11280Е + 03

.11140Е + 03

-.84000Е + 01

-.49800Е + 02

-.10900Е + 03

-.5440Е+00

-.8391Е+00

.4081Е+00

.9129Е+00

11

.11947Е + 03

-.10395Е + 02

-.53302Е + 02

-.11558Е + 03

.18538Е+03

-.10136Е+02

-.85932Е+02

-.18175Е+03

.12688Е + 03

-.36364Е + 01

-.63182Е + 02

-.12325Е + 03

.12103Е + 03

-.85773Е + 01

-.54211Е + 02

-.11895Е + 03

-.1000Е+01

.4426Е-02

-.1000Е+01

-.8851Е-02

12

.12910Е + 03

-.10467Е + 02

-.57767Е + 02

-.12563Е + 03

.19993Е+03

-.10333Е+02

-.92833Е+02

-.19660Е+03

.13693Е + 03

-.33333Е + 01

-.68333Е + 02

-.13360Е + 03

.13063Е + 03

-.88000Е + 01

-.58600Е + 02

-.12883Е + 03

-.5366Е+00

.8439Е+00

.4242Е+00

-.9056Е+00

13

.13869Е + 03

-.10596Е + 02

-.62202Е + 02

-.13560Е + 03

.21446Е+03

-.10577Е+02

-.99712Е+02

-.21138Е+03

.14696Е + 03

-.30769Е + 01

-.73462Е + 02

-.14388Е + 03

.14021Е + 03

-.90577Е + 01

-.62971 Е + 02

-.13865Е + 03

.4202Е+00

.9074Е+00

.6469Е+00

.7626Е+00

14

.14826Е + 03

.10983Е + 02

.22897Е+03

-.10857Е+02

.15697Е + 03

-.28571Е + 01

.14977Е+03

-.93429Е + 01

.9906Е+00

.1367Е+00

-.66614Е + 02

-.14549Е + 03

-.10657Е+03

-.22611Е+03

-.78571Е + 02 -.15411Е + 03

-.67329Е + 02

-.14843Е + 03

-.9626Е+00

.2709E+00

15

.15780Е + 03

-.10983Е + 02

.24347Е+03

-.11167Е+02

.16697Е + 03

-.26667Е + 01

.15932Е + 03

-.96500Е + 01

.6503Е+00

-.7597Е+00

-.71008Е + 02

-.15532Е + 03

-.11342Е+03

-.24080Е+03

-.83667Е + 02

-.16430Е + 03

-.71675Е + 02

-.15817Е + 03

.1543Е+00

-.9880Е+00

16

.16732Е + 03

-.11225Е + 02

.25795Е+03

-.11500Е+02

.17695Е + 03

-.25000Е + 01

.16885Е + 03

-.99750Е + 01

-.2879Е+00

-.9577Е+00

-.75387Е + 02

-.16510Е + 03

-.12025Е+03

-.25545Е+03

-.8875Е + 02

-.17445Е + 03

-.76013Е + 02

-.16788Е + 03

.8342Е+00

.5514Е+00

17

.17684Е + 03

-.11491Е + 02

-.79754Е + 02

-.17484Е + 03

.27242Е+03

-.11853Е+02

-.12707Е+03

-.27007Е+03

.18692Е + 03

-.23529Е + 01

-.93824Е + 02

-.18457Е + 03

.17837Е + 03

-.10315Е + 02

-.80343Е + 02

-.17756Е + 03

-.9614Е+00

-.2752Е+00

-.8486Е+00

.5291Е+00

18

.18633Е + 03

-.11778Е + 02

-.84111Е + 02

-.18456Е + 03

.28689Е+03

-.12222Е+02

-.13389Е+03

-.28467Е+03

.19689Е + 03

-.22222Е + 01

-.98889Е + 02

-.19467Е + 03

.18789Е + 03

-.10667Е + 02

- 84667Е + 02

-.18722Е + 03

-.7510Е+00

.6603Е+00

-.1280Е+00

-.9918Е+00

19

.19582Е + 03

-.12082Е + 02

.30135Е+03

-.12605Е+02

.20685Е + 03

-.21053Е + 02

.19740Е + 03

-.11029Е + 02

.1499Е+00

.9887Е+00

-.88459Е + 02 -.19424Е + 03

-.14070Е+03

-.29924Е+03

-.10395Е + 03

-.20474Е + 03

-.88986Е + 02

-.19687Е + 03

.9551Е+00

.2964Е+00

20

.20530Е + 03

-.12400Е + 02

.31580Е+03

-.13000Е+02

.21680Е + 03

-.20000Е + 01

.20690E + 03

-.11400Е + 02

.9129Е+00

.4081Е+00

Продолжение таблицы 8

1

2

3

4

5

6

-.92800Е + 02

-.20390Е + 03

-.14750Е+03

-.31380Е+03

-.10900Е + 03

-.21480Е + 03

-.93300Е + 02

-.20650Е + 03

-.6669Е+00

.7451Е+00

21

.21477Е + 03

-.12731Е + 02

-.97135Е + 02

-.21354Е + 03

.33025Е+03

-.13405Е+02

-.15430Е+03

-.32834Е+03

.22675Е + 03

-.19048Е + 01

-.11405Е + 03

-.22484Е + 03

.21640Е + 03

-.11779Е + 02

-.97611Е + 02

-.21612Е + 03

.8367Е+00

-.5477Е+00

-.4000Е+00

-.9165Е+00

22

.22424Е + 03

-.13073Е + 02

-.10146Е + 03

-.22316Е + 03

.34469Е+03

-.13818Е+02

-.16109Е+03

-.34287Е+03

.23669Е + 03

-.18182Е + 01

-.11909Е + 03

-.23487Е + 03

.22589Е + 03

-.12164Е + 02

-.10192Е + 03

-.22573Е + 03

-.8851Е-02

-.1000Е+01

.9998Е+00

.1770Е-01

23

.23370Е + 03

-.13424Е + 02

.35913Е+03

-.14239Е+02

.24663Е+03

-.17391Е + 01

.23538Е+03

-.12554Е + 02

-.8462Е+00

-.5328Е+00

-.10579Е + 03

-.23277Е + 03

-.16788Е+03

-.35739Е+03

-.12413Е + 03

-.24489Е + 03

-.10622Е + 03

-.23533Е + 03

-.4322Е+00

.9018Е+00

24

.24315Е + 03

-.13783Е + 02

-.11011Е + 03

-.24237Е + 03

.37357Е+03

-.14667Е+02

-.17467Е+03

-.37190Е+03

.25657Е + 03

-.16667Е + 01

-.12917Е + 03

-.25490Е + 03

.24487Е + 03

-.12950Е + 02

-.11053Е + 03

-.24492Е + 03

-.9056Е+00

.4242Е+00

-.6401Е+00

-.7683Е+00

25

.25260Е + 03

-.14150Е + 02

-.11443Е + 03

-.25195Е + 03

.38800Е+03

-.15100Е+02

-.18145Е+03

-.38640Е+03

.26650Е + 03

-.16000Е + 01

-.13420Е + 03

-.26490Е + 03

.25435Е + 03

-.13350Е + 02

-.11482Е + 03

-.25450Е + 03

-.1324Е+00

.9912Е+00

.9650Е+00

-.2624Е+00

26

.26205Е + 03

-.14523Е + 02

-.11874Е + 03

-.26152Е + 03

.40243Е-03

-.15538Е+02

-.18823Е+03

-.40089Е+03

.27643Е + 03

-.15385Е + 01

-.13923Е + 03

-.27489Е + 03

.26383Е + 03

-.13754Е + 02

-.11912Е + 03

-.26408Е + 03

.7626Е+00

.6469Е+00

-.1630Е+00

.9866Е+00

27

.27149Е + 03

-.14523Е + 02

.41686Е+03

-.15981Е+02

.28636Е + 03

-.14815Е + 01

.27331Е + 03

-.14161Е + 02

.9564Е+00

-.2921Е+00

-.12305Е + 03

-.27109Е + 03

-.19501Е+03

-.41538Е+03

-.14426Е + 03

-.28488Е + 03

-Л2342Е+03 -.27365Е+03

-.8293Е+00

-.5588Е+00

28

.28093Е + 03

-.15286Е + 02

.43129Е+03

-.16429Е+02

.29629Е + 03

-.14286Е + 01

.28279Е + 03

-.14571Е + 02

.2709Е+00

-.9626Е+00

-.12736Е + 03

-.28064Е + 03

-.20179Е+03

-.42986Е+03

-.14929Е + 03

-.29486Е + 03

-.12771Е + 03

-.28321Е + 03

.8532Е+00

-.5216Е+00

29

.29037Е + 03

-.15674Е + 02

-13166Е + 03

-.29019Е + 03

.44571Е+03

-.16879Е+02

-.20856Е+03

-.44433Е+03

.30621Е + 03

-.13793Е + 01

-.15431Е + 03

-.30483Е + 03

.29226Е + 03

-.14984Е + 02

-.13201Е + 03

-.29278Е + 03

-.6636Е+00

-.7481Е+00

.1192Е+00.9929Е+00

30

.29980Е + 03

-.16067Е + 02

-.13597Е + 03

-.29973Е + 03

.46013Е+03

-.17333Е+02

-.21533Е+03

-.45880Е+03

.31613Е + 03

-.13333Е - 0l

-.15933Е + 03

-.31480Е + 03

.30173Е + 03

-.15400Е + 02

-.13630Е + 03

-.30233Е + 03

-.9880Е+00

.1543Е+00

-.9524Е+00

-.3048Е+00