matlab中lsqnonlin函数怎么使用?
3个回答
展开全部
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
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
展开全部
叠代的初始值.y=U-x(1)*I.^x(2)
就是这里x(1),x(2)的初始值.
x0
=
[0.3
0.4]
%可以这么设定,大小自己可以修改
就是这里x(1),x(2)的初始值.
x0
=
[0.3
0.4]
%可以这么设定,大小自己可以修改
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在默认option情况下,如果你知道结果,那么选择与结果相差不大的.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询