МатьЛаб ба Фортранаар долгион тархах функцыг кодлох
Дараах
нэг хэмжээст орон зайд давалгаа долгиолон тархах явц, түүнийг илэрхийлэх үйлдэл
функцыг авч үзье.
Энд Ф бар нь долгионы үндсэн хэлбэлзлэл, ню нь
унтрах замхралтын үзүүлэлт (ню>0), k нь давалгааны
долгионы тоо (долгионы урт нь лямда=2*пи/k -р тодорхойлогдоно. ) , t нь хугацаа, x орон зайн цэгц координат
ба c тархалтын хурд,
тогтмол тоо юм.
(a) Нэг хэмжээстэд [0; 1] гэсэн
хязгаарт жигд тархан хуваарилагдсан N тооны элемэнт бүхий хэрчим векторыг үүсгэнэ.
Энэ нь бодлогын тор болно.
(b) Бодлогод 8-р томьёонд өгөгдсөн
Фбар=1, k=2pi, ню=1ба c = 1
утгуудыг, цаг хугацааны хувьд t = 0 -ээс t = 5 хүртэл 0.05 завсартайгаар өгч,
хугацаа бүрт үр дүнг нь дүрслэж харуулах болно (Ф- ийн эсрэг x).
(c) Давалгаа долгины уртыг 0
болгож өгөхөд юу ажиглагдаж байна гэдгийг судлана. Мөн үүнтэй адилаар ню=0.01 долгионы уртыг өгч тархалтын хурдны тогтмол тоог
0-тэй тэнцүүлж үзнэ. Хэмжигдхүүн үзүүлэлтүүдийг өөрчлөн бодолтыг давтахад юу болохыг
ажиглана.
(d) Долгионы урт ба тархалтын
хурдны тогтмол тоог хэвээр үлдээж давалгааны тоог өөрчилж үзнэ. Давалгааны тоо
хэлбэлзлэлийн замхралтын тоотой харьцуулахад гарах үр дүнг харьцуулж харуулна.
МатьЛаб дээр бичсэн код
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | %----------------------------------------------------- % "Тооцон бодох шингэний механик-1", Дасгал ажил-1 – 1-р хэсэг % % нэг хэмжээс орон зайд давалгаа долгиолон тархах явц % %----------------------------------------------------- clear all; close all; % parameters input – хэмжигдхүүнүүдийг оруулна. % (vary the parameters to observe the difference between % diffusion dominated and advection dominated phenomena) phi_0 = 1; nu = 0.01; k = 2*pi; % энэ хэмжигдхүүнийг өөрчилнө. c = 1; % үргэлжлэх хязгаар boundaries: x \in [xbeg,xend] xbeg = 0; xend = 1; % number of grid points – торны цэгүүдийн тоо N=20; % define a vector of uniformly spaced N grid-nodes between % xbeg and xend (inclusive) x=linspace(xbeg,xend,N); % time interval and time step t_start = 0; t_end = 5; dt = 0.01; % start the time loop for t = t_start:dt:t_end phi = phi_0*exp(-nu*k^2*t)*cos(k*(x-c*t)); plot(x,phi) axis([0 1 -1 1]) xlabel('x') ylabel('\phi') title(sprintf('Propagating wave. time = %f',t)) pause(0.01) end |
Үр дүнд гарах зургууд:
Хугацааны хоромын дараах долгионы хэвтээ тархалт.
1 секундын дараах долгионы хэвтээ тархалт
3 секундын дараах долгионы хэвтээ тархалт
5 cекундын дараах долгионы тархалт.
Фортран код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | program wavefunction parameter (n=20, dt=0.01, pi=3.141592) real phi(n) aphi_0=1.0 anu=0.01 ak=2.*pi ! энэ хэмжигдэхүүнүүдийг өөрчилнө. c=1.0 dx=1./n ! торын алхам atime=5.0 iter=atime/dt open(10,file='data.dat') do i=0,iter a=dt*i do j=0,n ax=j*dx phi(j)=aphi_0*exp(-anu*ak**2*a)*cos(ak*(ax-c*a)) if(mod(i,100).eq.0) write(10,*) j*dx, phi(j) end do end do stop end program |
Гарсан үр дүн
Долгионы замхралт.
Бэлтгэсэн: Багш Н.Насанбаяр +nar nasaa
No comments:
Post a Comment