Раздел: Документация
0 ... 115 116 117 118 119 120 121 ... 365 % построение графика первой компоненты найденной вектор-функции plotlsol.x, sol.yd,:), о) % * функция правой части системы дифференциальных уравнений (6.12] function f = rsidepar(x, у, par) f = [y(2); -2*par*y(2) - 2*рагЛ2*у(1)]; end % функция граничных условий function f = boundpar(ya, yb, par) f = [ya(ll; yb(l); ya(2) - 1]; end % функция начального приближения function f = yinit(x); f = [sin(x); cos(x)]; end end В результате работы файл-функции получается Х = 0.99999361754175 (т.е. А = 1 с достаточной степенью точности) и функция м(л), представленная на рис. 6.20. Рис. 6.20. Решение граничной задачи с параметром (6.12) В нашей модельной задаче известно точное решение. Значениями X могут быть целые числа, а соответствующими функциями m(jc) являются u (jc) - -е- sin Хх . К Добавьте график функции u (х) = е~х sin jc , отвечающейк графику приближенного решения и убедитесь, что оно вычислено верно. Найдите еще несколько значений X и соответствующих функций и (jc) , задавая в качестве стартового приближения к параметру числа, близкие к целым: 2.3, 3.2, 4.2, 5.1. Солвер возвращает хорошие приближения к точным (целым) значениям искомых параметров. Заметьте, что с увеличением значения параметра возрастает число смен знака соответствующей ему функции и (а) на отрезке [0, я]. Обсудим теперь влияние начального приближения к вектор-функции. Например, исходный выбор yj(*) = sin.r, y2(x) = C0SJC не позволяет определить значение параметра даже для хорошего начального приближения 6.001 к точному значению 6 параметра X. Следовательно, необходимо каким-то образом выбрать другое начальное приближение к вектор-функции. Конечно, точное решение свидетельствует о том, что хорошим начальным приближением может служить (*) = sin 6х, y2(x) = 6cos6x Но если бы точное решение было неизвестно, то можно было бы воспользоваться нашим наблюдением об увеличении количества участков смены знака решения и(л) при возрастании X. Модифицируйте функцию yinit и найдите решение для стартового значения 6.2 параметра X. Как было отмечено в начале этого раздела, в общем случае граничная задача может содержать как неизвестные, так и известные параметры. Наличие неизвестных параметров приводит к более сложной задаче с вычислительной точки зрения, в то время как присутствие известных параметров требует только использования расширенного интерфейса солвера bvp4c и функций, к которым он обращается. В общем случае с неизвестными и известными параметрами заголовки функций граничных условий и правой части системы дифференциальных уравнений должны иметь вид: function t - rsidepar(x, у, par, pi, p2,—) res = boundpar(ya, yb, par, pi, p2,...) end где par — вектор неизвестных параметров, а аргументы pi, р2,... являются заданными параметрами. Если неизвестных параметров нет, то заголовки функций граничных условий и правой части системы дифференциальных уравнений упрощаются: function £ = rsidepartx, у, pi, р2,...) res = boundpar{ya, yb, pi, p2,.-.) end При вызове солвера значения известных параметров pi, р2, ... следует указать в списке входных аргументов, начиная с пятой позиции после управляющей структуры. » sol = bvp4c(odefun, bcfun, solinit, options, pi, p2...) Разумеется, в случае отсутствия подлежащих вычислению параметров не требуется подбирать приближение для них при инициализации структуры с начальным приближением функцией bvpinit. Эффективность вычислений может быть повышена за счет задействования аналитических выражений элементов матрицы Якоби правой части системы дифференциальных уравнений и частых производных вектор-функции граничных условий. Для получения информации об интерфейсе соответствующих функций обратитесь к описанию функции bvpset, воспользовавшись, например, индексным поиском в справочной системе MATLAB. В следующем разделе приведен еще один класс задач — граничные задачи с вырождающимися коэффициентами — решение которых может быть получено при помощи солвера bvp4c. Решение задачи с особенностью на границе Солвер bvp4c позволяет решать граничные задачи для дифференциальных уравнений с вырождающимися коэффициентами при условии, что они эквивалентны системе дифференциальных уравнений первого порядка быть постоянной и удовлетворять необходимому условию существования непрерывного решения: Sy(0) = Q. Возможна и более общая постановка граничной задачи, включающая неизвестные параметры, которые могут входить как в вектор-функцию /, так и в вектор-функцию граничных условий g. b>0 с граничными условиями матрица S должна 0 ... 115 116 117 118 119 120 121 ... 365
|