数学知识

   回忆一下初中数学,才发现自己并学到的东西很有限,初中的很多东西只是简单的涉及。最近又回到了初中的知识上,总结了一些在数学上自己发现和简单推理的东西。

 

一、勾股定理

      很多人都知道勾股定理,也能够顺利的证明出来,毕竟课本上提供了很多用四边形证明的方法,不过如果给出一个圆和一个直角三角形,能证明吗?答案是肯定的,这个相信很多人在初中的时候就已经发现了(我是在学圆的时候偶然发现的)。

 

      在这个三角形中,我们设圆的半径为r,即EO=DO=FO=r,AC=a,BC=b,AB=c。

      我们都知道r可以用a、b、c表示出来,用面积法可以轻易得出r=ab/(a+b+c);利用圆的切线的性质可以轻易得出r=(a+b-c)/2。

     将这两个式子相等,可以推出a^2+b^2=c^2。并且在证明过程中没有用到与勾股定理有关的推论或者它本身,所以我们就可以把这个当做是一个正确的证明方法了。

 

二、抛物线

   (1)、  不知道有多少人和我一样,在初中的学习中一直没有弄明白抛物线的定义,便开始使用了。到了高中,还是新华词典告诉我什么是抛物线:到定点和定直线的距离相等的点的集合。

     对于一条对称轴垂直于x轴的抛物线,我们可以进行一些下面简单的推论。

    我们先从反面进行验算:

         再把情况放的特殊点,设抛物线解析式y=ax^2+c(a<>0),那么我们就可以把定直线看做x轴,定点坐标为       M(0,2c)。设抛物线上的点坐标为P(t,at^2+c),s1为点P到x轴的距离,s2为线段PM的长度。s1=at^2+c,

s2=(t^2+(2c-at^2-c)^2)^(1/2),中间的化简过程就不在写出了。s1^2=a^2t^4+c^2+2act^2,s2^2=(1-2ac)t^2+a^2t^4+c^2,比较s1和s2我们可以看到(1-2ac)t^2=2act^2   ∴c=1/(4a) 

         所以y=ax^2+(1/(4a)),所以定点的坐标就是(0,1/(2a)),定直线就是x轴。

         把这条抛物线平移,就可以的得到任意一条抛物线y=ax^2+bx+c(a<>0)所对应的定点(-b/(2a),(4ac-b^2+1)/(4a)),定直线的解析式为y=((4ac-b^2-1)/(4a))。

         

     我们回到原来的定义,对于一个定点(p,q)和定直线y=t(在这里,我们为了简化,就只看定直线平行于x轴的情况),我们可以的到抛物线的解析式为y=(1/(2q-2t))x^2+(p/(t-q))x+((p^2+q^2-t^2)/(2q-2t))。

     这样,对于对称轴垂直于y轴的情况也可以将x、y互换得到,当然也可以将坐标轴中y轴与抛物线的对称轴平行建立,然后进行一些旋转就可以了,虽然y不再是x的函数,但是x、y之间的关系也可以表示出来。

 

      对于一条抛物线,经过焦点(也就是之前所说的定点)的光线(数学中的直线)经抛物线反射后一定是与对称轴平行的。

   (2)、应用:最后,我们来看一个神奇的物理学上抛物线的应用。

              我们都知道,自行车灯用互相垂直的两个平面镜,就能将入射光平行射出。对于一些车灯,它们的灯罩显然不是两个互相垂直的平面镜这么简单,有的是一个抛物线绕着对称轴旋转而成的空间图形,我们这里利用以上的性质就可以发现,这样的灯光散射的少,也就能使光更加的明亮集中。

              证明如下:在抛物线y=ax^2+(1/(4a))(a<>0)中,取点P(t,at^2+(1/(4a))),我们从这点向x轴做垂直,垂足为C,抛物线焦点M(0,1/(2a)),P点处抛物线的切线与y轴的交点为D,则这条切线的解析式y=2atx+1/(4a)-at^2(这条直线解析式的k值就是抛物线在P点处的斜率),那么D点坐标就是(0,1/(4a)-at^2),MD=MP=PC,且MD∥PC,所以四边形MDCP就是一个菱形,从而过M点的反射时法线的平行线(也就是过M点的切线的垂线)平分角DMP,从而反射光线和入射光线之间的夹角的大小就等于角DMP,从而证明了反射光线与y轴平行。

 

 三、pick定理

(1)内容:对于一个顶点都在格点上的多边形,I表示多边形内的格点个数,B表示多边形边上的格点个数,那么这个多边形的面积s=I+B/2-1。

(2)证明:(我们的证明分为两部分)

                 ①我们首先证明在该定理成立的条件下,合并两个简单多边形是否成立。设两个多边形为a、b,边界上有格点c。

                     Sa=Ia+Ba/2-1,Sb=Ib+Bb/2-1。

                     Sab=Sa+Sb=Ia+Ib+(Ba+Bb)/2-2;(上两式相加即可)

                     Sab=(Ia+Ib+(c-2))+(Ba+Bb-2*(c-2)-2)/2-1=Ia+Ib+(Ba+Bb)/2-2;(套用该定理)

                   对多边形进行分割的证明也是成立的。

                ②严格来说,这里才是该定理的证明部分:我们先证明边平行于轴的矩形、再证明对角线分开的三角形、再推广到普通的三角形。

                          对于边平行于轴的矩形:设边上的格点为m、n个。S=(m-1)(n-1)=mn-n-m+1=(m-2)(n-2)+(2(m+n)-4)/2-1,最后一个式子正好就是pick定理的内 容,因此该部分证毕;

                          对于对角线分开的三角形:设对角线上有格点c个。S=(m-1)(n-1)/2=mn/2-n/2-m/2+1/2=((m-2)(n-2)-(c-2))/2+(m+n+c-3)/2-1,同上,该部分证毕。

                          对于普通的三角形,我们可以用前两种情况分割得到,根据①中的证明,我们可以进行这样的分割和合并。

                    有了普通三角形的成立,我们就可以推广到普通多边形了(每一个多边形都可以划分为多个三角形)。

(3)应用:①在平面直角坐标系中,我们作直线x+y=q(q是质数),这条直线穿过第一象限的q-1个格点,连接这q-1个格点和原点,得到q-2个三角形,这些三角形内的格点是一样的。这么神奇的事实怎么证明呢?这些三角形的面积S相等,同时因为x+y=q,所以x,y互质(如果不互质就有公约数d(d>1)),q就不是素数了),所以边上都只有三个顶点,根据pick定理,就有内部的点数相等了。

                ②对于一个n*m的矩形,最多能覆盖多少个格点(包括边上的)。B<=2(m+n),I+B=I+B/2-1+B/2+1<=n*m+2(m+n)/2+1=(m+1)(n+1),所以最多就是矩形边和轴平行时,覆盖(m+1)(n+1)。

                   仅考虑边上的点的话,很明显有0<=B<=2(m+n)。

                   如果不包括边上的,0=>-B>=-2(m+n),I=I+B/2-1-B/2+1>=n*m-(m+n)+1=(m-1)*(n-1),且<=mn+1。所以当多边形与轴平行的时候,内部的点最少,(m-1)(n-1);当边界上没有点的时候(平行的左右上下抖动一下),内部的点最多,为mn+1个。

                ③下面介绍一个非常神奇的定理证明:Farey数列中,前一项分母*后一项分子-后一项分母*前一项分子=1。

                   首先,我们了解一下什么叫Farey数列。我们将0~1中分母不大于k的最简分数从小到大列在一起,记做F_k。

                   如F_5:0/1,1/5,1/4, 1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5, 1/1

                   下面我们考虑用pick定理证明这个定理。

                   

                    我们把这些分数放到平面直角坐标系中,如m/n记做(n,m)。我们考虑相邻两个分数对应的点,这两个点与原点的连线上一定没有别的点(因为最简分数的要求),那么这个阴影部分三角形的面积S=0+3/2-1=1/2,设这两个点分别是(n,m)(q,p)(沿斜率增大方向),根据叉积=np-mq=2S可以知道,np-mq=1,正好就是我们的定理。

(以上应用内容引用自http://www.matrix67.com/blog/archives/2199)

(4)既然说到了格点上的问题,我们来点有趣的小实验。

       在一张白纸上给出面积小于1的一块图形(可能不规则,十分不规则),能否做出一些格点,使这个图形不经过格点。

       不防做一些图形感受一下。其实做法很简单:我们随便做一些格,把他们沿格线撕开,叠到一起,把纸当做透明的,从上面看下去,一定会有一点没有图形(因为总面积小于1),所以我们可以用个针从这一点扎下去,然后将图形复原,以这些针孔为格点做一些格,就会发现这个图形并没有经过格点。

 (5)和oi有点联系:(a,b)(m,n)两点连线段上整点数有gcd(m-a,n-b)+1(m>=a,n>=b)。证明方法如下:如果(m-a,n-b)=1,那么就是0个;如果(m-a,n-b)!=1就把它缩小gcd(m-a,n-b)到互质,这时候线段上只有两个点,然后相应的放大gcd(m-a,n-b),就有如上的个数了。

     练习:poj2954&&poj1265

#include<iostream>
#include<cstdio>
#include<cmath>
#define maxnode 3
using namespace std;
struct use{
    int xi,yi;
}p[5]={0};
int cross(int i)
{
    return ((p[i].xi-p[1].xi)*(p[i+1].yi-p[1].yi)-(p[i].yi-p[1].yi)*(p[i+1].xi-p[1].xi));
}
double area()
{
    int i,j,aa;
    aa=abs((double)cross(2));
    return (double)aa*1.0/2;
}
int gcd(int a,int b)
{
    if (!b) return a;
    else return gcd(b,a%b);
}
int main()
{
    int i,j;
    double s,b;
    while(scanf("%d%d%d%d%d%d",&p[1].xi,&p[1].yi,&p[2].xi,&p[2].yi,&p[3].xi,&p[3].yi)==6)
    {
        j=0;
        for (i=1;i<=3;++i)
        {
            if (p[i].xi==0) ++j;
            if (p[i].yi==0) ++j;
        }
        if (j==6) break;
        s=area();
        b=gcd((int)abs((double)p[1].xi-p[2].xi),(int)abs((double)p[1].yi-p[2].yi))+
          gcd((int)abs((double)p[2].xi-p[3].xi),(int)abs((double)p[2].yi-p[3].yi))+
          gcd((int)abs((double)p[1].xi-p[3].xi),(int)abs((double)p[1].yi-p[3].yi));
        i=(int)(s+1-b*1.0/2);
        printf("%d\n",i);
    }
}
poj2954
#include<iostream>
#include<cstdio>
#include<cmath>
#define maxnode 500
using namespace std;
struct use{
    int xi,yi;
}p[maxnode]={0};
int corss(int i)
{
    return ((p[i].xi-p[1].xi)*(p[i+1].yi-p[1].yi)-(p[i].yi-p[1].yi)*(p[i+1].xi-p[1].xi));
}
double area(int n)
{
    int i,a=0;
    for (i=2;i<n;++i)
        a+=corss(i);
    return a*1.0/2.0;
}
int gcd(int a,int b)
{
    if (!b) return a;
    else return gcd(b,a%b);
}
int main()
{
    int t,n,i,j,I,B;
    double S;
    scanf("%d",&t);
    for (j=1;j<=t;++j)
    {
        S=0.0;B=I=0;
        scanf("%d",&n);
        for (i=1;i<=n;++i)
        {
            scanf("%d%d",&p[i].xi,&p[i].yi);
            B+=gcd((int)abs((double)p[i].xi),(int)abs((double)p[i].yi));
            if (i>1)
            {
                p[i].xi+=p[i-1].xi;p[i].yi+=p[i-1].yi;
            }
        }
        S=area(n);if (S<0) S=-S;
        I=(int)(S-B*1.0/2+1);
        printf("Scenario #%d:\n%d %d %0.1f\n\n",j,I,B,S);
    }
}
poj1265

 

posted @ 2014-12-28 19:49  Rivendell  阅读(549)  评论(0编辑  收藏  举报