二次函数积分面积【数学】

题目:现在有一条二次曲线,直到这条二次曲线的顶点P,还知道这条曲线上的一点B,B点相对于对称轴的对称点是A点。

让你求二次曲线与AB连线围成的面积。【简单积分】【韦达定理:x1+x2=-b/a; x1*x2=c/a 】【平移】

二次函数积分面积【数学】

如上图所示:

代码:

#include <stdio.h>

#include <string.h>

#include <math.h>

#include <iostream>

#include <string>

#include <algorithm>

#define LL long long int



using namespace std;



struct point

{

    double x, y;

};



int main()

{

    point p, b; //p点是顶点坐标 b点是线段上一点

    point a;

    while(~scanf("%lf %lf %lf %lf", &p.x, &p.y, &b.x, &b.y))

    {

        a.x=-1.0*b.x;

        a.y=b.y; //对称点



        //根据积分的特性 在任意位置进行的积分 不一定等于面积

        //

        double dd, ff;

        dd=p.x-0.0; // dd<0 在y轴左边 否则右边

        ff=b.y-0.0; // ff<0 在x轴下边 否则上边

        //修改点坐标

        if(dd<=0.0)

        {

            p.x=0.0;

            a.x+=dd; b.x+=dd;

        }else{

            p.x=0.0;

            a.x-=dd; b.x-=dd;

        }



        if(ff<=0.0)

        {

            a.y=0.0; b.y=0.0;

            p.y+=ff;

        }else{

            a.y=0.0; b.y=0.0;

            p.y-=ff;

        }//平移坐标



        double A, B, C; //方程的参数

        A = p.y/(-1.0*b.x*b.x);

        B = 0.0;

        C = p.y;

        double ans=0.0;

        ans = (1.0/3.0*A*b.x*b.x*b.x + C*b.x) - 0;

        ans = ans*2.0;

        printf("%lf\n", ans );

    }

    return 0;

}

 

你可能感兴趣的:(函数)