Приближенноерешениедифференциальных уравнений.
Классуравнений,длякоторыхможнополучитьточноерешение,тоесть,аналитическуюфункцию,удовлетворяющуюзаданномудифференциальномууравнениюивсемдополнительнымусловиям(задачаКошииликраеваязадача),оченьузок.Чащевсегодифференциальныеуравнениярешаютсяприближенно.
1. Приближениерешенияспомощьюстепенногоряда.Представим,чтомыдолжнырешитьзадачуКошидлядифференциальногоуравненияn-
го порядка
y(n)= F(x,y,y¢,...,y(n-1))
(n-1)
с начальным условием
y(x0)= y0,y¢(x0)= y1,...,y
(x0)= yn-1. ЕслифункцияF в правойчасти
уравненияразлагаетсяврядыповсемсвоимпеременным,удобноискать
решениедифференциальногоуравнениявокрестноститочки
x= x0
ввиде
ряда Тейлора по степеням
0 1 0 2 0 |
(x- x0). Представим решение в виде
+.... Из начальных условий и свойств
коэффициентоврядаТейлораследует, что всекоэффициентыразложения
вплотьдоcn
нам известны:
y(x)= y
+ y(x- x
)+ y2(x- x
)2+...+
yn-1
(x- x
)n-1+
0 1 0 2! 0
(n-1)! 0
+ F(x0,y0,...,yn-1)
n!
(x- x0)
n+1 0 |
+ ...,
остальные– неизвестные– коэффициентыобозначаютсябуквами ck и
определяются сравнением коэффициентов при одинаковых степенях,
находящихся в обеихчастяхдифференциальногоуравнения.
Пример. Решить следующую задачуКоши:
y¢ = xy¢ - y2,y(0)= 0,
y¢(0)= 2.
Искатьрешениебудемввидерядапостепенямx.Всоответствиис
начальнымиусловиями
y(x)=1+ 2x- 1x2+ cx3+ cx4+....
2 3 4
Подставимхотябыпервыеслагаемыерядов в уравнение:
-1+ 6cx+12cx2+ 20cx3+...= x(2- x+ 3cx2+...)-
3 4 5 3
-(1+ 2x- 1x2+ cx3+...)(1+ 2x- 1x2+ cx3+...).
2 3 2 3
Перемножимвходящие в правую часть сомножители:
2 3 2 3 2 3
-1+ 6c3x+12c4x
+ 20c5x
+...= 2x- x
+ 3c3x
+...-(1+ 4x+3x
+ (2c3- 2)x
+...)
Атеперьсравнимсвободныечлены(ониравны)икоэффициентыприx,при
x3:
6c3= -2,12c4= -4,20c5= 2c3- 2. Отсюда
c= - 1,
3 3
c= - 1,
4 3
c5= -15.
Мы моглибыи далеесравниватькоэффициентыпристепенях xв
уравнениии получатьзначениядругихкоэффициентов
ck. Темболее
применение программMAXIMAупрощаетэтот процесс. Вданном случаемы
получили решение в виде ряда, первые члены которого известны:
y(x)=1+ 2x- 1x2- 1x3- 1x4- 2
x5+....
2 3 3 15
Задачу Коши для системы уравнений можно решать подобным
способом.
2. МетодЭйлераиегомодификации.ПознакомимсясметодомЭйлерачисленногорешениязадачиКошидлядифференциальногоуравнения
первогопорядка
y¢ =
f(x,y),
y(x0)= y0. Предположим,чтомыдолжны
решитьзадачу на отрезке
[x0,x0+ b].Разделим отрезок
[x0,x0+ b]
на n
равных частей, равных D . Заменим на каждом отрезке
[x0+ kD,x0+ (k+1)D]=[xk,xk+1],
k= 0,...,n-1,решениедифференциального
уравнениялинейнойфункцией
узловыезначениярешения:
yk(x)= yk+ f(xk,yk)(x- xk).Приэтомимеем
y1= y0+ f(x0,y0)D,y2= y1+ f(x1,y1)D,...,yn= yn-1+ f(xn-1,yn-1)D.
Мы здесьприравниваемотношениеприращенийфункциии аргументапроизводной в точке, соответствующей началуотрезкаразбиения:
y - y
= f x y .
k+1 k
D
(k, k)
Очевидно,чтотакоеприближениеявляетсятемменееточным,чем
дальшемы отойдемот точки
(x0,y0). Метод Эйлераявляетсянаиболее
примитивным.Здесьинтегральнаякриваязаменяетсяломаной,состоящейизпрямолинейныхотрезков.Возможныегонекоторыемодификации,несколькоулучшающиеточность. Например, еслибратьпостоянныезначения ввиде
y = y+ f(x+ D ,y+ f(x,y)D)D .
k+1 k k 2 k k k 2
Наиболеераспространеннымчисленнымметодомрешенияуказанной
задачиКошиявляетсяметодРунге-Кутта.Прирешениидифференциальногоуравненияэтимметодоминтегральнаякриваязаменяетсяломаной,состоящейизкусковпарабол.МетодРунге-Куттавстроен впакетпрограммMAXIMA.
Например,мыхотимрешитьдифференциальноеуравнение
y¢ = y2+ xс
начальнымусловием
y(0)= 0.3. Приэтом мызадаем отрезок[0,1],на
которомхотимполучитьчисленноерешениеишагразбиенияэтогоотрезка,равный0.05. Мыдолжныввестикоманду
load(dynamics); rk(y^2+x,y,0.3,[x,0,1,0.05]);
Послетого, как мынажмемклавишиShift+Enter, получимданные[[0,0.3],[0.05,0.30583128660202],[0.1,0.31438277172198],
[0.15,0.32574776902574],[0.2,0.34003114365951],[0.25,0.35735268712942],
[0.3,0.37785103897622],[0.35,0.40168830090343],[0.4,0.42905553899765],
[0.45,0.46017943684494],[0.5,0.49533045405802],[0.55,0.53483297195895],
[0.6,0.57907808748734],[0.65,0.62853997325452],[0.7,0.6837970957275],
[0.75,0.74556013793749],[0.8,0.81470931041585],[0.85,0.89234502470182],
[0.9,0.97985793824278],[0.95,1.079027666994073],[1.0,1.192164923146931]].
Это означает,чтомыполучилиузловыезначениярешения:
y(0.05)=0.30583128660202,…,y(0.4)=0.42905553899765,…..
Приближенноерешениедифференциальныхуравненийвысшихпорядковсводятсякрешениюсистемуравненийпервогопорядка.Например,требуетсярешить дифференциальноеуравнение
y¢ + x(y¢)2+3x2y= 2
наотрезке[0,2]сшагом0.1приначальныхусловиях
y(0)=1,
y¢(0)= 0. Введем новую функцию z= y¢ . Теперь уравнение
запишется ввидесистемы
ïì y¢ = z,
î |
с начальнымиусловиями
y(0)=1,
z(0)= 0.
Для получения решения методом Рунге-Кутта вводим команду
load(dynamics); rk([z,2-x*z^2-3*x^2*y], [y,z], [1,0], [x,0,2,0.1]).
Мы получимзначения вузлах:[[0,1,0],[0.1,1.009973277486667,0.19889443755825],
[0.2,1.03953179049664,0.39025908431976],
[0.3,1.087443707860848,0.56407930484999],
[0.4,1.151355476824082,0.70808296273707],
[0.5,1.227625229955781,0.80905909503231],
[0.6,1.31132100772257,0.85473889531278],
[0.7,1.396404177611673,0.83546996450053],
[0.8,1.476033430956961,0.74483368487679],
[0.9,1.542855824183935,0.57873490276185],
[1.0,1.589128945076604,0.33294944409803],[1.1,1.606518986789783,-9.8829227227875682*10^4],[1.2,1.585353126452777,-0.44308261198787],
[1.3,1.512758668789601,-1.041803224981043],
[1.4,1.367721332806764,-1.927748829187044],
[1.5,1.104119674291387,-3.562685524381777],
[1.6,0.55276102463945,-9.157645341403534],
[1.7,-3.785389000081017,-789.9052329768924],
[1.8,-1.8741633219283803*10^14,-3.7934868677108632*10^30]].
Это означает,что, например,
y(0.5)=1.227625229955781,z(0.5)=0.80905909503231.
3. Графический метод. Этим методом можно решать
дифференциальныеуравненияпервогопорядкавида
y¢ =
f(x,y).Еслинам
необходимопостроитьинтегральныекривые,которыеявляютсяграфикамирешенийприведенногоуравнения, вкакой-точастиплоскостиXOY,мы
каждойточке
(x0,y0)
этойобластиставим всоответствиезначение
f(x0,y0)
,котороесовпадаетстангенсомугланаклонакасательной кинтегральной
кривой, проходящей через точку
(x0,y0). Зная точку и направление
движенияпокривойизэтойточки,мыпереходимкблизкойточке,вкоторойтакжеопределяемнаправлениедвижения,….Так,двигаясьотточкикточке,мы построимсоответствующуюинтегральнуюкривую,то есть,решим
задачуКоши
y¢ =
f(x,y),
y(x0)= y0.
Реальное построение решения таким методом было бы оченьсложным без применения компьютерной техники. MAXIMA содержит
программупостроенияграфическихрешений.Еслимывведемload(plotdf);plotdf(f(x,y),[y,c,d],[x,a,b]),наэкранепоявитсяпрямоугольник[a,b]×[c,d],в
точкахкоторогоуказанынаправлениякасательныхкинтегральнымкривым,проходящимчерезэтиточки.Еслищелкнутькурсоромповыбраннойточкенаплоскости,компьютернарисуетинтегральнуюкривую,проходящуючерезсоответствующую точку.
Например,мы хотим построитьинтегральнуюкривуюуравнения
y¢ =
5- x2
2xy- y2, расположенную в прямоугольнике
[9,13]×[-7,9] и
проходящую через точку(11,2) .
Введемload(plotdf);plotdf((5-x^2)/(2*x*y-y^2),[y,-7,9],[x,9,13]);инажмемShift+Enter.Мыполучимвыбранныйпрямоугольниксуказаниемнаправленийизточекпрямоугольника.Теперьщелкнемпоточке(11,2),инарисуетсясоответствующаяинтегральнаякривая.