为了账号安全,请及时绑定邮箱和手机立即绑定

matlab的lsqnonlin函数怎么用?

/ 猿问

matlab的lsqnonlin函数怎么用?

DIEA 2019-01-29 11:07:09

matlab的lsqnonlin函数怎么用


查看完整描述

2 回答

?
临摹微笑

matlab的lsqnonlin()函数主要用于拟合非线性函数的系数,其处理方法是利用最小二乘法原理,使得函数的均方误差最小。

lsqnonlin()函数基本使用格式:

x = lsqnonlin(fun,x0,lb,ub,options)

x——使用迭代法搜索最优参数,x可以是一个变量,也可以是多个变量

fun——自定义函数,即非线性函数

x0——x变量的迭代初值

lb,ub——x值的上下限制值,即x值的范围设定,也可以是空矩阵【】

options—— 使用optimoptions设置选项,可以参照matlab的使用手册

使用实例:

xdata = [0.9 1.5 13.8 19.8 24.1 28.2 35.2 60.3 74.6 81.3];ydata = [455.2 428.6 124.1 67.3 43.2 28.1 13.1 -0.4 -1.3 -1.5];

fun = @(x)x(1)*exp(x(2)*xdata)-ydata;

x0 = [100,-1];options = optimoptions(@lsqnonlin,'Algorithm','trust-region-reflective');x = lsqnonlin(fun,x0,[],[],options)运行结果

x =  498.8309   -0.1013    %即x1=498.8309,x2=-0.1013




查看完整回答
反对 回复 2019-03-16
?
万千封印

按照课本上的说法,isqnonlin主要用于求解非线性最小二乘(曲线拟合)问题。最一般的调用方法:

[x,norm,res,ef,out,lam,jac]=isqnonlin(@F,x0,v1,v2,opt,P1,P2,...)

左边是输出列表,右边是输入列表。

输出列表中参数的含义是:

x:目标函数F中的待定参数

norm:误差的平方

res:误差的向量

ef:程序停止运行的原因

out:一个结构变量,包含程序运行或停止时的一些信息

lam:上下界所对应的拉格朗日乘子

jac:结果(x点)处的雅可比矩阵

输入列表中参数的含义:

F:调用的函数

x0:迭代初值或有根区间

v1等:课本上没说我也不知道,一般写作[],意思是使用缺省值(默认值)

opt控制程序运行的参数,一般写作[],意思也是使用缺省值(默认值)

P1等:传递给F的参数(有需要的话)

以上就是isqnonlin的调用方法,最后再提醒大家,并不需要把所有的输入输出都写出来,只需要写出自己需要的就行。

举个例子(比如只想要x):

函数

function h=aabb(x)

h(1)=x(2)-x(1)^2;

h(2)=1-x(1);

命令行

x0=[2,2];

[x]=lsqnonlin(@aabb,x0)

结果为

1 .000   1.000

以上~



查看完整回答
反对 回复 2019-03-16

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信