关于用MATLAB优化函数fmincon进行约束优化编程的问题?
已知数据和近似函数:x=[0185472144225360];y=[0-123.76-293.35-233.774.58114.59119.18];y=k*theta+a...
已知数据和近似函数:x=[0 18 54 72 144 225 360];
y=[0 -123.76 -293.35 -233.77 4.58 114.59 119.18];
y=k*theta+a0+a1*cos(w*theta)+b1*sin(w*theta)+a2*cos(2*w*theta)+b2*sin(2*w*theta)+a3*cos(3*w*theta)+b3*sin(3*w*theta)+a4*cos(4*w*theta)+b4*sin(4*w*theta)+a5*cos(5*w*theta)+b5*sin(5*w*theta)+a6*cos(6*w*theta)+b6*sin(6*w*theta)。
用最小二乘法拟合,用fmincon函数进行优化。目标函数是x取0和360时,近似函数的一次导数、二次导数、三次导数都相等。请问这边的目标函数怎么编程呢。我看fmincon函数的等式约束是Aeq*X=Beq,我这边的目标函数感觉不符合这样的形式。请大佬指教。 展开
y=[0 -123.76 -293.35 -233.77 4.58 114.59 119.18];
y=k*theta+a0+a1*cos(w*theta)+b1*sin(w*theta)+a2*cos(2*w*theta)+b2*sin(2*w*theta)+a3*cos(3*w*theta)+b3*sin(3*w*theta)+a4*cos(4*w*theta)+b4*sin(4*w*theta)+a5*cos(5*w*theta)+b5*sin(5*w*theta)+a6*cos(6*w*theta)+b6*sin(6*w*theta)。
用最小二乘法拟合,用fmincon函数进行优化。目标函数是x取0和360时,近似函数的一次导数、二次导数、三次导数都相等。请问这边的目标函数怎么编程呢。我看fmincon函数的等式约束是Aeq*X=Beq,我这边的目标函数感觉不符合这样的形式。请大佬指教。 展开
1个回答
展开全部
题主的问题可以分成两个部分来求解。
第一部分,利用已知数据。用最小二乘法拟合其系数,即
k、a0、a1、w、b1、a2、b2、a3、b3、a4、b4、a5、b5、a6*、b6
求解步骤:
1、将数值分别赋值给x、y
2、初定系数的初值
3、利用 nlinfit函数,求出系数
第二部分,才是求其极值
求解步骤:
1、创建目标函数,即
y=k*theta+a0+a1*cos(w*theta)+b1*sin(w*theta)+a2*cos(2*w*theta)+b2*sin(2*w*theta)+a3*cos(3*w*theta)+b3*sin(3*w*theta)+a4*cos(4*w*theta)+b4*sin(4*w*theta)+a5*cos(5*w*theta)+b5*sin(5*w*theta)+a6*cos(6*w*theta)+b6*sin(6*w*theta)
2、创建约束条件函数,即
Dy=diff(y,1) %一阶导数
D2y=diff(y,2) %二阶导数
D3y=diff(y,3) %三n阶导数
ceq(1)=Dy-D2y %等式条件
ceq(2)=Dy-D3y %等式条件
c=[] %不等式条件
3、然后,利用fmincon函数,求出目标值为最小的theta值
第一部分,利用已知数据。用最小二乘法拟合其系数,即
k、a0、a1、w、b1、a2、b2、a3、b3、a4、b4、a5、b5、a6*、b6
求解步骤:
1、将数值分别赋值给x、y
2、初定系数的初值
3、利用 nlinfit函数,求出系数
第二部分,才是求其极值
求解步骤:
1、创建目标函数,即
y=k*theta+a0+a1*cos(w*theta)+b1*sin(w*theta)+a2*cos(2*w*theta)+b2*sin(2*w*theta)+a3*cos(3*w*theta)+b3*sin(3*w*theta)+a4*cos(4*w*theta)+b4*sin(4*w*theta)+a5*cos(5*w*theta)+b5*sin(5*w*theta)+a6*cos(6*w*theta)+b6*sin(6*w*theta)
2、创建约束条件函数,即
Dy=diff(y,1) %一阶导数
D2y=diff(y,2) %二阶导数
D3y=diff(y,3) %三n阶导数
ceq(1)=Dy-D2y %等式条件
ceq(2)=Dy-D3y %等式条件
c=[] %不等式条件
3、然后,利用fmincon函数,求出目标值为最小的theta值
追问
大佬您好,是这样的,我是已知七个点的坐标,然后想用y=k*x+a0+a1*cos(w*x)+b1*sin(w*x)+a2*cos(2*w*x)+b2*sin(2*w*x)+a3*cos(3*w*x)+b3*sin(3*w*x)+a4*cos(4*w*x)+b4*sin(4*w*x)+a5*cos(5*w*x)+b5*sin(5*w*x)+a6*cos(6*w*x)+b6*sin(6*w*x),这个函数来进行拟合,目标函数就是七个点的函数值和真实的y值差的平方相加最小,约束条件就是一阶二阶三阶导数相等。不知道我这个想法有没有问题。用fmincon函数可以实现嘛?
追答
七个点的函数值,从统计分析的角度来说是不够的(至少十个以上)。就是做出来了也是不真实的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询