Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Решение уравнений.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
480 Кб
Скачать
☆

График функции

Изучая поведение функции мы видим, что у нее есть три корня, первый около -3.5, а два других около 1.5. Однако нашей задачей было отделение корней, т.е. указание промежутков, на которых находится ровно один корень. Как видно из графика, для первого корня это промежуток [-4, -3]. Для того, чтобы отделить два других корня, удобно воспользоваться инструментом ZoomIn графического окна для увеличения масштаба просмотра вблизи точки x = 1.5 . После увеличения масштаба просмотра становится ясно, что промежутками, содержащими ровно один корень, являются отрезки [1, 1.4] и [1.8, 2.2]. Итак, все три корня отделены.

Следующая функция представляет более сложный пример для отделения корней

Ее график на отрезке [0, 3], построенный по равноотстоящим точкам с шагом 0.1, приведен ниже.

График функции   , построенный с шагом 0.1

Из графика видно, что один корень принадлежит отрезку [1.5, 2.5]. А вблизи точки x = 1 ситуация не очень понятная, более того, увеличение масштаба ничего не дает. Выход состоит в построении графика вблизи точки x = 1 с более мелким шагом, причем в достаточно малой окрестности единицы. Например, график f ( x ) , построенный на отрезке [0.999, 1.002] с шагом 0.0001, дает хорошее представление о расположении двух оставшихся корней.

График функции   , вблизи x = 1.

Становится понятным, что у данной функции есть два корня вблизи точки x = 1 . Один из них находится на отрезке [0.9995, 1.0005], а другой — на отрезке [1.0005, 1.0015]. Все три корня исследуемой функции отделены.

Заметим, что функция plot строит график табличной функции, заданной векторами x и y, которые мы получили по исходной непрерывной функции f ( x ) , соединяя точки отрезками. В зависимости от выбора точек для построения графика, он может оказаться слишком неточным или даже неверным. Приведем самый простой пример.

Предположим, требуется построить график функции

на отрезке [0.05, 1]. Сделаем это двумя способами. Первый из них состоит в вычислении функции с шагом 0.05 на данном отрезке и применении функции plot. Второй способ основан на использовании функции fplot. Для сравнения выведем результаты в одно графическое окно на разные оси, для чего применим функцию subplot

x = 0.05:0.05:1;

y = sin(1./x);

figure

subplot(2,1,1)

plot(x,y)

subplot(2,1,2)

fplot('sin(1/x)', [0.05 1])

Графики, полученные при помощи plot (верхний) и fplot (нижний).

Видим, что неудачный выбор шага для plot привел к плохому графику, который не учитывает особенности поведения функции. Нижний график, построенный при помощи fplot, намного лучше отражает поведение исследуемой функции, хотя fplot не требует задания шага. Дело в том, что алгоритм fplot является адаптивным, т.е. fplot выбирает точки для построения графика, приспосабливаясь к особенностям поведения функции. Выбираемые функцией fplot точки для построения графика не обязательно расположены равномерно. В областях быстрого изменения функции их плотность больше, чем в областях плавного ее изменения.

Рассмотрим еще один прием, полезный при отделении корней. Перед тем, как строить график исследуемой функции f ( x ) для отделения корней уравненияf ( x ) = 0 , иногда бывает полезно представить исходное уравнение f ( x ) = 0 в виде g ( x )=h ( x ) , где g ( x ) и h ( x ) — по возможности достаточно простые функции, поведение которых известно. Корни тогда находятся в абсциссах точек пересечения графиков этих функций.

Приведем сначала очевидный пример. Рассмотрим уравнение

Преобразуем его к эквивалентному виду

Ясно, что у данного уравнения есть только один корень — абсцисса точки пересечения графиков гиперболы   и экспоненциальной функции ex . Отделить данный корень достаточно просто, например при x = 0.1 левая часть уравнения   меньше нуля, а при x = 1 — больше нуля, следовательно на отрезке [0.1, 1] содержится ровно один корень.

Рассмотрим теперь уравнение

Совершив несложное преобразование (перенос единицы в правую часть и умножение обеих частей на x− Π ), приведем его к виду

На отрезке [-15, 15] строим графики функций  . Находим точку пересечения, получается, что у исходного уравнения есть корень.

figure

fplot('sin(x)', [-15 15])

hold on

fplot('x-pi', [-15 15], 'r')

grid on

Графики функций  .

Теперь строим график исходной функции   на отрезке [-15, 15]. Он не пересекает ось абсцисс, следовательно корня нет.

figure

fplot('sin(x)/(x-pi)-1', [-15 15])

grid on

Графики функции  .

Несложно понять, что в первом случае мы совершили неэквивалентное преобразование, которое привело к появлению корня x = Π у преобразованного уравнения. Поэтому при совершении перехода от уравнения вида f ( x )= 0 к уравнению вида g ( x )=h ( x ) требуется выполнять только эквивалентные преобразования для того, чтобы не изменить число корней.

Рассмотрим еще один пример — уравнение, зависящее от параметра:

Требуется провести отделение корней уравнения в зависимости от значений параметра a , изменяющихся от 0.2 до 1.3. Для этого удобно, во-первых, привести уравнение к виду   . Во-вторых, можно построить графики левой и правой частей уравнения при изменении значения параметра a от 0.2 до 1.3 с некоторым шагом, скажем 0.1. Для этого удобно применить цикл for. В цикле меняется значение параметра a и строятся графики. В заголовке графика написано текущее значение . Команда pause означает, что надо нажать клавишу для продолжения работы программы (эти операторы удобно набрать в новом m-файле и выполнить, например выделив и нажав F9).

figure

x=-3:0.01:3;

for a = -0.2:0.1:1.3

y1 = exp(-a*x);

y2 = a*x.^2;

plot(x, y1, x, y2)

grid on

title(['a=' num2str(a)])

pause

end

Проследив поведение левой и правой частей уравнения в зависимости от значениq параметра , мы видим, что у данного уравнения может быть либо два корня, либо один корень, либо вообще ни одного корня.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]