Компания ALT Linux
Опубликован: 12.03.2015 | Доступ: свободный | Студентов: 576 / 64 | Длительность: 20:55:00
Лекция 7:

Нелинейные уравнения и системы

7.2 Решение трансцендентных уравнений

Уравнение, в котором неизвестное входит в аргумент трансцендентных функций, называется трансцендентным уравнением. К трансцендентным уравнениям принадлежат показательные, логарифмические, тригонометрические.

Для решения трансцендентных уравнений вида f (x) = 0 в Octave существует функция fzero(name, x0) или fzero(name, [a, b]), где nameимя функции, вычисляющей левую часть уравнения, x0 — начальное приближение к корню, [a, b]интервал изоляции корня.

Если функция вызывается в формате: [x, y] = fzero(name, x0), то здесь x — корень уравнения, yзначение функции в точке x.

Пример 7.14. Найти решение уравнения:

\sqrt[3]{(2x-3)^2}- \sqrt[3]{(x-1)^2}=0.

Начнём решение данного трансцендентного уравнения с определения интервала изоляции корня. Воспользуемся для этого графическим методом. Построим график функции, указанной в левой части уравнения (листинг 7.15), создав предварительно функцию для её определения.

	
% Функция для вычисления левой части уравнения f(x)=0
function y=f1(x)
	y=((2-x-3).^2).^(1/3)-((x-1).^2).^(1/3);
end;
% Построение графика функции f(x)
cla; okno1=figure();
x = -1:0.1:3;
y=f1(x);
pol=plot(x, y);
set(pol, ’LineWidth’, 3, ’Color’, ’k’)
set(gca, ’xlim’, [-1, 3]); set(gca, ’ylim’, [-1,1.5]);
set(gca, ’xtick’, [-1:0.5:3]); set(gca, ’ytick’,[-1:0.5:1.5]);
grid on; xlabel(’x’); ylabel(’y’);
title(’Plot y=(2x-3)^{2/3}-(x-1)^{2/3}’);
Листинг 7.15. Графическое отделение корней (пример 7.14).

На графике (рис. 7.3) видно, что функция f (x) дважды пересекает ось Ox. Первый раз на интервале [1, 1.5], второй — [1.5, 2.5].

Уточним корни, полученные графическим методом. Воспользуемся функцией, вычисляющей левую часть заданного уравнения из листинга 7.15 и обратимся к функции fzero, указав в качестве параметров имя созданной функции и число (1.5) близкое к первому корню:

	
>>> x1=fzero(’f1’, 1.5)
x1 = 1.3333

Теперь применим функцию fzero, указав в качестве параметров имя функции, и интервал изоляции второго корня:

	
>>> x2=fzero(’f1’, [1.52.5])
x1= 2

Не трудно заметить, что и в первом и во втором случае функция fzero правильно нашла корни заданного уравнения.

Графическое решение примера 7.14

Рис. 7.3. Графическое решение примера 7.14

Ниже приведён пример некорректного обращения к функции fzero, здесь интервал изоляции корня задан неверно. На графике видно, что на концах этого интервала функция знак не меняет, или, другими словами, выбранный интервал содержит сразу два корня.

	
>>>fzero(’f1’, [1 3])
error: fzero: not a valid initial bracketing
error: called from:
error: /usr/share/octave/3.4.0/m/optimization/fzero.m at line 170, column 5

В следующем листинге приведён пример обращения к функции fzero в полном формате:

	
>>> [X(1),Y(1)]= fzero(’f1’, [1 1.5]);
>>> [X(2),Y(2) ]= fzero(’f1’, [1.5 2.5]);
>>> X % Решение уравнения
X = 1.3333 2.0000
>>> Y % Значения функции в точке Х
Y = -2.3870e-15  0.0000e+00

Пример 7.15. Найти решение уравнения x^4+4x^3+4x^2-9=0.

Как видим, левая часть уравнения представляет собой полином. В примере 7.13 было показано, что данное уравнение имеет четыре корня: два действительных и два мнимых (листинг 7.14).

Листинг 7.16 демонстрирует решение алгебраического уравнения при помощи функции fzero. Не трудно заметить, что результатом работы функции являются только действительные корни. Графическое решение (рис. 7.2) подтверждает это: функция дважды пересекает ось абсцисс.

	
function y=f2(x)
	y=x.^4+4-x.^3+4-x.^2-9;
end;
>>> [X(1),Y(1)]= fzero(’f2’, [-4 -2]);
>>> [X(2),Y(2)]= fzero(’f2’, [0 2]);
>>> X
>>> Y
X = -3 1
Y = 0 0
Листинг 7.16. Решение уравнения с помощью fzero (пример 7.15).
Алексей Игнатьев
Алексей Игнатьев

Возможна ли разработка приложения на Octave с GUI?

Евгений Ветчанин
Евгений Ветчанин

Добрый день. Я самостоятельно изучил курс "Введение в Octave" и хочу получить сертификат. Что нужно сднлать для этого? Нужно ли записаться на персональное обучение с тьютором или достаточно перевести деньги?