matlab的lsqnonlin函数怎么用

如题所述

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

以上~

温馨提示:内容为网友见解,仅供参考
第1个回答  2017-01-15
N = 45; % 每个变量的数据的个数 H = rand(N,1); % 将H整理为列向量,在此输入H的值 t = rand(N,1); % 将t整理为列向量,在此输入t的值 y = rand(N,1); % 将y整理为列向量,在此输入y的值 YY = @(a) a(1)+a(2).*H+a(3).*H.*H+a(4).*H.*H.*H+a(5)...本回答被提问者采纳
相似回答