求过三点抛物线的解析式

2017-08-16  本文已影响0人  不听话好孩子

复习一波数学

public class JSZCFC {

    /**
     * @param args
     * 求过三点的抛物线的解析式y=ax*x+bx*x+c
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println(getA(new Mybig(0.5d,0.5d), new Mybig(0d, 1d), new Mybig(1d, 1d)));

    }
    
    /**
     * x1!=0 x2!=0  x1!=x2
     * @param i
     * @param j
     * @param k
     * @return
     */
public static BigDecimal[] getA(Mybig i,Mybig j,Mybig k){
BigDecimal a=     (
            i.y.multiply(k.x).subtract(k.y.multiply(i.x))
            .add(i.y.multiply(j.x))
            .subtract(j.y.multiply(i.x))
            )
            .divide(
            ((i.x.pow(2).multiply(j.x))
            .add((i.x.pow(2).multiply(k.x)))
            .subtract((j.x.pow(2).multiply(i.x)))
            .subtract((k.x.pow(2).multiply(i.x))))
            );
BigDecimal c= (a.multiply((j.x.pow(2)).multiply(i.x)
            .subtract((a.multiply((i.x.pow(2))).multiply(j.x))))
            .add((i.y.multiply(j.x)))
            .subtract((j.y.multiply(i.x))))
            .divide((
                    j.x.subtract(i.x)));
    
BigDecimal b=((i.y.subtract(c).subtract((a.multiply((i.x.pow(2)))))))
            .divide(i.x);
    return new BigDecimal[]{a,b,c};
    
    
}


}
class Mybig{
     BigDecimal x,y;
    public Mybig(Double x,Double y){
        this.x=new BigDecimal(x);
        this.y=new BigDecimal(y);
    }
}
上一篇下一篇

猜你喜欢

热点阅读