计算抛物线方程

来源:互联网 发布:中序遍历的非递归算法 编辑:程序博客网 时间:2024/04/25 23:42

http://community.csdn.net/Expert/topic/3756/3756475.xml?temp=.3623011
已知抛物线上的2点的坐标(x1, y1), (x2, y2)(且2点分别在抛物线的顶点的两测),以及其顶点的纵坐标k,且抛物线开口朝上,即a>0。

求出抛物线的一般式:y = a*X^2 + b*x + c 中的 a,b,c 的值,以及顶点的横坐标h。



这个问题可以这样解决
假定方程的形式为
    y = a(x-b)^2 + k
这样就保证最小点在k, x=b的时候数值最小
   y1-k = a ( x1-b)^2
   y2-k = a ( x2-b}^2
根据楼主的假设
显然 y1和y2都是大于k的,否则就不可能有答案
     这就意味着 sqrt ((y1-k)/(y2-k)) 必然是有效数据

开根号后做除法,得到两个方程
  sqrt((y1-k)/(y2-k)) = x1-b / x2-b
  sqrt((y1-k)/(y2-k)) = -(x1-b / x2-b)
只有后者才是有效的,因为正确答案b是位于x1和x2之间的
于是可以求解b了, 然后带回就求解出来a
然后 把 y = a(x-b)^2 + k
展开成为 y = Ax^2 + Bx + C
的模式,从而获得了A,B,C的数值了

完整的计算就是

m = sqrt( (y1-k) / (y2-k) )
b = (x1+x2*m)/(m+1)
a = (y1-k) /((x1-b)*(x1-b))

A = a;
B = 2*a*b
C = k+b*b
顶点坐标(b,k)
抛物线方程 y = A*x^2 + B*x + C

原创粉丝点击