logo资料库

matlab的fsolve使用.docx

第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
资料共4页,全文预览结束
1.fsolve
2.语法
3.描述
4.输入参数
4.1.fun
4.2.options
5.输出参数
5.1.exitflag
5.2.output
5.3.options
5.3.1.Medium-Scale and Large-Scale Algorithms
5.3.2.仅适用于Large-Scale Algorithm
5.3.3.仅适用于Medium-Scale Algorithm
6.使用优化工具箱完成以上函数操作
1. fsolve 求解非线性方程组 方程: F(x)=0 x 是一个向量,F(x)是该向量的函数向量,返回向量值 2. 语法 x = fsolve(fun,x0) x = fsolve(fun,x0,options) [x,fval] = fsolve(fun,x0) [x,fval,exitflag] = fsolve(...) [x,fval,exitflag,output] = fsolve(...) [x,fval,exitflag,output,jacobian] = fsolve(...) 3. 描述 fsolve 用于寻找非线性系统方程组的零点。 x = fsolve(fun,x0)以 x0 为初始值,努力寻找在 fun 中描述的方程组。 x = fsolve(fun,x0,options) 以 x0 为初始值,按照指定的优化设置“options”努力寻找在 fun 中描述的方程组。使用 optimset 设置这些选项。 [x,fval] = fsolve(fun,x0)返回在解 x 处的目标函数 fun 的值 [x,fval,exitflag] = fsolve(...)返回 exitflag 表示退出条件。 [x,fval,exitflag,output] = fsolve(...)返回 output 结构,该结构包含了优化信息。 [x,fval,exitflag,output,jacobian] = fsolve(...)返回在解 x 处的 Jacobian 函数。 4. 输入参数 4.1. fun 非线性系统方程。它是一个函数,以 x 作为输入,返回向量 F。函数 fun 可以被指定为 一个 M 文件函数的函数句柄。 % Compute function values at x x = fsolve(@myfun,x0) 这里的 myfun 是一个 matlab 函数,形如: function F = myfun(x) F = ... fun 也可以是一个异步函数的函数句柄: x = fsolve(@(x)sin(x.*x),x0); 若用户定义的值为矩阵,则会被自动转换为向量。 若 Jacobian 能 被 计 算出 来 且 通 过 options = optimset('Jacobian','on') 设 置 Jacobian 选 项 为”on”,则函数 fun 必须在第 2 个输出参数中返回 x 处的 Jacobian 值 J(它是一个矩阵)。注 意:通过检查 nargout 的值,当 fun 被只带一个输出参数调用的情况下,该函数可避免计算 J,仅只有一个输出参数。(这种情况下,优化算法仅需要知道 F 而不需 J)。 function [F,J] = myfun(x) F = ... % objective function values at x
if nargout > 1 % two output arguments J = ... % Jacobian of the function evaluated at x end 4.2. options 提供该函数有关的特定信息。 5. 输出参数 5.1. exitflag 一个用来表示算法终止原因的整数。 1:函数收敛到 x 2:x 的变化已经处在容许范围内 3:残差变化已经处在容许范围内 4:搜索方向飞幅度比指定的误差小 5:迭代次数超过 options.MaxIter 或函数估值的次数超过 options.FunEvals -1:算法被输出函数终止 -2:算法似乎收敛到一个非根点。 -3:可信半径变得太小 -4:沿当前方向的线性搜索不能足够地减小残差 5.2. output 包含关于优化信息的一个结构,其具有如下字段: iterations:已经迭代的次数 funcCount:函数估值的次数 algorithm:所使用的算法 cgiterations:PCG 迭代次数(仅适用于大规模算法) stepsize:最终采取的步长(仅适用于中等规模算法) firstorderopt:第 1 阶优化的观测值1。 5.3. options 优化设置。一些选项设置用于所有算法,部分与大规模算法(large-scale algrithm)。相 关,部分与中等规模算法相关。可以使用 optimset 改变其中的设置。LargeScale 选项指定 使用哪种算法。 设为‘on’使用大规模算法,设为‘off’使用中等规模算法。 1 此处可能翻译不当
5.3.1. Medium-Scale and Large-Scale Algorithms 如下选项用于大规模和中等规模算法: DerivativeCheck:将用户提供导数与有限差分导数相比较 Diagnostics:显示被解函数的诊断信息 DiffMaxChange:有限差分变量中的最大变化 DiffMinChange:有限差分变量中的最小变化 Display:显示的级别,‘off‘不显示输出,’iter‘显示每一步迭代的输出,’final‘显示 最终的输出(默认) FunValCheck:检查目标函数值是否有效。设为‘on’,当函数返回值为复数、inf 或 NaN 将返回一个错误,设为‘off’将不显示错误。 Jacobian:设为‘ON’,fsolve 将使用用户定义的 Jacobian 或 Jacobian 信息来估值目标 函数,若设为‘off’,则使用有限差分逼近 Jacobian。 MaxFunEvals:最大允许估值次数 MaxIter:最大迭代次数 OutputFcn:指定一个或多个输出函数,优化函数在每一个迭代过程中将调用这些函数。 PlotFcns:算法执行时显示进度条。从预定义中选择或自定义进度条。指定@optimplotx 显示当前的点,@optimplotfunccount 打印出函数的计数,@optimplotfval 打印出函数值, @optimplotresnorm 打印出残差范数,@optimplotstepsize 打印出步长,@optimplotfirstorderopt 打印优化参数的第 1 阶。 TolFun:函数值的终止误差。 TolX:x 的终止误差 5.3.2. 仅适用于 Large-Scale Algorithm JacobMult:Jacobian 乘法函数的函数句柄 JacobPattern MaxPCGIter PrecondBandWidth TolPCG 5.3.3. 仅适用于 Medium-Scale Algorithm NonlEqnAlgorithm: 'dogleg' — Trust-region dogleg algorithm (default) 'lm' — Levenberg-Marquardt 'gn' — Gauss-Newton LineSearchType:'lm' (Levenberg-Marquardt) 'gn' (Gauss-Netwton) algorithms.
6. 使用优化工具箱完成以上函数操作 命令:optimtool
分享到:
收藏