Здесь функция Evaluate выполняет вычисление значений функции у(х) на
основе интерполяции этой функции, полученной в предыдущей операции, т.е.
при использовании функции NDSolve. Функция Plot строит график по значени-
ям х (от 0 до 10) и величинам, полученным в результате применения функции
Evaluate, т.е. по значениям функции у(х).
Примечание - Функция Evaluate[y[x]/.%] выполняет те же действия, что и простая
подстановка у[х]/.%. Поэтому в некоторых случаях при построении графиков функций, по-
лученных при решении дифференциальных уравнений, можно не использовать функцию
Evaluate. Так, в данном примере для построения графика можно было использовать функ-
цию Plot в следующей форме: Plot[y[x]/.%,{x,0,10}, AxesLabel->{"x","y"}]. Однако в ряде
случаев подстановка у[х]/.% может не давать результата (например, если значение х оказы-
вается очень малым числом). В этих случаях использование функции Evaluate оказывается
обязательным.
Пример 5.38 - Решить систему дифференциальных уравнений:
у
1
=у
2
+0,1х
2
где х - независимая переменная, при следующих начальных условиях: у
1
(0)=0,
у
2
(0)=1. Построить графики функций у
1
(х) и у
2
(х) для значений независимой пе-
ременной х от 0 до 20.
1 Загрузить подпакет Legend, входящий в пакет расширения Graphics (см.
подразделы 5.7, 5.8). Для этого ввести:
«Graphics'Legend'
Загрузка подпакета Legend необходима, так как по результатам решения
задачи потребуется строить график двух функций: у
1
(х) и у
2
(х), и поэтому жела-
тельно будет использовать легенду.
2 Решить систему дифференциальных уравнений. Для этого ввести:
rez = NDSoIve[{yl'[x]==y2[x]+0.1*x^2, у2'[х]== -yl[x], у1[0]==0, у2[0]==1},
{у1,у2},{х,0,20}]
Будет получена интерполяция функций у
1
(х) и у
2
(х) для значений х от 0
до 20. На экран при этом выводится следующее:
{{y1->InterpolatingFunction[{{0., 20.}}, <>],
y2->InterpolatingFunction[{{0., 20.}}, <>]}}
При этом полученный результат, т.е. интерполяция функций у
1
(х) и у
2
(х),
присваивается переменной rez.
3 Построить графики полученных функций:
Plot[Evaluate[{y1[х], у2[х])/. rez], {x, 0, 20},
PlotStyle -> {Dashing[{}], Dashing [{0.05, 0.02}]},
PlotLegend-> {"yl", "y2" }, LegendPosition-> {1, 0},
AxesLabel->{"X", "Y"}]
157