早教吧 育儿知识 作业答案 考试题库 百科 知识分享

已知五点求曲线极值给N个点比如5个点,要求这5个点所成曲线的极值:曲线是二次曲线y=ax^2+bx+c原始数据是(x1,y1)(x2,y2)...(x5,y5)要求极值(微分dy/dx=0)处(x,y)的坐标.最好提供c++(或mfc)源码,c源

题目详情
已知五点求曲线极值
给N个点比如5个点,要求这5个点所成曲线的极值:
曲线是二次曲线 y = ax^2 + bx + c
原始数据是(x1,y1)(x2,y2)...(x5,y5)
要求极值(微分dy/dx=0)处(x,y)的坐标.
最好提供c++(或mfc)源码,c源码也可以.
▼优质解答
答案和解析
任意一点对应抛物线上的点的纵坐标与该点的纵坐标只差的平方为:
d=(ax[k]^2+bx[k]+c-y[k])^2([]表示下标,下同)
记z=∑(ax[k]^2+bx[k]+c-y[k])^2
dz/da=2∑[(ax[k]^2+bx[k]+c-y[k])*x[k]^2]
dz/db=2∑[(ax[k]^2+bx[k]+c-y[k])*x[k]]
dz/dc=2∑(ax[k]^2+bx[k]+c-y[k])
分别令dz/da=0,dz/db=0,dz/dc=0可以得到:
a∑x[k]^4+b∑x[k]^3+c∑x[k]^2=∑y[k]*x[k]^2
a∑x[k]^3+b∑x[k]^2+c∑x[k]=∑y[k]*x[k]
a∑x[k]^2+b∑x[k]+nc=∑y[k]
只要编程或手工计算出∑x[k]^4,∑x[k]^3,∑x[k]^2,∑x[k],∑y[k]*x[k]^2,
∑y[k]*x[k],∑y[k],然后代回方程组即可解出a,b,c
抛物线的顶点即为所求的极值点.