Дослідження збіжності рішень для диференціальних рівнянь у частинних похідних, отриманих методом сіток

Курсовой проект - Математика и статистика

Другие курсовые по предмету Математика и статистика

?чиною нагромадження похибок є, наприклад, віднімання близьких за величиною чисел, оскільки при малій абсолютній похибці чисел х1 і х2 відносна похибка (?x1+?x2)/|x1-x2| результату може стати великою.

Обчислювальні похибки виникають і під час перетворення чисел з однієї системи числення в іншу, якщо основа однієї системи числення не є степенем основи іншої. Це може призвести до того, що в новій системі числення число стане ірраціональним.

Втрата точності може статися і при додаванні до великого числа дуже малих чисел. Для зменшення похибки додавати числа варто в порядку їх зростання. У машинній арифметиці комутативний і дистрибутивний закони алгебри не завжди виконуються. Обчислювальний алгоритм треба будувати так, щоб похибка округлень була значно меншою від усіх інших похибок.

 

Поняття стійкості та коректності

 

Похибки у вхідних даних задачі неусувні. Обчислювач не може їх зменшити, але мусить знати, як вони впливають на точність кінцевого результату. Одні задачі мають похибку результату такого самого порядку, як і порядок похибки вхідних даних, в інших задачах похибка результату може на кілька порядків перевищувати похибку вхідних даних. Чутливість задачі до неточностей у вхідних даних характеризується поняттям стійкості.

Задача називається стійкою за вхідними даними, якщо її розвязок неперервно залежить від вхідних даних, тобто малому приросту ?х вхідної величини відповідає малий приріст ?у шуканого розвязку. Іншими словами, малі похибки вхідних даних спричинюють малі похибки розвязку задачі. Якщо ця умова не виконується, то задача вважається нестійкою за вхідними даними. Це означає, що навіть незначні похибки вхідних даних можуть привести до як завгодно великих похибок розвязку, тобто розвязок може бути зовсім спотворений. Тому застосовувати безпосередньо до таких задач чисельні методи не можна, оскільки похибки округлень при застосуванні методу будуть катастрофічно нагромаджуватись у ході обчислень. Наведемо приклад нестійкої задачі, який належить Уілкінсону.

Введемо тепер поняття коректності задачі.

Задача називається коректно поставленою, якщо для будь-яких вхідних даних з деякого класу існує єдиний і стійкий за вхідними даними її розвязок.

Для розвязування некоректно поставлених задач застосовувати класичні чисельні методи не варто, оскільки похибки округлень при розрахунках можуть катастрофічне зростати і призвести до результату, далекого від шуканого розвязку. Для розвязування некоректно поставлених задач використовують так звані методи регуляризацїї, які замінюють дану задачу коректно поставленою.

 

Програмна реалізація

 

Розглянемо приклад рівняння в частинних похідних гіперболічного типу

 

Область:

Початкові умови:

 

 

Граничні умови:

 

 

Крок по осі Х: hx=0,1

Крок по осі Y: hy=0,05

Реалізуємо в Pascal

 

Const

n = 10;

m = 10;

hx = 1/n;

hy = 0.05;

l = hy/hx;

Var

u:Array [0..n,0..m] of Real;

i,j:Integer;

fo:Text;

Function f(x:Real):Real;

begin

f:=(1-x)*cos(Pi*x/2);

end;

Function g(x:Real):Real;

begin

g:=2*x+1;

end;

Function fi(y:Real):Real;

begin

fi:=2*y+1;

end;

Function psi(t:Real):Real;

begin

psi:=0;

end;

Begin

For i:=1 to n-1 do begin

u[i,0]:=f(i*hx);

u[i,1]:=f(i*hx)+hy*g(i*hx);

end;

For j:=0 to m do begin

u[0,j]:=fi(j*hy);

u[n,j]:=psi(j*hy);

end;

For j:=1 to m-1 do

For i:=1 to n-1 do

u[i,j+1]:=2*(1-sqr(l))*u[i,j]+sqr(l)*(u[i+1,j]+u[i-1,j])-u[i,j-1];

Assign(fo,result.txt);

ReWrite(fo);

For j:=m downto 0 do begin

Write(fo,j*hy:4:2, |);

For i:=0 to n do Write(fo,u[i,j]:8:4);

WriteLn(fo);

end;

For j:=1 to 94 do Write(fo,-);

WriteLn(fo);

Write(fo, y/x |);

For j:=0 to n do Write(fo,j*hx:8:4);

Close(fo);

End.

RESULT.txt

 

0.50 | 2.0000 1.8693 1.7537 1.6381 1.5294 1.4450 1.2724 0.9448 0.6245 0.3283 0.0000

0.45 | 1.9000 1.7551 1.6251 1.4873 1.3910 1.3473 1.2499 0.9784 0.6246 0.3280 0.0000

0.40 | 1.8000 1.6447 1.4945 1.3467 1.2658 1.2361 1.1839 0.9914 0.6389 0.3198 0.0000

0.35 | 1.7000 1.5355 1.3646 1.2229 1.1533 1.1193 1.0828 0.9644 0.6616 0.3114 0.0000

0.30 | 1.6000 1.4248 1.2419 1.1171 1.0498 1.0019 0.9612 0.8913 0.6724 0.3127 0.0000

0.25 | 1.5000 1.3121 1.1338 1.0257 0.9511 0.8863 0.8323 0.7809 0.6480 0.3258 0.0000

0.20 | 1.4000 1.2018 1.0433 0.9427 0.8549 0.7734 0.7041 0.6502 0.5763 0.3380 0.0000

0.15 | 1.3000 1.1015 0.9672 0.8628 0.7602 0.6636 0.5797 0.5145 0.4635 0.3252 0.0000

0.10 | 1.2000 1.0172 0.8986 0.7834 0.6670 0.5569 0.4600 0.3823 0.3289 0.2658 0.0000

0.05 | 1.1000 0.9489 0.8308 0.7037 0.5754 0.4536 0.3451 0.2562 0.1918 0.1556 0.0000

0.00 | 1.0000 0.8889 0.7608 0.6237 0.4854 0.3536 0.2351 0.1362 0.0618 0.0156 0.0000

y/x | 0.0000 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 0.9000 1.0000

 

Для дослідження збіжності розвязку даної задачі, змінимо крок розбиття сітки. Наприклад, візьмемо крок, в двічі менший, як по осі X, так і осі Y і знайдемо розвязок за допомогою цієї ж програми.

Отримаємо:

 

0.50 | 2.0000 1.7347 1.5044 1.2505 0.6479 0.0000

0.40 | 1.8000 1.4766 1.2682 1.1311 0.6793 0.0000

0.30 | 1.6000 1.2472 1.0499 0.9330 0.6538 0.0000

0.20 | 1.4000 1.0568 0.8517 0.6944 0.5347 0.0000

0.10 | 1.2000 0.9008 0.6654 0.4551 0.3218 0.0000

0.00 | 1.0000 0.7608 0.4854 0.2351 0.0618 0.0000

-----------------------------------------------------------------

y/x | 0.0000 0.2000 0.4000 0.6000 0.8000 1.0000

 

Крок був взятий так, щоб можна було порівняти розвязок в окремих вузлах, як в першому, так і в другому випадку. Методом порівняння можна побачити, що розвязок в вузлах сітки дещо відрізняється. З цього можна зробити висновок, що на збіжність розвязку також впливає такий фактор, як крок розбиття сітки.

Виконаємо також обчислення в середовищі Excel і порівняємо отримані дані.

З отриманого результату, що наведений дещо нижче, можна зробити висновок, що отримані дані співпадають, що свідчить о вірності розвязку задачі, хоча і мають різну точність, що повязана з точністю обчислення (в Pascal точність залежить від типу змінної).

 

Узгодженість і збіжність

 

Різницева