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

题目:现在有一条二次曲线,直到这条二次曲线的顶点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;
}

 

posted @ 2015-06-09 20:16  我喜欢旅行  阅读(2227)  评论(0编辑  收藏  举报