Примеры программной реализации рассмотренных методов. Решение системы уравнений методом Кутта-Мерсона cls defdbl a-z print "Решение системы диф. уравнений методом Кутта-Мерсона» input "введите число уравнений N=",n dim y(n),w(n),a(n),c(n),d(n),e(n),f(n) input "Задайте погрешность вычислений e=",e1 input "Задайте начальный шаг h=",h input "Задайте начальное значение x0=",x input "Задайте конечное значение x1=",x1 for j=1 to n print "Введите начальное значение y0(";j;")=";:input ,w(j) y(j)=w(j) next j 110 e3=0:gosub 400:d=0 for j=1 to n a(j)=f(j)*h:y(j)=w(j)+a(j)/3 next j x=x+h/3:gosub 400 for j=1 to n y(j)=w(j)+(a(j)+f(j)*h)/6 next j gosub 400 for j=1 to n c(j)=f(j)*h y(j)=w(j)+a(j)/8+0.375*c(j) next j x=x+h/6:gosub 400 for j=1 to n d(j)=f(j)*h:y(j)=w(j)+a(j)/2-1.5*c(j)+2*d(j) next j x=x+h/2:gosub 400 for j=1 to n e(j)=f(j)*h y(j)=w(j)+(a(j)+4*d(j)+e(j))/6 e2=abs(-2*a(j)+9*c(j)-8*d(j)+e(j))/30 if e2<=e1 then goto 250 e3=1:goto 260 250 if e2<(e1/20) then d=d+1 260 next j if e3=0 then goto 290 x=x-h for j=1 to n y(j)=w(j) next j h=h/2: goto 110 290 if d=n then h=h+h print "x=";x; for j=1 to n print "y(";j;")=";y(j); w(j)=y(j) next j if x<x1 then goto 110 print «Работа завершена» end 400 'задание уравнений f(1)=y(1)+y(2)-x^2+x-2 f(2)=-2*y(1)+4*y(2)+2*x^2-4*x-7 return Решение системы диф. уравнений методом Кутта-Фельдберга cls defdbl a-z print "Решение системы диф. Уравнений методом Кутта-Фельдберга" input "Введите число уравнений N=",n dim y(n),L(n),w(n),a(n),b(n),c(n),d(n),e(n),f(n) input "Задайте точность е=»,е1 input "Задайте начальный шаг h=»,h input "Задайте начальное x0=",x input "Задайте конечное x1=",x1 for j=1 to n print "Задайте начальный y0(";j;")=";:input ,w(j) y(j)=w(j) next j 110 e3=0:gosub 400:d=0 for j=1 to n a(j)=f(j)*h:y(j)=w(j)+2*a(j)/9 next j x=x+2*h/9:gosub 400 for j=1 to n b(j)=h*f(j):y(j)=w(j)+a(j)/12+b(j)/4 next j x=x+h/9:gosub 400 for j=1 to n c(j)=h*f(j):y(j)=w(j)+(34.5*a(j)-121.5*b(j)+135*c(j))/64 next j x=x+h/2.4:gosub 400 for j=1 to n d(j)=h*f(j):q=w(j)-17*a(j)/12+6.75*b(j) y(j)=q-5.4*c(j)+16*d(j)/15 next j x=x+h/4:gosub 400 for j=1 to n e(j)=h*f(j):q=w(j)+65*a(j)/432-0.3125*b(j) y(j)=q+.8125*c(j)+4*d(j)/27+5*e(j)/144 next j x=x-h/6:gosub 400 for j=1 to n L(j)=h*f(j):y(j)=w(j)+a(j)/9+.45*c(j)+16*d(j)/45+e(j)/12 q=a(j)/150-.03*c(j)+16*d(j)/75+e(j)/20 e2=abs(q-0.24*L(j)):if e2<e1 then goto 250 e3=1:goto 260 250 if e2<(e1/20) then d=d+1 260 next j x=x+h/6:gosub 400:if e3=0 then goto 290 x=x-h: for j=1 to n y(j)=w(j) next j h=h/2:goto 110 290 if d=n then h=h+h print "x=";x; for j=1 to n print "y(";j;")=";y(j) w(j)=y(j) next j if x<x1 then goto 110 print « работа завершена» end 400 ‘ Задание системы уравнений f(1)=y(1)+y(2)-x^2+x-2 f(2)=-2*y(1)+4*y(2)+2*x^2-4*x-7 return Задания к выполнению 4.1 . Решить систему дифференциальных уравнений при следующих параметрах шаг 0,1; начальные приближения x=0,2; у1=0,099500833, y2=0.49235  Ответ: х у1 у2 0,3 0,148367183 0,4830282264 0,4 0,1961203205 0,47011529365 0,5 0,2424068609 0,4537779586 1,0 0,440372468 0,3249711437 4.2. Решить дифференциальное уравнение первого порядка y’=-y при следующих параметрах: шаг=0,1, начальные приближения х0=0, у0=1. Ответ: х 0,1 0,2 0,3 0,4 0,5 у 0,904837 0,818731 0,740818 0,67032 0,606531 4.3. Решить дифференциальное уравнение второго порядка у"=-у+(1-у2)*20у' при следующих параметрах: шаг=0,003125, у0=2,077, у'0==0 Ответ: х у у* 0,003125 2,007690786 -0,00571555801 0,00625 2,007665302 -0,01044479113 0,009375 2,007626354 -0,01435793978 0,0125 2,00757266 -0,01759589125 0,015625 2,007516959 -0,02027523125 4.4. Решить систему дифференциальных уравнений  при следующих параметрах: k=0,1, точность 0,0000001, х0=0, у10=0,у20=2 Ответ: х у1 у2 0.025 0.000625 2.025 0.05 0.0025 2.05 0.075 0.005625 2.075 0,1 0.01 2.1 0.16 0.0261 2.16 0.32 0.10333 2.32 0.64 0.41271 2.74 0.96 0.93094 2.98 5.281.66502 3.33 5.Контрольные вопросы. 1.Постановка задачи Коши. 2.Численные методы решения задачи Коши : вывод формулы метода Эйлера. 3.Методы Рунге-Кутты. Вывод формул.. 4.Решение задачи Коши для систем дифференциальных уравнений. 6. Рекомендуемая литература 1. Самарский А.А., Михайлов А.П. Математическое моделирование: Идеи. Методы. Примеры. – М.: Физматлит, 2001. – 320 с. 2. Советов Б.Я., Яковлев С.А. Моделирование систем. – М.: Высш. шк., 1998. – 320 с. 3. Липай Б.Р., Маслов С.И. Компьютерное моделирование электромеха-нических систем: Учеб. пос. – М.: Изд. МЭИ, 2002. – 80 с. 4. Дьяконов В. Matlab 6: Учебный курс -СПб.: Питер, 2001. - 592 с. 5. Дьяконов В., Круглов В. Математические пакеты расширения Matlab. Специальный справочник. – Спб.: Питер, 2001. – 480 с. 6. Введение в математическое моделирование: Учебное пособие/ Ашихмин В.Н., Гитман М.Б., Келлер И.Э., Наймарк О.Б. и др.// М.: Логос, 2004. 7. Могилёв А.В., Пак Н.И., Хённер Е.К. Информатика.М.,ACADEMA, 2007. 8. Могилёв А.В., Пак Н.И., Хённер Е.К. Практикум по информатике. М.,ACADEMA,2007. |