Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Численное решение краевых задач. Учебно-методическое пособие

.pdf
Скачиваний:
0
Добавлен:
15.08.2026
Размер:
1 Мб
Скачать

call Plot2((/xgmin,xgmax/),(/0.0d0,0.0d0/),icol,1000,drx) call Plot2((/0.0d0,0.0d0/),(/ygmin,ygmax/),icol,1000,dry)

call moveto_w(xgmax+0.02*dxg,-0.05*dyg,wxy); call outgtext(xax) call moveto_w(-0.05*dxg,ygmax+0.05*dyg,wxy); call outgtext(yax) end subroutine AXIS

subroutine GRID(Nxg,Nyg,icol) ! построение сетки character(6) ch1

real*8 x,dx,y,dy

ncol=setcolor(icol); dxg=xgmax-xgmin; dyg=ygmax-ygmin dx=dxg/Nxg; dy=dyg/Nyg

x=xgmin; y=ygmax do i=1,Nxg+1

call moveto_w(x,ygmin,wxy); iz=lineto_w(x,y)

call moveto_w(x,0.0_8,wxy); write(ch1,'(f6.2)')x; call outgtext(ch1) x=x+dx

end do

x=xgmax; y=ygmin do i=1,Nyg+1

call moveto_w(xgmin,y,wxy); iz=lineto_w(x,y) if(abs(y)>1.d-3)then

call moveto_w(-0.1d0*dxg,y,wxy); write(ch1,'(f6.2)')y; call outgtext(ch1) end if

y=y+dy end do

end subroutine GRID

subroutine PLOT(x,y,icol,isl,im) ! построение 2D-кривой real*8 x(:),y(:)

imin=lbound(x,dim=1); imax=ubound(x,dim=1) ncol=setcolor(icol)

select case(im);case(1);mask=#FFFF;case(2);mask=#FF00;end select call setlinestyle(mask)

call moveto_w(x(imin),y(imin),wxy) do i=imin,imax

iz=lineto_w(x(i),y(i)); call sleepqq(isl) end do

end subroutine PLOT

subroutine PLOT2(x,y,icol,Np,dr) ! построение 2D-кривой толстой линией

61

real*8 x(:),y(:),dr

imin=lbound(x,dim=1); imax=ubound(x,dim=1) ncol=setcolor(icol)

do k=imin,imax-1 dx=(x(k+1)-x(k))/(Np-1) dy=(y(k+1)-y(k))/(Np-1) do j=1,Np

if(abs(dx)<1d-9)then ! верт. линия xp=x(k)

yp=y(k)+dy*(j-1) else xp=x(k)+dx*(j-1)

yp=y(k)+(dy/dx)*(xp-x(k)) end if

iz=ellipse_w(3,xp-dr,yp-dr,xp+dr,yp+dr) end do

end do

end subroutine PLOT2

subroutine Map2D(x,y,z,ivar,x2,y2) ! параллельное проецирование real*8 x(:),y(:),z(:),x2(:)

real*8 y2(:),fi,psi,dsf,dcf,dsp,dcp select case(ivar)

case(1) ! изометрия fi=dasin(1.0_8/dsqrt(3.0_8)) psi=dasin(1.0_8/dsqrt(2.0_8)) case(2) ! диметрия fi=dasin(1.0_8)/4.0_8 psi=dasin(dtan(fi))

end select

dsf=dsin(fi); dcf=dcos(fi) dsp=dsin(psi); dcp=dcos(psi)

!x2=x*dcp+z*dsp; y2=x*dsf*dsp+y*dcf-z*dsf*dcp ! ось x вправо x2=-x*dcp+z*dsp; y2=-x*dsf*dsp+y*dcf-z*dsf*dcp ! ось x влево end subroutine Map2D

subroutine Axis3D(xax,yax,zax,ivar,icol,dr) ! построение 3D-осей real*8 xa(4),ya(4),za(4),xa2(4),ya2(4),dr

character(*) xax,yax,zax ca=1.0

62

xa=(/0.0d0,xgmax,0.d0,0.0d0/)*ca

ya=(/0.0d0,0.0d0,ygmax,0.0d0/)*ca

za=(/0.0d0,0.d0,0.0d0,zgmax/)*ca call Map2D(xa,ya,za,ivar,xa2,ya2) do i=2,4

call Plot2((/xa2(1),xa2(i)/),(/ya2(1),ya2(i)/),icol,1000,dr) end do

call moveto_w(xa2(2),ya2(2),wxy); call outgtext(xax) call moveto_w(xa2(3),ya2(3),wxy); call outgtext(yax) call moveto_w(xa2(4),ya2(4),wxy); call outgtext(zax) end subroutine Axis3D

subroutine Plot3D(x,y,z,ivar,icol,isl,im) ! построение 3D-кривой real*8 x(:),y(:),z(:)

real*8, allocatable :: x2(:),y2(:) N=size(x); allocate(x2(N),y2(N)) call Map2D(x,y,z,ivar,x2,y2) call Plot(x2,y2,icol,isl,im)

end subroutine Plot3D

subroutine Animate(x,u,xax,yax,icol,isl,im,dr,Lclear) ! анимация !use GRAFLIB

real*8 x(:),u(:,:),dr; logical Lclear character(*) xax,yax M=size(u,dim=1)

do j=1,M

call Axis(xax,yax,0,dr) call GRID(5,5,0)

call Plot(x,u(j,:),icol,0,im); call sleepqq(isl) if(Lclear)then;if(j<M)call Plot(x,u(j,:),15,0,im);end if end do

end subroutine Animate

end module GRAFLIB

63

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1.Бахвалов Н.С. Численные методы: учебное пособие для вузов / Н.С. Бахвалов, Н.П. Жидков, Г.М. Кобельков. – М., 2011.

2.Вержбицкий В.М. Основы численных методов: учебник для вузов по направлению «Прикладная математика» / В. М. Вержбицкий. – М., 2005. – 839 с.: ил., табл.

64

ОГЛАВЛЕНИЕ

 

Введение...................................................................................................................

3

1. Численное решение краевой задачи для оду цель работы...............................

4

Вопросы к разделу 1..............................................................................................

13

2. Численное решение начально-краевой задачи для уравнения

 

теплопроводности..................................................................................................

14

Вопросы к разделу 2..............................................................................................

26

3. Численное решение начально-краевой задачи для уравнения переноса ......

29

Вопросы к разделу 3..............................................................................................

36

4. Численное решение начально-краевой задачи для квазилинейного

 

уравнения переноса....................................................................................

37

Вопросы к разделу 4..............................................................................................

46

5. Численное решение краевой задачи для уравнения Пуассона ......................

47

Вопросы к разделу 5..............................................................................................

59

Приложение............................................................................................................

60

Библиографический список..................................................................................

64

65

Гостеев Юрий Анатольевич

ЧИСЛЕННОЕ РЕШЕНИЕ КРАЕВЫХ ЗАДАЧ

Учебно-методическое пособие

Редактор И.Л. Кескевич

Выпускающий редактор И.П. Брованова Дизайн обложки А.В. Ладыжская Компьютерная верстка Л.А. Веселовская

Налоговая льгота – Общероссийский классификатор продукции Издание соответствует коду 95 3000 ОК 005-93 (ОКП)

Подписано в печать 18.12.2019. Формат 60 × 84 1/16. Бумага офсетная. Тираж 50 экз. Уч.-изд. л. 3,95. Печ. л. 4,25. Изд. № 207. Заказ № 188. Цена договорная

Отпечатано в типографии Новосибирского государственного технического университета

630073, г. Новосибирск, пр. К. Маркса, 20

66

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]