matlab的lsqnonlin函数怎么用

2025-06-21 21:47:45
推荐回答(1个)
回答1:

按照课本上的说法,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

以上~