- •Лабораторная работа №5 «Численное дифференцирование и решение дифференциальных уравнений »
- •Содержание
- •6. Рекомендуемая литература 12
- •1. Цель работы: научиться численно решать дифференциальные уравнения путем написания специализи-рованных программ на языке высокого уровня.
- •2.Краткие теоретические сведения.
- •Численное решение задачи Коши
- •3.Примеры программной реализации рассмотренных методов.
- •4.Задания к выполнению
- •5.Контрольные вопросы.
- •6. Рекомендуемая литература
3.Примеры программной реализации рассмотренных методов.
Решение системы уравнений методом Кутта-Мерсона
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.Задания к выполнению
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
1.66502 3.33
