Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЧМиМТТС.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.87 Mб
Скачать

Численное решение линейных или нелинейных систем алгебраических уравнений

Команда FSOLVE – решает численно систему линейных или нелинейных уравнений F(X)=0 , где X – вектор, а F(X) – функция, которая возвращает значение вектора.

X = fsolve (fun, x0)

X = fsolve (fun, x0, options)

X = fsolve (fun, x0, options, P1, P2...)

[X, fval] = fsolve (...)

[X, fval, exitflag] = fsolve (...)

[X, fval, exitflag, output, jacobian] = fsolve (...)

X = fsolve (fun, x0) – начинается в x0 и пытается решить уравнения, описанные в fun;

X = fsolve (fun, x0, options) – решая уравнения, описанные в fun, минимизирует погрешность с параметрами оптимизации, указанными в структуре options (используйте команду optimset, чтобы установить эти параметры);

X = fsolve (fun, x0, options, P1, P2...) – дает решение, подобное описанному выше, передавая дополнительные параметры p1, р2, ... в m-файл F всякий раз, когда он вызывается (вычисление функций fun). Используйте options=[], если никакие параметры не задаются (опции используются по умолчанию);

[X, fval] = fsolve (...) – кроме решения X возвращает в fval значение fun функции для полученного решения Х.

[X, fval, exitflag] = fsolve (...) – дополнительно возвращает значение exitflag, который описывает условие (состояние) выхода.

[X, fval, exitflag, output] = fsolve (...) – дополнительно возвращает структуру output, которая содержит информацию об оптимизации.

[X, fval, exitflag, output, jacobian] = fsolve (...) – дополнительно возвращает Якобиан для fun при решении.

Команда OPTIMSET – задает, изменяет или выводит структуру свойств (опций) для решателя FSOLVE систем алгебраических уравнений F(X)=0:

options = optimset('param1',value1,'param2',value2,...)

options = optimset

options = optimset(optimfun)

options = optimset(oldopts,'param1',value1,...)

options = optimset(oldopts,newopts)

optimset

options = optimset('param1',value1,'param2',value2,...) – формирует массив параметров (структуру) options, в котором параметрам (опциям) с именами 'param1', 'param2', … приписываются некоторые значения value1, value2,…(достаточно указать только первый символ); неприсвоенному значению приписывается пустой массив [];

options = optimset – формирует массив параметров (структуру) options, в котором всем параметрам устанавливаются значения [];

options = optimset(optimfun) – формируется массив параметров options из всех возможных параметров, значения которых выбираются так, чтобы оптимизировать функцию optimfun;

options = optimset(oldopts,'param1',value1,...) – заменяет значения отдельных свойств (опций);

options = optimset(oldopts,newopts) – заменяется набор старых свойств набором новых, но если при этом для какого-либо из новых свойств указано [], то сохраняется прежнее значение этого свойства;

optimset – выводит список всех параметров (опций) с указанием их возможных значений и значений по умолчанию в фигурных скобках.

Параметры

Свойство

Значение

Описание

Display

'off'

'iter'

'final'

notify'

Уровень показа:

'off' не показывает ничего;

'iter' показывает при каждом повторении; 'final' показывает конечный результат; 'notify' показывает выходящее значение, если только функция не сходится

MaxFunEvals

положительное целое число

Максимальное число позволенных оценок функции

MaxIter

положительное целое число

Максимальное число позволенных повторений

TolFun

положительный скаляр

Подходящий предел значения функции

TolX

положительный скаляр

Подходящий предел x

Границы погрешностей интегрирования

Свойство

Значение

Описание

DerivativeCheck

'on' | {'off'}

вкл | {выкл}

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

Дополнительные характеристики

Свойство

Значение

Описание

1

2

3

Diagnostics

'on' | {'off'}

вкл | {выкл}

Показывает диагностическую информацию о функции, которая будет минимизирована или решена

DiffMaxChange

положительный скаляр | {1e-1}

Максимальные изменения в переменных для конечных различных производных

DiffMinChange

положительный скаляр | {1e-8}

Минимальные изменения в переменных для конечных различных производных

GoalsExactAchieve

положительное скалярное целое число | {0}

Число точно достигнутых значений

GradConstr

'on' | {'off'}

вкл | {выкл}

Градиенты для нелинейных ограничений, определенных пользо-вателем

GradObj

'on' | {'off'}

вкл | {выкл}

Градиент(ы) для объективной функции(й), определенной пользователем

Hessian

'on' | {'off'}

вкл | {выкл}

Определитель Гессе для объективной функции, определенной пользователем

HessMult

функция | {[]}

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

HessPattern

редкая матрица | {редкая матрица всех}

Разряженный образец определителя Гессе для конечной разного. Размером матрицы – n-на-n, где n – число (номер) элементов в x0, начальной точке

HessUpdate

{'bfgs'} | 'dfp' | 'gillmurray' | 'steepdesc'

Квази–Ньютон, обновляющий схему

Jacobian

'on' | {'off'}

вкл | {выкл}

Функциональный определитель (Якобиан) для объективной функции, определенной пользо-вателем

JacobMult

функция | {[]}

Функциональный определитель (Якобиан) умножает функцию, определенную пользователем

1

2

3

JacobPattern

редкая матрица | {редкая матрица всех}

Разряженный образец функционального определителя (Якобиана) для конечного различного. Размер матрицы – m-на-n, где m. - число величина в первом аргументе, указанная пользователем возвращенной функции fun, и n – число элементов в x0, начальной точке

LargeScale

вкл | {выкл}

Используйте крупномасштабный алгоритм если возможно. Исключение: постороннее значение для fsolve 'выключен'

LevenbergMarquardt

вкл | {выкл}

Предпочитает Левенберг-Марквардт алгоритму Гаусс-Ньютона

LineSearchType

'cubicpoly' | {'quadcubic'}

Выбор алгоритма поиска линии

MaxPCGIter

положительное целое число

Максимальное число (номер) PCG позволенных повторений. Пользовательское значение больше 1 и нижнее (n/2)), где n – число (номер) элементов в x0, начальной точке

MeritFunction

'singleobj' | {'multiobj'}

Использование значений достигших min/max присваивает данной функции (многопеременную) против fmincon

MinAbsMax

положительное скалярное целое число | {0}

Уменьшается худший результат функции F(x)

PrecondBandWidth

положительное целое число | {0} | Inf

Верхняя полоса пропускания предусловия для PCG

TolCon

положительный скаляр

Предел терпимости при нарушении ограничения

TolPCG

положительный скаляр | {0.1}

Предел терпимости завершения на PCG повторении

TypicalX

вектор всех

Типичные значения x. Длина вектора равна числу (номеру) элементов в x0, начальной точке

При численном решении средствами MATLAB системы СЛАУ

2,74x1 -1,18 x2 +3,17 x3 =2,18,

0,18x1 +1,27x2 +0,76x3 =3,23,

1,12x1 + 0,83x2 -2,16 x3 =-1,15

получаем для m-файла LR32.m

Тогда в окне команд MATLAB выполняем команды

»X0=[2.18; 3.23; -1.15]; % Vektor-stolbec 1-oe priblizenie

»options=optimset('Display','iter'); % Option to display output

»[X,fval] = fsolve(@LR32,X0,options); % Call optimizer

Norm of First-order Trust-region

Iteration Func-count f(x) step optimality radius

1 4 90.2515 30.2 1

2 8 42.0441 1 14.3 1

3 12 0.656521 2.5 2.28 2.5

4 16 2.05397e-017 0.325186 1.27e-008 6.25

Optimization terminated successfully:

First-order optimality is less than options.TolFun.

Ответ: X =[0.0969; 1.7732; 1.2640]

fval = 1.0e-008 *[0.3612; 0.1543; 0.2261]

При численном решении средствами MATLAB системы нелинейных алгебраических уравнений вида

Получаем M-файл в виде:

Тогда в окне команд MATLAB выполняем

»X0=[-6; -5; 0]; % Vektor-stolbec 1-oe priblizenie

»options=optimset('Display','iter'); % Option to display output

»[X,fval] = fsolve(@LR34,X0,options); % Call optimizer

И получаем ответ в окне команд:

Приложение 5