主要内容

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

fsolve

비선형연립방정식풀기

설명

비선형시스템솔버

다음으로지정된문제를풉니다。

F (x) = 0

x에 대한 문제이며, 여기서 F(x)는 벡터 값을 반환하는 함수입니다.

x는벡터또는행렬입니다。행렬 인수항목을참조하십시오。

예제

x= fsolve (有趣的x0x0에서시작하여0으로구성된배열인방정식乐趣(x)=0을풀려고시도합니다。

예제

x= fsolve (有趣的x0选项选项에지정된최적화옵션을사용하여방정식을풉니다。이옵션을설정하려면optimoptions를사용하십시오。

예제

x= fsolve (问题问题에설명되어있는구조체인问题을풉니다。

예제

xfval) = fsolve (___는모든구문에서해x에서의목적함수有趣的의값을반환합니다。

예제

xfvalexitflag输出) = fsolve (___fsolve의종료상황을설명하는값exitflag와최적화과정에대한정보가포함된구조체输出을 추가로 반환합니다.

xfvalexitflag输出雅可比矩阵) = fsolve (___는해x에서의有趣的의야코비행렬을반환합니다。

예제

모두 축소

이예제에서는두변수로구성된두비선형방정식을푸는방법을보여줍니다。방정식은다음과같습니다。

c数组$ $ \开始{}{}& # xA; {e ^ {- {e ^ {({x_1} + {x_2 })}}}} = { 左(x_2} \ {1 + x_1 ^ 2} \) \ \ & # xA; {x_1} \因为\离开({{x_2}} \右)+ {x_2} \罪\离开({{x_1}} \右)= \压裂{1}{2}# xA;公司\{数组}$ $

이방정식을$ F (x) = \ bf {0} $형식으로변환합니다。

c数组$ $ \开始{}{}& # xA; {e ^ {- {e ^ {({x_1} + {x_2 })}}}} - { 左(x_2} \ {1 + x_1 ^ 2} \右)= 0 \ \ & # xA; {x_1} \因为\离开({{x_2}} \右)+ {x_2} \罪\离开({{x_1}} \右)& # xA; - \压裂{1}{2}= 0。\{数组}$ $

이 두 방정식의 좌변을 계산하는 함수를 작성합니다.

函数F=root2d(x)F(1)=exp(-exp(-(x(1)+x(2)))-x(2)*(1+x(1)^2);F(2)=x(1)*cos(x(2))+x(2)*sin(x(1))-0.5;

이코드를MATLAB®경로에root2d.m이라는 파일로 저장합니다.

(0,0)에서시작하여연립방정식을풉니다。

有趣= @root2d;x0 = (0,0);x0, x = fsolve(有趣)
方程解决。Fsolve完成了,因为函数值的向量接近零(通过函数容差值测量),并且问题出现了规则(通过梯度测量)。X = 0.3532 0.6061

비선형 시스템의 풀이 과정을 검토합니다.

계산과정은표시하지않되,알고리즘이반복됨에따라0으로수렴되는1차최적성을표시하는플롯함수는포함하도록옵션을설정합니다。

选择= optimoptions (“fsolve”“显示”“没有”“PlotFcn”, @optimplotfirstorderopt);

비선형시스템의방정식은다음과같습니다。

{{{{{{{{数组}{{{{{{{{}}}}{{{{{{{{}}}}{{{{{}}}}}}}}}}}{{{{{{{数组数组}}}}}}}}{{{{{{}}}}}}}}{{{{}}}}}}{{{{{}}}}}}}}}}}}}}}}}}}}}}{{{{{{{{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}{array}$$

이방정식을$ F (x) = \ bf {0} $형식으로변환합니다。

c数组$ $ \开始{}{}& # xA; {e ^ {- {e ^ {({x_1} + {x_2 })}}}} - { 左(x_2} \ {1 + x_1 ^ 2} \右)= 0 \ \ & # xA; {x_1} \因为\离开({{x_2}} \右)+ {x_2} \罪\离开({{x_1}} \右)& # xA; - \压裂{1}{2}= 0。\{数组}$ $

이 두 방정식의 좌변을 계산하는 함수를 작성합니다.

函数F=root2d(x)F(1)=exp(-exp(-(x(1)+x(2)))-x(2)*(1+x(1)^2);F(2)=x(1)*cos(x(2))+x(2)*sin(x(1))-0.5;

이코드를MATLAB®경로에root2d.m이라는 파일로 저장합니다.

(0,0)에서시작하여비선형시스템을푼다음풀이과정을살펴봅니다。

有趣= @root2d;x0 = (0,0);x = fsolve(有趣,x0,选项)
X = 0.3532 0.6061

fsolve에대한문제구조체를만들고문제를풉니다。

디폴트가아닌옵션을사용한풀이에 나온 것과 동일한 문제를 풀되, 문제 구조체를 사용하여 문제를 정식화합니다.

계산과정은표시하지않되,알고리즘이반복됨에따라0으로수렴되는1차최적성을표시하는플롯함수는포함하도록문제의옵션을설정합니다。

问题。选项=optimoptions(“fsolve”“显示”“没有”“PlotFcn”, @optimplotfirstorderopt);

비선형시스템의방정식은다음과같습니다。

{{{{{{{{数组}{{{{{{{{}}}}{{{{{{{{}}}}{{{{{}}}}}}}}}}}{{{{{{{数组数组}}}}}}}}{{{{{{}}}}}}}}{{{{}}}}}}{{{{{}}}}}}}}}}}}}}}}}}}}}}{{{{{{{{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}{array}$$

이방정식을$ F (x) = \ bf {0} $형식으로변환합니다。

c数组$ $ \开始{}{}& # xA; {e ^ {- {e ^ {({x_1} + {x_2 })}}}} - { 左(x_2} \ {1 + x_1 ^ 2} \右)= 0 \ \ & # xA; {x_1} \因为\离开({{x_2}} \右)+ {x_2} \罪\离开({{x_1}} \右)& # xA; - \压裂{1}{2}= 0。\{数组}$ $

이 두 방정식의 좌변을 계산하는 함수를 작성합니다.

函数F=root2d(x)F(1)=exp(-exp(-(x(1)+x(2)))-x(2)*(1+x(1)^2);F(2)=x(1)*cos(x(2))+x(2)*sin(x(1))-0.5;

이코드를MATLAB®경로에root2d.m이라는 파일로 저장합니다.

문제구조체의나머지필드를만듭니다。

问题。目标= @root2d;问题。x0=(0,0);问题。解算器=“fsolve”

문제를 풉니다.

x = fsolve(问题)
X = 0.3532 0.6061

이예제에서는다음과같이두개의방정식과두개의미지수로구성된시스템에대한풀이의반복과정을표시합니다。

2 x 1 - x 2 e - x 1 - x 1 + 2 x 2 e - x 2

이방정식을 F x 0 형식으로다시작성합니다。

2 x 1 - x 2 - e - x 1 0 - x 1 + 2 x 2 - e - x 2 0

X0 = [-5 -5]에서해탐색을시작합니다。

먼저,x에서방정식값F를계산하는함수를작성합니다。

F = @(x) [2*x(1) -x(2) - exp(-x(1));-x(1) + 2*x(2) - exp(-x(2))];

초기점x0을만듭니다。

x0 = (5; 5);

반복과정을표시하도록옵션을설정합니다。

选择= optimoptions (“fsolve”“显示”“通路”);

방정식을풉니다。

[x, fval] = fsolve (F, x0,选项)
一阶信赖域迭代Func计数f(x)的范数阶跃最优性半径0 3 47071.2 2.29e+04 1 6 12003.4 1 5.75e+03 1 2 9 3147.02 1 1.47e+03 1 3 12 854.452 1 388 1 4 15 239.527 1 107 1 5 18 67.0412 1 30.8 1 6 21 16.7042 1 9.05 1 7 24 2 2.42788 1 2.26 18 0.032658 0.759511 0.206 2.5 9 30 7.03149e-06 0 0 0 0.111927 0.00294 2.5 10 33 10 33 3.13 293.13.0 0 0 0 0 0完全解出方程这是因为函数值的向量接近于零,通过函数公差的值来测量,并且通过梯度来测量,问题看起来是规则的。
x =2×10.5671 - 0.5671
fval =2×110-6×-0.4059 - -0.4059

반복과정에서함수F (x)의노름에대한제곱인f (x)가표시됩니다。이값은반복이진행될때마다0에가깝게감소합니다。마찬가지로1차최적성측정값도반복이진행될때마다0에가깝게감소합니다。이러한요소가해에대한반복수렴을나타냅니다。다른요소에대한의미는반복 과정 표시항목을참조하십시오。

fval출력값은함수값F (x)를제공하고,이값은해(FunctionTolerance허용오차 내에서)에서 0이어야 합니다.

다음을충족하는행렬 X 를구합니다。

X X X 1 2 3. 4

x0=[1,1;1,1]에서시작합니다。행렬방정식을계산하는익명함수를만들고점x0을생성합니다。

= @(x)x*x*x - [1,2;3,4];x0 = 1 (2);

계산과정을표시하지않도록옵션을설정합니다。

选择= optimoptions (“fsolve”“显示”“关”);

fsolve출력값을 검토하여 해의 품질과 풀이 과정을 확인합니다.

[x, fval exitflag、输出]= fsolve(有趣,x0,选项)
x =2×20.1291 0.8602 1.2903 1.1612
fval =2×2109× -0.1618 0.0778 0.1160 -0.0474
exitflag = 1
输出=结构体字段:firstderopt: 2.4095e-10 message: '…'

종료플래그값1은해를신뢰할수있음을나타냅니다。잔차(fval의제곱합)를계산하여0에얼마나가까운지살펴봄으로써이를수동으로확인할수있습니다。

sum (sum (fval。* fval))
ans = 4.7957 e-20

이렇게 잔차가 작을 경우x가해라는것을확인할수있습니다。

输出구조체에서해를구하기위해fsolve가수행한반복횟수와함수실행횟수를확인할수있습니다。

입력 인수

모두 축소

풀려는 비선형 방정식으로, 함수 핸들 또는 함수 이름으로 지정됩니다.有趣的은벡터x를받고x에서계산된비선형방정식값인벡터F를반환하는함수입니다。풀려는방정식은F의모든성분에서F= 0입니다。함수有趣的은다음과같이파일에대한함수핸들로지정할수있습니다。

x = fsolve (x0 @myfun)

여기서myfun은다음과같은MATLAB®함수입니다。

函数F = myfun(x)…%计算函数在x处的值

有趣的을익명함수에대한함수핸들로지정할수도있습니다。

x = fsolve (@ (x) sin (x) * x), x0);

xF의사용자정의값이배열인경우,이값은선형인덱싱을사용하여벡터로변환됩니다(배열인덱싱참조)。

야코비행렬도계산할수있고“SpecificyObjectiveGradient”옵션이다음설정처럼真正的인경우

选择= optimoptions(‘fsolve’,‘SpecifyObjectiveGradient’,真的)

함수有趣的은두번째출력인수로x에서계산된행렬값인야코비행렬값J를반환해야합니다。

有趣的개의성분으로구성된벡터(행렬)을반환하고x의길이가n이면(여기서nx0의길이임)야코비행렬J×n행렬입니다。여기서J(i,J)x(j)에대한F(我)의편도함수입니다。야코비행렬JF의기울기의전치입니다。

예:乐趣=@(x)x*x*x-[1,2;3,4]

데이터형:字符|function_handle|字符串

초기점으로,실수형벡터나실수형배열로지정됩니다。fsolvex0의크기와요소개수를사용하여有趣的이 받는 변수의 크기와 개수를 확인합니다.

예:x0 =(1、2、3、4)

데이터형:

최적화옵션으로,optimoptions의출력값또는optimset등이반환하는구조체로지정됩니다。

옵션에따라모든알고리즘에적용되는옵션이있고특정알고리즘에만유효한옵션이있습니다。자세한내용은최적화옵션참조항목을참조하십시오。

일부옵션은optimoptions표시에나타나지않습니다。이러한옵션은다음표에서기울임꼴로표시되어있습니다。자세한내용은视图选项항목을참조하십시오。

모든 알고리즘
算法

“trust-region-dogleg”(디폴트값),“信赖域”“levenberg-marquardt”중에서선택합니다。

算法옵션은사용할알고리즘에대한기본설정을지정합니다。이는단지기본적인설정에불과합니다。信赖域알고리즘이라면비선형연립방정식이부족결정시스템이어서는안됩니다。다시말해방정식개수(有趣的이반환하는F의요소개가수)x의길이보다크거나같아야합니다。마찬가지로trust-region-dogleg알고리즘이라면방정식개수가x의길이와같아야합니다。fsolve는선택한알고리즘을사용할수없는경우Levenberg-Marquardt알고리즘을사용합니다。알고리즘을선택하는방법에대한자세한내용은알고리즘선택하기항목을참조하십시오。

optimoptions대신optimset을사용하여알고리즘옵션을설정하려면다음과같이하십시오

  • 算法— 알고리즘을“信赖域”대신“trust-region-reflective”로설정합니다。

  • InitDamping- - - - - -算法을셀형배열(예:{levenberg-marquardt, .005})로설정하여초기Levenberg-Marquardt파라미터λ를설정합니다。

CheckGradients

사용자제공도함수(목적함수또는제약조건의기울기)를유한차분도함수와비교합니다。真正的또는(디폴트값)를선택할수있습니다。

optimset의경우,이이름은DerivativeCheck이고값은“上”또는“关”입니다。현재옵션이름과이전옵션이름항목을참조하십시오。

诊断

최소화하거나풀려는함수에대한진단정보를표시합니다。“上”또는“关”(디폴트값)를선택할수있습니다。

DiffMaxChange

유한 차분 기울기에 대한 변수의 최대 변화량입니다(양의 스칼라). 디폴트 값은Inf입니다。

DiffMinChange

유한차분기울기에대한변수의최소변화량입니다(양의스칼라)。디폴트값은0입니다。

显示

표시수준입니다(반복 과정 표시참조):

  • “关”또는“没有”은출력값을표시하지않습니다。

  • “通路”는각반복마다출력값을표시하고디폴트종료메시지를제공합니다。

  • “iter-detailed”는각반복마다출력값을표시하고기술적인종료메시지를제공합니다。

  • “决赛”(디폴트값)은최종출력값만표시하고디폴트종료메시지를제공합니다。

  • “最终详细说明”는최종출력값만표시하고기술적인종료메시지를제공합니다。

FiniteDifferenceStepSize

유한차분에대한스칼라또는벡터스텝크기인자입니다。FiniteDifferenceStepSize를벡터v로 설정하는 경우 전향 유한 차분δ는다음과같습니다。

δ= v *标志的(x) *马克斯(abs (x)、TypicalX);

여기서符号“(x) =符号(x)입니다(단标志' (0)= 1임)。중심유한차분은다음과같습니다。

delta=v.*max(绝对值x,典型值x);

스칼라FiniteDifferenceStepSize는벡터로확장됩니다。디폴트값은전향유한차분의경우sqrt (eps)이고중심유한차분의경우eps ^ (1/3)입니다。

optimset의경우,이이름은FinDiffRelStep입니다。현재옵션이름과이전옵션이름항목을참조하십시오。

FiniteDifferenceType

기울기를추정하는데사용되는유한차분으로,“前进”(디폴트 값) 또는“中央”(중심화됨)입니다。“中央”2배은함수실행횟수가더많지만더정확합니다。

알고리즘은 두 유형의 유한 차분을 모두 추정하는 경우 범위를 준수하려고 노력합니다. 예를 들어, 범위 외부에 있는 점에서 실행되는 것을 방지하기 위해 전향 차분이 아니라 후향 차분을 사용할 수 있습니다.

optimset의경우,이이름은FinDiffType입니다。현재옵션이름과이전옵션이름항목을참조하십시오。

FunctionTolerance

함수값에대한종료허용오차로,양의스칼라입니다。디폴트값은1 e-6입니다。허용오차와중지기준항목을참조하십시오。

optimset의경우,이이름은托尔芬입니다。현재옵션이름과이전옵션이름항목을참조하십시오。

FunValCheck

목적함수값이유효한지여부를확인합니다。“上”은목적함수가复杂的Inf또는값을반환하는경우에오류를표시합니다。디폴트값인“关”는 오류를 표시하지 않습니다.

MaxFunctionEvaluations

허용되는최대함수실행횟수로,양의정수입니다。디폴트값은100 * numberOfVariables입니다。허용오차와중지기준항목과반복횟수와함수실행횟수항목을참조하십시오。

optimset의경우,이이름은MaxFunEvals입니다。현재옵션이름과이전옵션이름항목을참조하십시오。

MaxIterations

허용되는최대반복횟수로,양의정수입니다。디폴트값은400입니다。허용오차와중지기준항목과반복횟수와함수실행횟수항목을참조하십시오。

optimset의경우,이이름은马克西特입니다。현재옵션이름과이전옵션이름항목을참조하십시오。

OptimalityTolerance

1차최적성에대한종료허용오차입니다(양의스칼라)。디폴트값은1 e-6입니다。1차최적성측정값항목을참조하십시오。

내부적으로,“levenberg-marquardt”알고리즘은최적성허용오차(중지기준)1的军医FunctionTolerance를 곱한 값을 사용하고OptimalityTolerance는사용하지않습니다。

输出FCN

각반복마다최적화함수가호출하는하나이상의사용자정의함수를지정합니다。함수핸들또는함수핸들셀형배열을전달합니다。디폴트값은없음([])입니다。输出函数和绘图函数语法항목을참조하십시오。

PlotFcn

알고리즘이 실행되는 동안 다양한 진행률 측정값을 플로팅합니다. 미리 정의된 플롯에서 선택하거나 사용자가 직접 작성할 수 있습니다. 내장 플롯 함수 이름, 함수 핸들 또는 내장 플롯 함수 이름이나 함수 핸들로 구성된 셀형 배열을 전달하십시오. 사용자 지정 플롯 함수의 경우, 함수 핸들을 전달하십시오. 디폴트 값은 없음([])입니다。

  • “optimplotx”는현재점을플로팅합니다。

  • '最佳打印功能计数'는함수실행횟수를플로팅합니다。

  • “最佳普罗夫瓦尔”은함수값을플로팅합니다。

  • “optimplotstepsize”는스텝크기를플로팅합니다。

  • “optimplotfirstorderopt”는1차최적성측정값을플로팅합니다。

사용자 지정 플롯 함수는 출력 함수와 동일한 구문을 사용합니다.优化工具箱的输出函数항목과输出函数和绘图函数语法항목을참조하십시오。

optimset의경우,이이름은PlotFcns입니다。현재옵션이름과이전옵션이름항목을참조하십시오。

SpecifyObjectiveGradient

真正的인경우,fsolve는목적함수에대해사용자정의야코비행렬(有趣的에서정의됨)또는야코비행렬정보(雅可比数을 사용하는 경우)를 사용합니다.(디폴트값)인경우,fsolve는유한차분을사용하여야코비행렬의근삿값을계산합니다。

optimset의경우,이이름은雅可比矩阵이고값은“上”또는“关”입니다。현재옵션이름과이전옵션이름항목을참조하십시오。

StepTolerance

x에대한종료허용오차로,양의스칼라입니다。디폴트값은1 e-6입니다。허용오차와중지기준항목을참조하십시오。

optimset의경우,이이름은TolX입니다。현재옵션이름과이전옵션이름항목을참조하십시오。

TypicalX

일반적인x값입니다。TypicalX의요소개수는시작점x0의요소개수와같습니다。디폴트값은的(numberofvariables, 1)입니다。fsolve는기울기추정을위해유한차분을스케일링하는데TypicalX를사용합니다。

trust-region-dogleg알고리즘은스케일링행렬의대각항으로TypicalX를사용합니다。

UseParallel

真正的인경우fsolve는기울기를병렬로추정합니다。디폴트값로설정하면비활성화됩니다。병렬연산항목을참조하십시오。

信任区알고리즘
雅可比数

야코비 행렬의 곱셈 함수로, 함수 핸들로 지정됩니다. 특정 구조를 가진 대규모 문제의 경우, 이 함수는J를실제로구성하지않고야코비행렬곱J * YJ ' * Y또는J”* (J * Y)를계산합니다。이함수의형식은다음과같습니다。

W = jmfun(动力系统,Y,标志)

여기서动力系统J * Y(또는J ' * YJ”* (J * Y))를계산하는데사용되는행렬을포함합니다。첫번째인수动力系统는목적함수有趣的이반환하는두번째인수와같아야합니다。예를들어다음과같습니다。

(F,动力系统)(x) =乐趣

Y는문제의차원과동일한개수의행을갖는행렬입니다。旗帜는 계산해야 하는 곱을 결정합니다.

  • 标志= = 0이면W = J ' * (J * Y)입니다。

  • 国旗> 0이면W = J * Y입니다。

  • 国旗< 0이면W = J ' * Y입니다。

어느경우든J가명시적으로구성되지는않습니다。fsolve动力系统를사용하여선조건자를계산합니다。jmfun에필요한추가파라미터의값을제공하는방법에대한자세한내용은추가파라미터전달하기항목을참조하십시오。

참고

fsolve有趣的에서jmfun으로动力系统를전달하도록하려면“SpecificyObjectiveGradient”真正的로설정되어야합니다。

유사한예제는稠密结构Hessian的最小化,线性等式항목을참조하십시오。

optimset의경우,이이름은JacobMult입니다。현재옵션이름과이전옵션이름항목을참조하십시오。

雅可比模式

유한차분을위한야코비행렬의희소성패턴입니다。有趣的(我)x(j)에종속되는경우JacobPattern (i, j) = 1을설정합니다。그렇지않은경우JacobPattern (i, j) = 0을설정합니다。다시말해,∂有趣的(我)/∂x(j)≠0이성립하는경우JacobPattern (i, j) = 1을설정합니다。

雅可比模式有趣的의야코비행렬J를계산하는것이번거롭고有趣的(我)x(j)에종속된다는사실은(조사를통해)확인할수있는경우에사용합니다。雅可比模式을제공하는경우fsolve는희소유한차분을통해J의 근삿값을 계산할 수 있습니다.

최악의 경우, 구조를 알 수 없다면雅可比模式을설정하지마십시오。이경우기본적으로雅可比模式이1로구성된조밀행렬인것처럼동작합니다。그러면fsolve가각반복마다비희소유한차분근삿값을계산합니다。이과정은대규모문제의경우시간이아주오래걸릴수있으므로희소성구조를확인하는것이일반적으로더좋습니다。

MaxPCGIter

최대PCG(선조건적용켤레기울기)반복횟수로,양의스칼라입니다。디폴트값은马克斯(1楼(numberOfVariables / 2))입니다。자세한내용은방정식 풀이 알고리즘항목을참조하십시오。

PrecondBandWidth

PCG에대한선조건자의상부대역폭으로,음이아닌정수입니다。디폴트값PrecondBandWidthInf이며,이는직접분해(촐레스키)가켤레기울기(CG)대신사용된다는것을의미합니다。직접분해는CG보다계산량이더많지만해에다가가는데있어더나은품질의스텝을생성합니다。대각선조건지정에서는PrecondBandWidth0으로설정합니다(상부대역폭:0)。일부문제의경우,중간대역폭을사용하면PCG반복횟수가줄어듭니다。

SubproblemAlgorithm

반복스텝이계산되는방식을결정합니다。디폴트값“分解”“重心”보다더느리지만더정확한스텝을실행합니다。信赖域알고리즘항목을참조하십시오。

TolPCG

PCG반복에 대한 종료 허용오차로, 양의 스칼라입니다. 디폴트 값은0.1입니다。

Levenberg-Marquardt알고리즘
InitDamping

Levenberg-Marquardt파라미터의초기값으로,양의스칼라입니다。디폴트값은1)依照입니다。자세한내용은Levenberg-Marquardt방법항목을참조하십시오。

ScaleProblem

的雅可比矩阵을사용하면잘못스케일링된문제의수렴이향상될수도있습니다。디폴트값은“没有”입니다。

예:选择= optimoptions(“fsolve”、“FiniteDifferenceType”,“中央”)

문제구조체로,다음필드를가진구조체로지정됩니다。

필드이름 항목

客观的

목적함수

x0

x의초기점

解算器

“fsolve”

选项

optimoptions로생성되는옵션

데이터형:结构体

출력인수

모두 축소

해로,실수형벡터나실수형배열로반환됩니다。x의크기는x0의크기와같습니다。일반적으로xexitflag가양수인경우문제에대한국소해입니다。해의품질에대한자세한내용은当求解成功时항목을참조하십시오。

해에서계산된목적함수값으로,실수형벡터로반환됩니다。일반적으로fval有趣的(x)입니다。

fsolve가중지된이유로,정수로반환됩니다。

1

방정식을풀었습니다。1차최적성이작습니다。

2

방정식을풀었습니다。x의변화량이지정된허용오차보다작거나,x에서야코비행렬이정의되어있지않습니다。

3.

방정식을 풀었습니다. 잔차의 변화량이 지정된 허용오차보다 작습니다.

4

방정식을 풀었습니다. 탐색 방향의 크기가 지정된 허용오차보다 작습니다.

0

반복횟수가选项。马克西特ations를초과하거나,함수실행횟수가options.MaxFunctionEvaluations를초과했습니다。

-1

출력함수또는플롯함수가알고리즘을중지했습니다。

-2

방정식을풀지못했습니다。종료메시지에추가정보가포함될수있습니다。

-3

방정식을풀지못했습니다。신뢰영역반지름이너무작아졌습니다(trust-region-dogleg알고리즘)。

최적화 과정에 대한 정보로, 다음 필드를 가진 구조체로 반환됩니다.

迭代

수행된반복횟수

funcCount

함수실행횟수

算法

사용된최적화알고리즘

cgiterations

총PCG반복횟수(“信赖域”알고리즘만해당)

stepsize

x의최종변위(“trust-region-dogleg”에는해당되지않음)

firstorderopt

1차최적성에대한측정값

消息

종료메시지

해에서계산된야코비행렬로,실수형행렬로반환됩니다。雅可比矩阵(i, j)는해x에서계산된x(j)에대한有趣的(我)의편도함수입니다。

제한사항

  • 풀려는함수는연속함수여야합니다。

  • 성공할경우fsolve는하나의근만제공합니다。

  • 디폴트값인信赖域狗腿방법은연립방정식이정사각행렬인경우(즉,방정식개수가미지수개수와같음)에만사용할수있습니다。Levenberg-Marquardt방법을사용하는경우연립방정식이정사각행렬일필요가없습니다。

  • 변수가 수천 개 이상 있는 큰 문제의 경우,算法옵션을“信赖域”으로설정하고SubproblemAlgorithm옵션을“重心”로설정하면메모리를절약할수있으며시간도절약할수있습니다。

알고리즘

莱文伯格·马夸特방법과 信任区방법은lsqnonlin에도사용된비선형최소제곱알고리즘을기반으로합니다。시스템이0을가지지않을가능성이있는경우이방법중하나를사용하십시오。알고리즘은여전히잔차가작은점을반환합니다。하지만,시스템의야코비행렬이특이행렬인경우알고리즘이연립방정식의해가아닌점으로수렴할수있습니다(제한사항참조)。

  • 기본적으로fsolve는 信赖域狗腿알고리즘을 선택합니다. 이 알고리즘은 파월(鲍威尔)의 狗腿방법([8]에설명되어있음)의변형입니다。이는[7]에구현된알고리즘과성격이비슷합니다。Trust-Region-Dogleg알고리즘항목을참조하십시오。

  • 信赖域알고리즘은부분공간信赖域방법이며interior-reflective뉴턴방법([1][2]에설명되어있음)을기반으로합니다。각반복에는선조건적용켤레기울기(PCG)방법을사용한대규모선형시스템의근사해풀이작업이포함됩니다。信赖域알고리즘항목을참조하십시오。

  • Levenberg-Marquardt방법은참고문헌[4][5][6]에설명되어있습니다。Levenberg-Marquardt방법항목을참조하십시오。

대체기능

최적화라이브편집기작업은fsolve에대한시각적인터페이스를제공합니다。

참고문헌

[1] Coleman, T.F.和Y. Li,“有界非线性极小化的内部信赖域方法”,《优化学报》,第6卷,第418-445页,1996。

[2] Coleman T.F.和Y. Li,“关于有界的大规模非线性极小化的反射牛顿方法的收敛性”,数学规划,第67卷,第2期,189-224页,1994。

[3] Dennis, J. E. Jr.,“非线性最小二乘”,《数值分析的现状》,D. Jacobs编辑,学术出版社,第269-312页。

[4] Levenberg, K.,“求解最小二乘某些问题的方法”,《季刊应用数学2》,第164-168页,1944。

[5] Marquardt,“非线性参数的最小二乘估计算法”,SIAM应用数学杂志,第11卷,431-441页,1963。

[6] Moré, J. J.,“Levenberg-Marquardt算法:实现和理论”,数值分析,g.a. Watson编辑,《数学讲义》630,施普林格Verlag, 105-116, 1977。

[7] Moré,J.J.,B.S.Garbow和K.E.Hillstrom,《MINPACK 1用户指南》,阿贡国家实验室,报告。ANL-80-741980年。

[8] Powell, M. J. D.,“求解非线性代数方程组的Fortran子程序”,非线性代数方程的数值方法,P. Rabinowitz, Ch.7, 1970。

확장 기능

R2006a이전에개발됨