几何数学之曲线相交的面积

题目描述

求函数 y 2 = 2 A x y^2=2Ax y2=2Ax y = B x + C y=Bx+C y=Bx+C 两个曲线所围出的面积。如果没有所围面积,则输出0

输入描述
第一行一个数 n n n,表示测试用例的组数
接下来 n n n 行,每行输入三个数,分别是 A B C
每个用例输出一个数,表示面积,相对误差在 1 0 − 4 10^{−4} 104都算对

输入
1
1 1 -6
输出
31.2481110540
  • 先判断曲线是否存在交点,没有交点,输出0.
  • 第一个函数是 y y y的二次函数,看起来不方便,把 x x x y y y交换,然后联立方程求解,注意第二个方程也要交换 x x x y y y,可得 y = x 2 2 A = x − C B y=\frac{x^2}{2A}=\frac{x-C}{B} y=2Ax2=BxC,可以得到一个二次函数 B x 2 − 2 A x + 2 A C = 0 Bx^2 -2Ax+2AC=0 Bx22Ax+2AC=0,最后化简,根据判别式( b 2 − 4 a c b^2-4ac b24ac)是否>0判断是否存在交点,如果有交点,接下来求面积
  • 求面积直接手动求解定积分,求出来是个三次函数,带入上下限进行计算

具体步骤

二次函数为 B x 2 − 2 A x + 2 A C = 0 Bx^2 -2Ax+2AC=0 Bx22Ax+2AC=0,注意此处相当于把 y y y 扩大了 2 A B 2AB 2AB倍 ( y = x 2 2 A = x − C B y=\frac{x^2}{2A}=\frac{x-C}{B} y=2Ax2=BxC),最后求积分的时候要除以放大倍数.

判别式为:  b 2 − 4 a c = 4 A 2 − 8 A B C b^2-4ac=\sqrt{4A^2-8ABC} b24ac4A28ABC

交点为: x 1 = − b − d e l t a 2 a x_1=\frac{-b-delta}{2a} x1=2abdelta x 2 = − b + d e l t a 2 a x_2=\frac{-b+delta}{2a} x2=2ab+delta

带入可得  x 1 = 2 A − d e l t a 2 B x_1=\frac{2A-delta}{2B} x1=2B2Adelta x 2 = 2 A + d e l t a 2 B x_2=\frac{2A+delta}{2B} x2=2B2A+delta

求面积,定积分表达式为  1 3 B x 3 − A x 2 + 2 A C x ∣ x 1 x 2 \frac{1}{3}Bx^3 -Ax^2+2ACx | ^{x_2}_{x_1} 31Bx3Ax2+2ACxx1x2,带入上下限 x 1 x_1 x1 x 2 x_2 x2,最后记得除以之前的放大倍数 2 A B 2AB 2AB

n = int(input())
for i in range(n):
    A, B, C = [int(i) for i in input().split()]
    delta = 4 * A ** 2 - 8 * A * B * C
    if delta <= 0:
        print(0)
    else:
        x1 = 0.5 * (2 * A / B) - delta ** 0.5 / B
        x2 = 0.5 * (2 * A / B) + delta ** 0.5 / B
        ans = abs((x1 ** 3 * B / 3 - A * x1 ** 2 + 2 * A * C * x1
                   - (x2 ** 3 * B / 3 - A * x2 ** 2 + 2 * A * C * x2))
                  / (2 * A * B))
        print(ans)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值