Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Matlab_лек.7_Реш-ие ур-ий_.docx
Скачиваний:
4
Добавлен:
01.03.2025
Размер:
183 Кб
Скачать
☆

2.8.2.1. Задание в функции fzero второго параметра в виде вектора.

Вместо начального приближения вторым параметром fzero можно задать интервал, на котором следует найти корень:

» х2 = fzero('myf ', [-3 -1])

x2 =

-1.85392745969615

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

В качестве исследуемой функции при задании интервала поиска можно также использовать и встроенную математическую функцию, например

» fzero('sin', [2 4])

ans =

3.14159265358979

2.8.2.2. Создание встраиваемой функции.

При решении уравнений с помощью fzero может использоваться так называемая “встраиваемая функция”, записываемая при помощи функции inline. Формат создания функции с именем “Имя_функции” выглядит следующим образом:

Имя_функции = inline('формула', список_аргументов)

Список аргументов не обязателен, а ' формула' является текстовой строкой и задает выражение для вычисления значения функции.

Следующий пример демонстрирует создание в рабочей среде встраиваемой функции fun :

» fun = inline('sin(x) - х.^2.*cos(x)')

fun =

Inline function:

fun(x) = sin(x) - x.^2.*cos(x)

Inline-фунция fun может быть использована как любая другая функция MATLAB, например:

» у = fun(0.5)

y =

0.2600

Если функция зависит от нескольких переменных, то все они являются аргументами введенной inline-функции и располагаются в алфавитном порядке:

» funl = inline('sin(a*x) - х.^2.*cos(b*х)')

funl =

Inline function:

funl(a,b,x) = sin(a*x) - x."2. *cos(b*x)

Для изменения порядка следования аргументов их следует перечислить через запятые в списке после выражения, определяющего вид функции:

» fun2 = inline('sin(a*x) - х.^2.*соs(b*х)', 'х', 'а', 'b' )

fun2 =

Inline function:

fun2(x, a, b) = sin(a*x) - x. ^2.*cos(b*x)

Если в списке случайно пропущен хотя бы один из аргументов, то inline-функцией воспользоваться не удастся:

» fun3 = inline('sin(a*x) - х.^2.*cos(b*x)', 'x' 'b')

fun3 =

Inline function:

fun3(x, b) = sin(a*x) - x.^2.*cos(b*x)

Даже при наличии переменной “а” в рабочей среде вызов функции fun3 приведет к сообщению о том, что аргумент а не задан:

» а = 1 ;

» fun3(5, 0)

??? Error using ==> inlineeval

Error in inline expression ==> sin(a*x) - x. ^2 .*cos(b*x)

??? Error using ==> eval

Undefined function or variable 'a',

Error in ==> inline.subsref at 25

INLINE_OUT_ = inlineeval(INLINE_INPUTS_, INLINE_OBJ_.inputExpr, INLINE_OBJ_.expr);

Этот пример демонстрирует, что при вычислении значения встраиваемой функции переменные рабочей среды недоступны. Все аргументы функции inline должны быть символьными строками, заключенными в апострофы, или строковыми переменными. В противном случае получается недопустимая конструкция.

Пример создания М-функции с помощью функции inline при определении корней уравнения с помощью функции fzero :

» fun = inline( 'sin(x) - x.^2 .*cos (x) ')

fun =

Inline function:

fun(x) = sin(x) – x .^ 2 .* cos(x)

» xl = fzero(fun, -5)

xl =

-4.7566

» fun(xl)

ans =

2.6645e-015