И другие программы этой серии
fsolve имеет почти те же параметры (дополнительный параметр – задание якобиана) и почти ту же запись, что и функция lsqnonneg, подробно рассмотренная ранее. Пример:
>>fsolve(\'0.25*x+sin(x)-1\',0:10 ) ans =
Columns 1 through 7
0.8905 0.8905 2.8500 2.8500 2.8500 5.8128 5.8128
Columns 8 through 11
5.8128 2.8500 2.8500 10.7429
Для решения нелинейных уравнений следует также использовать функцию solve из пакета Symbolic Math Toolbox. Эта функция способна выдавать результат в символьной форме, а если такого нет, то она позволяет получить решение в численном виде. Пример:
>> solve(\'0.25*x + sin(x) -1\')
ans = .89048708074438001001103173059554
8.3.4. Решение систем нелинейных уравнений
Функция fsolve может использоваться и для решения систем нелинейных уравнений. В этом случае речь идет о нахождении значений двух и более переменных, удовлетворяющих решению заданной системы нелинейных уравнений. Рассмотрим следующий пример. Зададим m-файл с именем myfun, задающий систему F из двух уравнений, записанных как функции переменных x(1) и x(2):
function F = myfun(x)
F = [2*x(1) – x(2) – log(-x(1));
-x(1) + 2*x(2) – exp(-x(2))];
Тогда решение этой системы уравнений с выводом хода решения находится следующим образом:
>> x0 = [-5; -5];
options=optimset(\'Display\',\'iter\'); [x,fval] = fsolve(@myfun,x0,options)
Iteration Func-count
f(x)
0
3
1
6
2
9
3
12
4
15
5
18
6
21
7
24
8
27
9
30
10
33
Norm of
First-order
Trust-
step
optimality
region radius
1
2.31e+004
1
1
3.25e+003
1
1
457
1
1
61.1
1
1
16.2
1
2.5
6.48
2.5
1.68179
13.9
6.25
0.190816
1.87
6.25
0.0744278
0.111
6.25
0.00575471
0.000491
6.25
2.58413e-0
05 9.75e-009
6.25
23579.3
3375.08
518.733
130.732
72.0289
12.1627
2.49612
0.123229
0.000558075
1.11275e-008
4.39022e-018
Optimization terminated: first-order optimality is less than options.TolFun.
Начало в части 1