Численные методы решения краевых задач для обыкновенных дифферен. Краевых задач для обыкновенных
Скачать 438.32 Kb.
|
ПРИЛОЖЕНИЕ Примеры программ для расчета краевой задачи 2 2 2 3 exp 4 0, 0 1, d y dy y x x dx dx с граничными условиями 0 0 0.6, dy y dx 1 1 4 exp(3) exp(4). dy y dx Точное решение задачи имеет вид: exp exp(3 ) 0.2 exp(4 ). an y x x x x 1. Программы на языке PascalABS.net Метод конечных разностей const N=20; ax=0; bx=1; function y_an(x:real):real; begin y_an:=exp(-x)+exp(3*x)+0.2*exp(4*x); end; function p(x:real):real; begin p:=-2; end; function q(x:real):real; begin q:=-3; end; function f1(x:real):real; begin f1:=exp(4*x); end; var x,y,A,B,C,F,aa,bb:array [0..N] of real; h,xx:real; i:integer; begin h:=(bx-ax)/N; for i:=0 to N do x[i]:=ax+h*i; for i:=0 to N-1 do begin A[i]:=1/(h*h) - p(x[i])/(2*h); C[i]:=1/(h*h) + p(x[i])/(2*h); B[i]:=-2/(h*h)+q(x[i]); F[i]:=f1(x[i]); end; B[0]:=-h-1; C[0]:=1; F[0]:=0.6*h; B[N]:=1+h; A[N]:=-1;F[N]:=h*(4*exp(3)+exp(4)); aa[0]:= -C[0]/B[0]; bb[0]:= F[0]/B[0]; for i:=1 to N do begin aa[i]:= -C[i]/(A[i]*aa[i-1] + B[i]); bb[i]:= (F[i] - A[i]*bb[i-1])/(A[i]*aa[i-1] + B[i]); end; y[n]:= (F[n] - bb[n-1]*A[n])/(B[n] + aa[n-1]*A[n]); for i:=n-1 downto 0 do y[i]:= aa[i]*y[i+1] + bb[i]; for i:=0 to N do writeln(x[i]:6:2,' ',y[i]:10:6,y_an(x[i]):10:6); xx:=0; for i:=1 to N do xx:=xx+abs(y[i]-y_an(x[i])); writeln(xx/N); end. 34 Метод стрельбы const N=20; ax=0; bx=1; function y_an(x:real):real; begin y_an:=exp(-x)+exp(3*x)+0.2*exp(4*x); end; function f(x,y,z:real):real; begin f:=z; end; function g(x,y,z:real):real; begin g:=2*z+3*y+exp(4*x); end; var x,y,z:array [0..N] of real; h,xx,xx1,d:real; i:integer; function shoot(ksi:real):real; var y1,z1:real;i:integer; begin y[0]:=ksi-0.6;z[0]:=ksi; for i:=0 to N-1 do begin y1:=y[i]+0.5*h*f(x[i],y[i],z[i]); z1:=z[i]+0.5*h*g(x[i],y[i],z[i]); y[i+1]:=y[i]+h*f(x[i]+0.5*h,y1,z1); z[i+1]:=z[i]+h*g(x[i]+0.5*h,y1,z1); end; shoot:=z[n]+y[n]-(4*exp(3)+exp(4)) end; begin h:=(bx-ax)/N; for i:=0 to N do x[i]:=ax+h*i; xx:=1; d:=1; while d>1e-3 do begin xx1:=xx-shoot(xx)*1e-4/(shoot(xx+1e-4)-shoot(xx)); d:=abs(xx-xx1); xx:=xx1; end; writeln(' x[i] y[i] y_an(x[i])'); for i:=0 to N do writeln(x[i]:6:2,' ',y[i]:10:6,y_an(x[i]):13:6); xx:=0; for i:=1 to N do xx:=xx+abs(y[i]-y_an(x[i])); writeln(xx/N); end. 2. Программы на языке Fortran. Метод конечных разностей program progonka implicit none integer, parameter:: N=20 real, parameter:: aa=0 real, parameter:: bb=1 real y(N+1), x(N+1), y_an(N+1), alf(N+1), bet(N+1), A(N+1), B(N+1), C(N+1), F(N+1), h integer i h=(bb-aa)/N C(1)=1 B(1)=-h-1 F(1)=0.6*h A(N+1)=-1 35 B(N+1)=1+h F(N+1)=(4*exp(3.0)+exp(4.0))*h alf(1)=-C(1)/B(1) bet(1)=F(1)/B(1) do i=1,N+1 x(i)=(i-1)*h enddo do i=2,N A(i)=1/h/h+1/h B(i)=-2/h/h-3 C(i)=1/h/h-1/h F(i)=exp(4*x(i)) alf(i)=-C(i)/(A(i)*alf(i-1)+B(i)) bet(i)=(F(i)-A(i)*bet(i-1))/(A(i)*alf(i-1)+B(i)) enddo y(N+1)=(F(N+1)-bet(N)*A(N+1))/(B(N+1)+alf(N)*A(N+1)) do i=N, 1, -1 y(i)=alf(i)*y(i+1)+bet(i) enddo do i=1,N+1 y_an(i)=exp(-x(i))+exp(3*x(i))+0.2*exp(4*x(i)) write(*,*) x(i), y(i), y_an(i) enddo end Метод стрельбы program strelba implicit none real, parameter:: aa=0 real, parameter:: bb=1 integer, parameter:: N=20 real, parameter:: eps=1d-5 real shoot,ksi, y(N+1), z(N+1), x(N+1), y_an(N+1),ksi_n,h integer i h=(bb-aa)/N do i=1,N+1 x(i)=(i-1)*h enddo ksi_n=1 ksi=10 do while (abs(ksi-ksi_n)>=eps) ksi=ksi_n ksi_n=ksi-shoot(ksi)*eps/(shoot(ksi+eps)-shoot(ksi)) end do y(1)=ksi-0.6 z(1)=ksi do i=1,N y(i+1)=y(i)+h*z(i) 36 z(i+1)=z(i)+h*(2*z(i)+3*y(i)+exp(4*x(i))) enddo do i=1,N+1 y_an(i)=exp(-x(i))+exp(3*x(i))+0.2*exp(4*x(i)) write(*,*) x(i), y(i), y_an(i) enddo write(*,*) 'ksi=',ksi end real function shoot(ksi) integer, parameter:: N=20 real, parameter:: aa=0 real, parameter:: bb=1 real ksi, y(N+1), z(N+1), x(N+1),h integer i h=(bb-aa)/N do i=1,N+1 x(i)=(i-1)*h enddo y(1)=ksi-0.6 z(1)=ksi do i=1,N y(i+1)=y(i)+h*z(i) z(i+1)=z(i)+h*(2*z(i)+3*y(i)+exp(4*x(i))) enddo shoot=z(N+1)+y(N+1)-(4*exp(3.0)+exp(4.0)) end function Результаты расчета x i y ан (x i ) y i (метод прогонки) y i (метод стрельбы) 0.00 2.20 2.61 2.24 0.05 2.36 2.77 2.40 0.10 2.55 2.97 2.59 0.15 2.79 3.22 2.83 0.20 3.09 3.53 3.13 0.25 3.44 3.90 3.48 0.30 3.86 4.35 3.91 0.35 4.37 4.90 4.42 0.40 4.98 5.54 5.03 0.45 5.70 6.32 5.76 0.50 6.57 7.24 6.62 0.55 7.59 8.33 7.65 0.60 8.80 9.63 8.86 0.65 10.24 11.17 10.31 0.70 11.95 13.00 12.01 0.75 13.98 15.16 14.04 0.80 16.38 17.72 16.44 37 0.85 19.23 20.76 19.28 0.90 22.61 24.36 22.65 0.95 26.61 28.63 26.64 1.00 31.37 33.70 31.38 Контрольные вопросы 1. Разностная схема метода Эйлера, определение погрешности этого метода. Каков порядок точности метода Эйлера. 2. Алгоритм метода Рунге-Кутта. 3. Перечислите частные случаи граничных условий. 4. Итерационная формула метода Ньютона 5. В чем состоит сущность метода суперпозиции. Реализация этого метода (пошагово). 6. Суть метода прогонки 7. Суть метода конечных разностей. Порядок точности этого метода. 8. Разностная схема метода квазилинеаризации. 9. Чем объясняется лучшая сходимость метода Ньютона для решения нелинейных краевых задач по сравнению с методом квазилинеаризации. Итерационная формула метода Ньютона. Индивидуальные задания I. Решить краевую задачу двумя методами (метод стрельбы, метод хорд) 2 2 0 d y dy p x q x y f x dx dx , 0 1 x , 0 dy A By x C dx , 1 1 dy D Ey F dx № p (x) q (x) f (x) A B C D E F 1. x 1 1 0 1 2 0 1 2 2. 2 x 2 x 1 0 1 1 0 1 3. sin x 2 x 2 x 0 1 2 0 1 2 4. sh x x x 1 0 1 1 0 1 5. x 2 x x 0 1 2 0 1 2 6. cos x 1 2 1 0 1 1 0 1 38 7. c h x 2 1 0 1 2 0 1 2 8. x 2 x 1 0 1 1 0 1 9. sh x 5 0 0 1 2 0 1 2 10. x x x -3 1 0 1 1 0 1 11. x +1 x -1 x - 2 x 0 1 2 0 1 2 12. cos x + 2 x 2 x x 1 0 1 1 0 1 13. sh x x 1 0 1 2 0 1 2 14. x x 2 1 0 1 1 0 1 15. cos x 2 2 x 0 1 2 0 1 2 16. c h x 1 x 1 0 1 1 0 1 17. x x 2 x 0 1 2 0 1 2 18. sh x 0 1 1 0 1 1 0 1 19. x x -3 2 0 1 2 0 1 2 20. 2 x x - 2 x 2 1 0 1 1 0 1 21. sin x x 5 1 0 1 1 0 1 II. Разработать решение задачи 1. Разработайте решение краевой задачи 2 2 x d y xy e dx , 0 1 x , 0 1 dy dx , 1 2 y методом хорд (линейной интерполяцией). 2. Разработайте решение краевой задачи методом суперпозиции. 2 2 2 1 1 d y dy x y x x dx dx , 0 1 x , 0 0 dy dx , 1 2 1 3 dy y dx 3. Запишите разностную схему (с порядком аппроксимации 2 ) решения краевой задачи 2 2 2 0 x d y dy e y x dx dx , 0 1 x , 0 0 dy dx , 1 4 y 4. Запишите разностную схему (с порядком аппроксимации 2 ) решения краевой задачи 2 2 2 0 d y dy x x y dx dx , 0 1 x , 0 1 y , 1 0 dy dx 39 5. Опишите решение задачи о брахистохроне методом Ньютона. (Как можно обойтись без итераций?) 2 2 2 2 1 0 d u du u dx dx , 0 x l , 0 0 du dx , u l A 6. Опишите решение задачи о тепловом взрыве методом Ньютона. (Как можно обойтись без итераций?) 2 2 1 0 u d u du e x dx dx , 0 1 x , 0 0 du dx , 1 0 u 7. Опишите решение задачи о продольном ударе по вязкопластично- му стержню методом Ньютона. (Как можно обойтись без итераций?) 2 2 0 b d f df az dz dz , 0 z , 0 0 f , 1 f 8. Опишите решение задачи о химическом реакторе 2 2 1 0 n d u du Ru p dx dx , 0 1 x , 0 0 du dx , 1 1 1 1 du u p dx , ( 1, 2, 5 p n R ). 9. Опишите решение задачи для нелинейного уравнения диффузии 2 2 2 0 1 d u du au x dx bu dx , 0 1 x , 0 0 du dx , 1 1 1 0 du c u dx , ( 0, 0, 0 a b c ). 10. Запишите алгоритм решения краевой задачи о прогибе круговой мембраны , 0 1 z , 0 0 f , 1 1 0 df f dz , ( 0, 5, 2 A ). 11. Запишите алгоритм решения краевой задачи об изгибе консоль- ной балки 2 2 cos 0 d f a f dz , 0 1 z , 0 0 f , 1 0 df dz , ( 3 a ). III. Воспользовавшись данными из таблицы решить краевую задачу двумя методами 2 2 0, 0 d y dy x q x y f x x l dx dx 40 1 1 1 0 0 , dy y dx 2 2 2 dy l y l dx 1 2 β 1 β 2 γ 1 γ 2 ( ) p x ( ) q x ( ) f x 1 1 0 1 0 2 5 2 x x sin( ) cos( ) x x x 2 x x 2 0 1 0 1 3 6 2 x x 2 sin ( ) cos( ) x x 3 2 x x x 3 1 0 1 0 4 7 2 x x 2 3 sin ( ) cos( ) x x 3 2 x x x 4 0 1 0 1 5 8 2 x x 2 x x 3 2 x x x 5 1 0 1 0 6 9 2 sin( ) x x x 2 x x 3 2 x x x 6 0 1 0 1 7 1 2 sin( ) x x x 2 x x 3 2 x x x 7 1 0 1 0 8 2 sin( ) cos( ) x x x 2 x x 3 2 sin( ) x x x 8 0 1 0 1 9 3 sin( ) cos( ) x x 2 sin( ) x x x 3 2 cos( ) x x x 9 1 0 1 0 1 4 2 sin( ) cos( ) x x x 2 sin( ) x x x 3 3 2 x x x 10 0 1 0 1 2 5 sin( ) cos( ) x x x sin( ) cos( ) x x x 2 x x 11 1 0 1 0 3 6 2 sin ( ) cos( ) x x 2 x x 3 2 x x x 12 0 1 0 1 4 7 2 3 sin ( ) cos( ) x x 2 x x 3 2 x x x 13 1 0 1 0 5 8 2 x x 2 x x 3 2 x x x 14 0 1 0 1 6 9 2 x x 2 x x 3 2 x x x 15 1 0 1 0 7 1 2 x x 2 sin( ) x x x 3 2 x x x 16 0 1 0 1 8 2 2 x x 2 sin( ) x x x 3 2 sin( ) x x x 17 1 0 1 0 9 3 2 sin( ) x x x sin( ) cos( ) x x x 3 2 cos( ) x x x 18 0 1 0 1 1 4 2 sin( ) x x x sin( ) cos( ) x x 3 3 2 x x x 19 1 0 1 0 2 5 sin( ) cos( ) x x x 2 sin( ) cos( ) x x x 3 2 x x x 20 0 1 0 1 3 6 sin( ) cos( ) x x sin( ) cos( ) x x x 3 2 x x x 21 1 0 1 0 4 7 2 sin( ) cos( ) x x x 2 sin ( ) cos( ) x x 3 2 x x x 41 Основная литература 1 Понтрягин Л.С. Обыкновенные дифференциальные уравнения М. Наука, 1974. 331 с. 2 На Ц. Вычислительные методы решения прикладных задач. М. Мир, 1982. 296 с. 3 Пасконов В.М., Полежаев В.И., Чудов Л.А. Численное моделирова- ние процессов тепло- массообмена. - М.: Наука. 1984. - 288 с. 4 Исаченко В.П., Осипова В.А., Сукомел А.С. Теплопередача. М.: Энергия. 1975. 488 с. 5 Самарский А.А. Введение в теорию разностных схем. – М.: Наука, 1971. – 552 с. Дополнительная литература 1 Марчук Г.И. Методы вычислительной математики. – М.: Наука, 1989. – 536 с. 2 Боглаев Ю.П. Вычислительная математика и программирование. – М.: Высшая школа, 1990. – 534 с. 3 Арушанян О.Б., Залеткин С.Ф. Численное решение обыкновенных дифференциальных уравнений на Фортране. М.: Изд-во МГУ, 1990. – 336 с. 4 Арушунян О.Б., Залеткин С.Ф. Численное решение ОДУ на Фор- тране. Изд-во МГУ. 1990. 5 Хайрер Э., Нерсетт С., Ваннер Г. Решение ОДУ. Нежесткие задачи. Изд-во Мир. 1990. Учебное издание Алексей Юрьевич Крайнов Ксения Михайловна Моисеева ЧИСЛЕННЫЕ МЕТОДЫ РЕШЕНИЯ КРАЕВЫХ ЗАДАЧ ДЛЯ ОБЫКНОВЕННЫХ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ Учебное пособие Опубликовано в авторской редакции Издательство "STT" Россия, 634028, г. Томск, проспект Ленина, 15 Б –1 Тел.: (3822) 421-455 E-mail: stt@sttonline.com Усл. печ. л. 2,31. Уч.-изд. л. 1,08. Бумага для офисной техники. Гарнитура Times. Подписано к печати 30.05.2016 г. Формат 60х84/ 16 Тираж 100 экз. Заказ № 560. |