hdu1071(抛物线弓形面积阿基米德算法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1071
题意:给出抛物线的顶点和它与一直线的两交点,求他们围成的面积;
思路:
可以直接求出他们的方程式,再积分,这个方法就不说了;
偶然看见另一个解法,觉得蛮有意思的,就记一下好了。。
抛物线与直线为成的面积等于直线的平行线与抛物线的切点和该直线与抛物线两交点组成的三角形面积 s*4/3;(抛物线弓形面积公式等于:以割线为底,以平行于底的切线的切点为顶点的内接三角形的4/3,即:抛物线弓形面积=S+1/4*S+1/16*S+1/64*S+……=4/3*S; 本渣渣百度的,抛物线弓形面积阿基米德算法,自己不会证明);
设 y=a*x*x+b*x+c;代入已知的三个点坐标,用行列式解三元三次方程组解出a, b, c;
直线的斜率可以通过p2, p3两点求出, k=(y3-y2)/(x3-x2);
对y=a*x*x+b*x+c求导得:y*=2*a*x+b=k;
可以解出x,反代入抛物线方程式中求出y;
现在我们已经求出了切点p(x, y),接下来还需要求一下三角形面积pp2p3面积s;
已知三点求三角形面积我们可以通过构造梯形再减去两个直角三角形面积得到;
推导初的面积公式为:s=(x*y2+y*x3+x2*y3-x*y3-y*x2-y2*x3)/2;
代码:
#include <iostream>
#include <stdio.h>
#include <math.h>
#define PI 3.1415926
#define INF 10000
using namespace std; double matrix(int n, double a[][]){ //***3*3行列式计算
double sum1=a[][]*a[][]*a[][]+a[][]*a[][]*a[][]+a[][]*a[][]*a[][];
double sum2=a[][]*a[][]*a[][]+a[][]*a[][]*a[][]+a[][]*a[][]*a[][];
return sum1-sum2;
} int main(void){
int t;
scanf("%d", &t);
while(t--){
double x1, y1, x2, y2, x3, y3;
scanf("%lf%lf%lf%lf%lf%lf", &x1, &y1, &x2, &y2, &x3, &y3);
double matrix1[][]={y1, x1, , y2, x2, , y3, x3, };
double matrix2[][]={x1*x1, y1, , x2*x2, y2, , x3*x3, y3, };
double matrix3[][]={x1*x1, x1, y1, x2*x2, x2, y2, x3*x3, x3, y3};
double matrix4[][]={x1*x1, x1, , x2*x2, x2, , x3*x3, x3, };
double a=matrix(, matrix1);
double b=matrix(, matrix2);
double c=matrix(, matrix3);
double d=matrix(, matrix4);
a/=d;
b/=d;
c/=d;
double k=(y3-y2)/(x3-x2);
double x=(k-b)/(*a);
double y=a*x*x+b*x+c;
double cnt=(x*y2+y*x3+x2*y3-x*y3-y*x2-y2*x3)/;
printf("%.2lf\n", cnt*/);
}
return ;
}
hdu1071(抛物线弓形面积阿基米德算法)的更多相关文章
- 阿基米德项目ALS矩阵分解算法应用案例
转自:https://github.com/ceys/jdml/wiki/ALS 阿基米德项目ALS矩阵分解算法应用案例 编写人:ceys/youyis 最后更新时间:2014.5.12 一.算法描述 ...
- MT【237】阿基米德三角形的一些常见性质
阿基米德三角形的常见性质:抛物线:$x^2=2py,AB$为抛物线的弦,$AQ,BQ$为切线,记$Q(x_0,y_0)$则$1)k_{QA}*k_{QB}=\dfrac{p}{2x_0}$$2)k_{ ...
- HFSS——平面正弦加载阿基米德螺旋线模型设计
这学期开始进入HFSS的学习,这是软件应该是电磁相关专业必须掌握的软件之一.前几天图老师发布第一个模型设计任务,是关于平面正弦加载阿基米德螺旋线,拿到具体要求后,就去网上找资料,发现有关HFSS的资料 ...
- JavaScript图形实例:阿基米德螺线
1.阿基米德螺线 阿基米德螺线亦称“等速螺线”.当一点P沿动射线OP以等速率运动的同时,该射线又以等角速度绕点O旋转,点P的轨迹称为“阿基米德螺线”. 阿基米德螺线的笛卡尔坐标方程式为: r=10*( ...
- HDU 1071 The area(求三个点确定的抛物线的面积,其中一个点是顶点)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1071 The area Time Limit: 2000/1000 MS (Java/Others) ...
- hdu1071(定积分求面积)
太弱了,写了一下午,高中基础太差的孩子伤不起... 记住抛物线是关于x轴对称的. 而且抛物线的方程可以是: y=k(x-h)+c //其中(h,c)为顶点坐标 The area Time Limit ...
- 探索性思维——How to Solve It
我觉得这篇文章和什么都能扯上点关系,比如编程. 很多人已经讨论过数学与编程的关系了,这里不想过多探讨,只是简单提一下:有些人把数学贬低地一文不值,认为做一般的应用软件用不到数学:而有些人则把数学拔高到 ...
- [No0000158]思维模型1-20
[No0000158]思维模型1-20.7z 思维模型No1|第一性原理 第一原理(又叫第一性原理)是个今年很火的概念,最早由亚里士多德提出,它相当于数学中的公理,即在每一个系统的探索中,存在第一原理 ...
- 人教版高中数学(A版)
必修1 (已看) 第一章 集合与函数概念 1.1 集合 1.2 函数及其表示 1.3 函数的基本性质 第二章 基本初等函数(1) 2.1 指数函数 2.2 对数函数 2.3 幂函数 第三章 函数的应用 ...
随机推荐
- springMVC之配置
1.项目结构 2.所需jar包 3.web.xml文件 <?xml version="1.0" encoding="UTF-8"?> <web ...
- php正则
PHP代码 $str = preg_replace("/(<a.*?>)(.*?)(<\/a>)/", '\1<span class="li ...
- eclipse emacs
eclipse emacs 插件 http://www.mulgasoft.com/emacsplus eclipse字体设置: 一.把字体设置为Courier New 操作步骤:打开Elcipse ...
- Android工程文件下assets文件夹与res文件夹的区别
1.assets:不会在R.java文件下生成相应的标记,assets文件夹可以自己创建文件夹,必须使用AssetsManager类进行访问,存放到这里的资源在运行打包的时候都会打入程序安装包中, 2 ...
- Moment.js 超棒Javascript日期处理类库
Moment.js 不容错过的超棒Javascript日期处理类库 主要特性: 3.2kb超轻量级 独立类库,意味这你不需要倒入一堆js 日期处理支持UNIX 时间戳,String,指定格式的Date ...
- Effective Java 读书笔记之七 通用程序设计
一.将局部变量的作用域最小化 1.在第一次使用变量的地方声明 2.几乎每个变量的声明都应该包含一个初始化表达式:try-catch语句是一个例外 3.使方法小而集中是一个好的策略 二.for-each ...
- Linux DDoS 木马再度来袭
导读 Linux用户又有一个木马需要苦恼了,就像以往一样,这些黑客大多部署在被劫持的Linux系统上,并在接受到命令后发起DDoS攻击. 发现这件事的Dr.Web的安全研究人员说:“木马似乎是通过破壳 ...
- UDS帧传输
说明 在UDS协议中,其中有一点我视作为基础,即帧传输.也即是数据传输这一块,在UDS的帧传输中,分为4种: SF单帧 FF第一帧 CF连续帧 FC流控制帧 首先,我们抛开以上的东西,假设一个销售商( ...
- Android 创建内容提供器(ContentResolver)
如果想实现跨程序共享数据的功能,官方推荐的方式就是使用内容提供器,可以通过新建一个类去继承 ContentResolver 的方式来创建一个自己的内容提供器. ContentProvider 类中有六 ...
- Hello 2016
Hello 2016 I am really happy to work and study here. Nothing is better than be oneself ! It's import ...