Mavzu: Oddiy differensial tenglamalar (odt) uchun qo`yilgan chegaraviy masalalarni



Yüklə 77,74 Kb.
səhifə2/2
tarix26.04.2023
ölçüsü77,74 Kb.
#102653
1   2
labaratoriya2

Chekli ayirmalar usuli


Bu usulning qulayligi shundaki, u diffirensial tenglama uchun chegaraviy masalani yechishni izlanayotgan funksiyaning ma’lum nuqtalardagi qiymatlariga nisbatan algebraik tenglamalar sistemasini yechishga olib keladi. Bunga diffirensial tenglamadagi hosilalarni chekli ayirmali approksimatsiya qilish orqali erishiladi.
Quyidagi

tenglamaning [a, b] kesmada


Lu u pxu qxu f x,
(5)

l0 y c1 ya c2 ya  c,

l1 y d1 yb d2 yb  d.
(6)

c1 c2
 0,
d1 d2
 0.

shartlarni qanoatlantiruvchi yechimini topish talab etilgan bo`lsin.
Masalani sonli yechish izlanayotgan u(x) haqiqiy yechimning x0, x1, x2,..., xn nuqtalardagi y0, y1,...yn taqribiy qiymatlarini topishdan iborat. xi, nuqtalar to`r tugunlari deb ataladi. Bir-biridan bir xil uzoqlikda joylashgan tugunlar sistemasidan hosil bo`lgan quyidagi tekis to`rni qo`llaymiz
xi=x0+ih, i=0,1,2,...,n.

Bundan


h – kattalik to`r qadami.


x0=a, xn=b, h=(b-a)/n.


Quyidagi belgilashlarni kiritamiz p(xi)=pi, q(xi)=qi, f(xi)=fi,

yxi  
yi ,
yxi  
yi,
y xi  
yi.

yxi va
y xi
larni har bir ichki tugunda ayirmali markaziy hosilalar

yordamida approksimatsiyalaymiz

yxi  
yi1 yi1
2h
Oh2,
y xi  
yi 1 2 yi yi 1 Oh2 .
h2

Kesma oxirilarida bir tomonlama ayirmali іosilalarni qo`llaymiz

y0
y1 y0 h
Oh,
yn
yn yn1 Oh. h

Bu formulalarni qo`llab (5), (6) berilgan masala ayirmali approksimatsiyasini hosil qilamiz:

yi1 2 yi yi1 p yi1 yi1 q y
f ,

i  1, n 1,


h


2 i 2h
y1 y0
i i i

c1 y0 c2

c,
h
(7)


d

y

1 n


  • d 2

yn yn1
h
d.

Izlanayotgan echimning y0, y1,…, yn taqribiy qiymatlarini topish uchun (7) n+1 noma`lumli n+1 ta chiziqli tenglamalar sistemasini echish zarur. Bu sistemani CHATS ni echishning biron bir standart usullari (Gauss usuli, iteratsiya, Zeydel, bosh elementlar, relaksatsiya va h.k.) yordamida echish mumkin. Ammo (7) tenglamalar koeffitsientlaridan tuzilgan matritsa uch dioganallidir, shuning uchun uni echishda progonka usuli deb ataluvchi maxsus usulni qo`llaymiz.

  1. sistemani quyidagi tarzda yozamiz

 0 y0
 0 y1
 0




y

i i 1

  • i yi

  • i yi 1

 i ,
i  1, 2,...,n 1,


(8)




y

n n1

  • n yn

 n ,

bunda 0=- c1h+c2 ,0=c2 ,0=hc , I=fih2,

  1 1
i 2
pi h ,
  2  q h2 ,
i  1
pi h , 2
i  1,2,...,n 1


i

i
n= d2 , n=-hd1-d2 , n=hd.

  1. sistema echimini quyidagi ko`rinishda izlaymiz

yi=ui+viyi+1 , i=0, 1, . . . , n-1, (9) bu erada ui, vi , i=0,1,…,(n-1) lar progonka koeffitsientlari deb ataladi.

  1. ni (8) ga qo`yib ui, vi lar uchun quyidagi rekkurent formulani hosil qilamiz:


i

i
v i ,
u  i
i ui 1 ,

i  1, n.



  1. (10)




i

i
i  
vi 1
i  
vi 1



Hisoblash sxemasini bir jinsli qilish uchun
0=0, n=0,
deb olamiz.
Progonka usuli ikki bosqichdan iborat.

  1. Progonkaning to`g`ri yo`li. (10) bo`yicha i indes o`zgarishining o`sib borish tartibida ketma-ket ui, vi koeffitsientlar


0
v 0 ,
0
u 0 ,

0
0



  1. (11)

qiymatlar yordamida hisoblanadi.

  1. Progonkaning teskari yo`li. (9) formula bo`yicha i indeksning kamayish tartibida ketma-ket yn, yn-1,…,y0 kattaliklar aniqlanadi.

SHunday qilib n=0, u holda
vn=0 va yn=un , (12)
ya`ni progonkaning to`g’ri yo`lida vi , ui kattaliklar yordami bilan yn-1, yn-2, yn-3,…,y0 yechimlar hisoblanadi.

y9 u9 v9 y10
y8 u8 v8 y9

. . .
. . . . .
. . . . .
. . . . . .



4. Topshiriq variantlari


Masala. Ikkinchi tartibli oddiy diffirensial tenglama uchun (5), (6) chegaraviy masalani chekli ayirmalar usuli bilan yeching.
Barcha vaiantlar uchun


n=10, a=0, b=1, c2=0, d2=0.
Qolgan parametrlarning qiymatlari 2-jadvalda berilgan.
2-jadval


Var. №

p(x)

q(x)

f(x)

с1

с

d1

d

1

2

3

4

5

6

7

8

16
17
18
19
20

0,5+9,1x

26,5x+3

1,7

2,50
0,20
0,40
2,00
3,00

5,00
0,50
0,80
4,00
6,00

5,00
0,50
0,90
5,00
5,00

10,00
0,15
1,18
10,00
10,00

JURNALDAGI TARTIB RAQAMIM 19


C++ dagi kodi quyidagidan iborat bo’ladi

*******************************************************************************/


#include


#include
using namespace std;

int main()


{
float x[11],p[11],q[11],u[11],y[11],v[11],f=1.7;
u[0]=-2.5;
v[0]=0;
//cout<for(int i=0;i<=10;i++)
{
x[i]=i*0.1;
//cout<p[i]=0.5+9.1*x[i];
// cout<
q[i]=26.5*x[i]+3;
// cout<}
float alfa[11],betta[11],gamma[11];

for(int i=0;i<=10;i++)


{
alfa[i]=1-(0.1*p[i])/2;
betta[i]=2-q[i]*0.01;
gamma[i]=1+p[i]*0.1/2;
}
for(int i=1;i<=10;i++)
{ v[i]=gamma[i]/(betta[i]+alfa[i]*v[i-1]);
//cout<u[i]=(-f+alfa[i]*u[i-1])/(betta[i]+alfa[i]*v[i-1]);
}
y[10]=u[10];
for(int i=9;i>=0;i--)
{ y[i]=u[i]+v[i]*y[i+1];
cout<}
return 0;
}



Yüklə 77,74 Kb.

Dostları ilə paylaş:
1   2




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin