精华内容
下载资源
问答
  • 反演变换

    千次阅读 2017-10-04 22:17:12
    反演变换基本概念 定义 : 对于平面上的一点 O 和一个非零常数 k ,使得平面上任何一个异于 O 点的 A 与 A’ 存在以下关系 : A O A‘三点共线; OA * OA’ = k ,则这个变换称为平面的一个...

    高中数学竞赛用过这种东西,但是大学一年没碰全忘了 …. emmmm…. 最近感觉大家都在用圆的反演变换 出 计算几何的 题 ,那就 …. 再学一遍吧

    反演变换基本概念

    1. 定义 : 对于平面上的一点 O 和一个非零常数 k ,使得平面上任何一个异于 O 点的 A 与 A’ 存在以下关系 :
      1. A O A‘三点共线;
      2. OA * OA’ = k
        ,则这个变换称为平面的一个反演变换,记做I(O,k).其中,定点O称为 反演中心,常数k称为反演幂,点’ A称为点A的反点.
    2. 若在这种变换下 一个图形 F 变成了图形 F’,则成两个图形互为反形,若反演之后点的位置不发生变化,则称这个点为自反点,如果图形也不发生变换的话则称这个图形为自反图形。
    3. 设两条曲线u,v、相交于点A,l、m分别是曲线u,v、在点A处的切线(如果存在),则l与m的交角称为曲线u,v、在点A处的交角;如果两切线重合,则曲线u,v、在点A处的交角为0.特别地,如果两圆交于点,那么过点作两圆的切线,则切线的交角称为两圆的交角.当两圆的交角为90 时,称为两圆正交;如果直线与圆相交,那么过交点作圆的切线,则切线与直线的交角就是直线与圆的交角.当这个交角为90 时,称为直线与圆正交


    反演的性质 :

    1. 定理1. 在反演变换下,不共线的两对互反点是共圆的四点.
    2. 定理2. 在反演变换I(0,k)下,设AB、两点(均不同于反演中心O)的反点分别为 A’B’ 则有’A’B’ = | k| * |AB| / (OA * OB )
    3. . 定理3. 在反演变换下,过反演中心的直线不变
    4. . 定理4. 在反演变换下,不过反演中心的直线的反形是过反演中心的圆;过反演中心的圆的反形是不过反演中心的直线.

    性质的证明用到的都是基本的三角形相似和最基础的四点共圆 如果想证的快的话,最好知道一些圆幂定理。

    反演一般来说经常用在圆中,因为可以把圆的关系转化到直线的关系上去做,多个圆的时候更能体现出这种优势。

    展开全文
  • 拉普拉斯反演程序,用于数学物理方程等过程中的拉普拉斯反演计算
  • 在《湖北师范学院学报》(自然科学版)2001年第2期中,本人给出了平面上的广义反演变换―拟反演变换的定义,并初步探讨了一些性质。本文在此基础上进一步讨论拟反演变换的一些有关性质。
  • 【计几】反演变换

    2021-10-06 17:48:24
    反演变换适用于题目中存在多个圆/直线之间的相切关系的情况。利用反演变换的性质,在反演空间求解问题,可以大幅简化计算。 具体讲解:- 反演变换-OIwiki 从基本的变换到著名的几何问题 模板来源: 反演变换...

    反演变换

    • 反演变换适用于题目中存在多个圆/直线之间的相切关系的情况。利用反演变换的性质,在反演空间求解问题,可以大幅简化计算。

    具体讲解:- 反演变换-OIwiki

    模板来源:

    题目集:


    关于反演变换的补充:

    1 . 要注意直线过反演点的特殊情况。

    2 . 不过反演中心的直线反演之后内外侧会置换。那么直线和一个相切的圆的反演有两种情况:

    • 直线过反演中心:反演后直线还是过反演中心

    • 直线不过反演中心:如果原本反演中心和圆心在直线的同一侧,反演后两心位于异侧。反之,反演后两心位于同侧


    板子:

    struct circle{
        point o;
        double r;
    };
    point ptp(point a, point p, double r)          // 保证a和p不重合,否则会出现除以零的情况
    {
        point v = a - p;
        double len = r * r / get_dis(p, a);
        return p + norm(v) * len;
    }
    circle ctc(circle c, point p, double r)        // 保证c不过p点
    {
        circle res;
        double t = get_dis(p, c.o);
        double x = r * r / (t - c.r), y = r * r / (t + c.r);
        res.r = (x - y) / 2;
    
        double s = (x + y) / 2;
        res.o = p + norm(c.o - p) * s;
        return res;
    }
    void ctl(circle c, point & a, point & b, point p, double r) // 保证c过p点
    {
        point v = c.o - p;
        double d = r * r / (2 * c.r);
        a = p + norm(v) * d;
        b = a + rotate(a, pi / 2);
    }
    circle ltc(point a, point b, point p, double r)            // 保证l不过点p
    {
        double d = dis_to_line(a, b, p);
        d = r * r / d;
        circle res;
        res.r = d / 2;
    
        point v;
        if(area(a, b, p) > 0) v = rotate(b - a, -pi/2);
        else v = rotate(a - b, -pi/2);
        res.o = p + norm(v) * res.r;
        return res;
    }
    

    【计几】反演变换题集

    展开全文
  • 题目大意:给你一个圆和圆内到圆心距离相等的两点 P Q ,让你在圆上找到一个点 K ,使得这 PK + QK 最小。

    题目大意:

    给你一个圆和圆内到圆心距离相等的两点 P Q ,让你在圆上找到一个点 K ,使得这 PK + QK 最小。

    分析:

    学到一个几何方面的知识,这么好用的东西之前我居然没听说过,叫做反演。就是在OP的延长线上,取A,使得 OAOP=r2 。从而构造出相似三角形。

    未AC代码:

    #include<bits/stdc++.h>
    
    using namespace std;
    
    double r,px,py,qx,qy,ax,ay,bx,by;
    int test;
    
    int main()
    {
        scanf("%d",&test);
        while(test--)
        {
            scanf("%lf%lf%lf%lf%lf",&r,&px,&py,&qx,&qy);
            double op,oq,pq;
            op=sqrt(px*px+py*py);
            oq=op;
            pq=sqrt((px-qx)*(px-qx)+(py-qy)*(py-qy));
            if(op+oq-pq<1e-9)
            {
                double ans=2.0*sqrt(op*op+r*r);
                printf("%.7f\n",ans);
                continue;
            }
            double oa=r*r/op;
            double c=(op*op+oq*oq-pq*pq)/(2.0*op*oq);
            double cc=sqrt((c+1)/2.0);
            //cout<<cc<<endl;
            /*if(cc<=1e-6)
            {
                double ans=oa/r/pq;
                //cout<<1;
                printf("%lf\n",ans);
                continue;
            }*/
            double dis=oa*cc;
            if(dis>r)
            {
                double x=sqrt(op*op+r*r-cc*2.0*op*r);
                double ans=2*x;
                printf("%.7f\n",ans);
                //cout<<"dsa";
            }
            else
            {
                double ans=pq*r/op;
                printf("%.7f\n",ans);
            }-
        }
    
    }

    样例已过,精度或边界问题。

    展开全文
  • 使用两种方法执行拉普拉斯变换的反演:(1) Zakian 方法和 (2) 傅立叶级数近似。 结果与解析解一致。 Zakian 方法提出了超越函数的问题。 在处理振荡函数时,傅立叶级数给出了更好的结果。 在此链接中可以使用 ...
  • 圆的反演变换(*)

    千次阅读 2017-08-12 11:07:00
    定理:不过反演中心的圆,它的形是一个圆,反演中心是这两个互为形的圆的一个位似中心,任意一对反演点是逆对应 点。用图形来解释,如下图: 那么,对于一个不过反演...

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=4773


    题意:给定两个圆,告诉半径和圆心,它们是相离的,在这两个圆外给定一个点p,求符合条件:过点p的圆且与已知的两个

    外切的所有圆的总数和它们的圆心坐标和半径。



    分析:根据题意,我们设已知两个圆的半径分别为,它们的圆心分别为,设点p的坐标为


    并设要求的圆的圆心为,半径为,那么根据它们的关系我们可以很快就列出方程组:




    然后,现在的问题就是来解,但是你会发现这个方程是很难解的,因此为了简化问题,我们利用反演变换来做。



    那么,怎么用反演变换来做? 首先,得知道什么是反演变换以及它有什么性质。


    反演的定义:


    已知一圆C,圆心为O,半径为r,如果P与P’在过圆心O的直线上,且,则称P与P'关于O互为反演。


    反演的性质:


    (1)除反演中心外,平面上的每一个点都只有唯一的反演点,且这种关系是对称的,位于反演圆上的点,保持在原处,位于

    反演圆外部的点,变为圆内部的点,位于反演圆内部的点,变为圆外部的点。 举个最简单的例子,区间以1为反演

    半径,那么反演后的区间就是,这就是一维反演,而圆的反演是二维反演。


    (2)任意一条不过反演中心的直线,它的反形是经过反演中心的圆,反之亦然,特别地,过反演中心相交的圆,变为不过反

    演中心的相交直线。





    定理:不过反演中心的圆,它的反形是一个圆,反演中心是这两个互为反形的圆的一个位似中心,任意一对反演点是逆对应

    点。用图形来解释,如下图:




    那么,对于一个不过反演中心的圆,怎样求它的反形圆?


    很容易知道我们只需要求出反形圆的圆心和半径就可以了。


    对于上图我们设圆C1的半径为,C2的半径为,反演半径为


    那么根据反演的定义有:




    那么,消去得到:




    这样我们就得到了反形圆的半径,那么还要求反形圆的圆心。



    由于C1和O两点的坐标已知,而且我们知道O,C1,C2位于同一直线上,那么很明显对于C2的坐标,我们可以这样计算:


    设O的坐标为,C1的坐标为,C2的坐标为


    那么有:




    至于由上面解处可以很容易得到,这样我们就完成了圆的反演变换。



    由于本题的做法是这样的,先以点P为为反演中心,反演半径随便设置都可以,为了计算方便就设为1,把圆C1和圆C2反演后再求这两个圆的

    公切线,再把这个公切线反演回去,那么就是一个过点P的圆,且与原来的C1和C2相切。



    那么接下来就是如何计算两个圆的公切线了。这里只需要考虑公切线在同一侧的情况。那么,这个自己画图就能很容易计算了。

    找到公切线后还要把它反演成圆,这个圆还经过P点,那么很容易得到了。


    [cpp]  view plain  copy
    1. #include <iostream>  
    2. #include <string.h>  
    3. #include <stdio.h>  
    4. #include <math.h>  
    5.   
    6. using namespace std;  
    7. double const eps = 1e-8;  
    8.   
    9. struct Point  
    10. {  
    11.     double x,y;  
    12.     Point(double a = 1.0,double b = 1.0):x(a),y(b){}  
    13.     Point operator + (const Point &a)  
    14.     {  
    15.         return Point(x+a.x,y+a.y);  
    16.     }  
    17.     Point operator - (const Point &a)  
    18.     {  
    19.         return Point(x-a.x,y-a.y);  
    20.     }  
    21.     Point operator * (const double a)  
    22.     {  
    23.         return Point(a*x,a*y);  
    24.     }  
    25.     Point Trans()  
    26.     {  
    27.         return Point(-y,x);  
    28.     }  
    29.     void Input()  
    30.     {  
    31.         scanf("%lf%lf",&x,&y);  
    32.     }  
    33. } ;  
    34.   
    35. struct Circle  
    36. {  
    37.     Point o;  
    38.     double r;  
    39.     Circle(Point a = Point(),double b = 1.0):o(a),r(b) {}  
    40.     Point getPoint(double alpha)  
    41.     {  
    42.         return o + Point(r*cos(alpha),r*sin(alpha));  
    43.     }  
    44.     void Input()  
    45.     {  
    46.         o.Input();  
    47.         scanf("%lf",&r);  
    48.     }  
    49.     void Output()  
    50.     {  
    51.         printf("%.8lf %.8lf %.8lf\n",o.x,o.y,r);  
    52.     }  
    53. } ;  
    54.   
    55. Point p;  
    56. Circle c[15];  
    57.   
    58. double dist(Point A,Point B)  
    59. {  
    60.     return sqrt((A.x-B.x)*(A.x-B.x) + (A.y-B.y)*(A.y-B.y));  
    61. }  
    62.   
    63. double cross(Point A,Point B,Point C)  
    64. {  
    65.     return (B.x-A.x)*(C.y-A.y) - (B.y-A.y)*(C.x-A.x);  
    66. }  
    67.   
    68. int sign(double x)  
    69. {  
    70.     return (x > eps) - (x < -eps);  
    71. }  
    72.   
    73. Circle Inverse(Circle C)  
    74. {  
    75.     Circle T;  
    76.     double t = dist(C.o,p);  
    77.     double x = 1.0 / (t - C.r);  
    78.     double y = 1.0 / (t + C.r);  
    79.     T.r = (x - y) / 2.0;  
    80.     double s = (x + y) / 2.0;  
    81.     T.o = p + (C.o - p) * (s / t);  
    82.     return T;  
    83. }  
    84.   
    85. void add(Point a,Point b,int &k)  
    86. {  
    87.     double t = cross(a,p,b);  
    88.     if(t < 0) t = -t;  
    89.     double d = dist(a,b);  
    90.     t /= d;  
    91.     if(t > eps)  
    92.     {  
    93.         double w = 0.5 / t;  
    94.         Point dir = (b-a).Trans();  
    95.         Point a1 = p + dir * (w / d);  
    96.         Point b1 = p - dir * (w / d);  
    97.         if(fabs(cross(a,b,a1)) < fabs(cross(a,b,b1)))  
    98.            c[k++] = Circle(a1,w);  
    99.         else  
    100.            c[k++] = Circle(b1,w);  
    101.     }  
    102. }  
    103.   
    104. int Work()  
    105. {  
    106.     c[0] = Inverse(c[0]);  
    107.     c[1] = Inverse(c[1]);  
    108.     if(c[1].r > c[0].r) swap(c[1],c[0]);  
    109.     Point v = c[1].o - c[0].o;  
    110.     double alpha = atan2(v.y,v.x);  
    111.     double d = dist(c[0].o,c[1].o);  
    112.     double beta  = acos((c[0].r - c[1].r) / d);  
    113.     int k = 2;  
    114.     Point a = c[0].getPoint(alpha + beta);  
    115.     Point b = c[1].getPoint(alpha + beta);  
    116.     if(sign(cross(a,c[0].o,b)) == sign(cross(a,p,b)) &&  
    117.        sign(cross(a,c[1].o,b)) == sign(cross(a,p,b)))  
    118.         add(a,b,k);  
    119.     a = c[0].getPoint(alpha - beta);  
    120.     b = c[1].getPoint(alpha - beta);  
    121.     if(sign(cross(a,c[0].o,b)) == sign(cross(a,p,b)) &&  
    122.        sign(cross(a,c[1].o,b)) == sign(cross(a,p,b)))  
    123.         add(a,b,k);  
    124.     return k - 2;  
    125. }  
    126.   
    127. int main()  
    128. {  
    129.     int T;  
    130.     scanf("%d",&T);  
    131.     while(T--)  
    132.     {  
    133.         c[0].Input();  
    134.         c[1].Input();  
    135.         p.Input();  
    136.         int num = Work();  
    137.         printf("%d\n",num);  
    138.         for(int i=0;i<num;i++)  
    139.             c[i+2].Output();  
    140.     }  
    141.     return 0;  
    142. }  
    展开全文
  • 关于群论在量子力学中的应用

    千次阅读 2018-02-17 22:24:32
    矢量算符再按在空间反演变换下变不变号而分为真矢量和轴矢量(赝矢量)。 可见量子力学中,矢量算符的定义要借助于空间转动,又因为角动量算符是空间转动群的生成元,所以矢量算符的定义和角动量算符关系密切。...
  • 圆的反演变换(HDU4773)

    千次阅读 2014-11-05 16:38:36
    Circle InverLine(node p,double R,Line L)//已知不过反演中心的直线,求其形圆(形圆过反演中心) { Circle ret; node q=InterPoint(p,L); double l1=dis(p,q); double l2=R*R/l1; ret.r=l2/2; ret....
  • 圆的反演变换

    2018-07-28 19:00:00
    在反演极同侧,这种反演变换称为正幂反演,亦叫双曲线式反演变换。 当 \(k) 时,有向线段 \(OA\) 与 \(OA'\) 反向, \(A\) 与 \(A'\) 在反演极异侧,这种反演变换称为负幂反演,亦叫椭圆式反演变换。 性质 ...
  • FPGA现状

    万次阅读 多人点赞 2019-07-16 19:51:42
     作为一种可编程逻辑器件,FPGA在短短二十多年中从电子设计的外围器件逐渐演变为数字系统的核心。伴随半导体工艺技术的进步,FPGA器件的设计技术取得了飞跃发展及突破。通过FPGA器件的发展历程来看,今后仍将朝下...
  • 图像处理-Gamma变换

    万次阅读 2016-12-10 11:00:19
    Gamma变换: y=x^gamma; gamma>1, 较亮的区域灰度被拉伸,较暗的区域灰度被压缩的更暗,图像整体变暗; gamma, 较亮的区域灰度被压缩,较暗的区域灰度被拉伸的较亮,图像整体变亮;
  • Mobius反演与树状数组

    千次阅读 2013-06-16 16:18:40
    我们可以由TA数组得到Sum数组,那么,另外一方面,我们是否可以用TA数组解出Sum数组呢?事实上可以,当然,在这里面我们需要定义一个二元的偏序关系, 如果给一个元素k,我们可以不断地用k-lowbit(k)代替k,...
  • linux命令大全

    千次阅读 2015-12-24 08:44:14
    Linux命令大全完整版 目 录 目 录... I 1. linux系统管理命令... 1 adduser1 chfn(change finger information)1 chsh(change shell)1 date. ...gitps(gnu interactive tools proce
  • SGD算法的下降方向就是该位置的梯度方向的方向,带一阶动量的SGD的下降方向则是该位置的一阶动量方向。自适应学习率类优化算法为每个参数设定了不同的学习率,在不同维度上设定不同步长,因此其下降方向是缩放过...
  • 【To Do List】

    千次阅读 热门讨论 2014-09-30 21:37:24
    列一下To Do List 需要学习的: 容斥原理 母函数 DLX 四边形不等式 重量平衡树 卡特兰数 伯努利数 带花树 二项式反演 插头dp 博弈 sbt LCT链翻转 仙人掌 基环外向树 斯特林数 最小乘积生成树 动态凸包 旋转卡壳 ...
  • 2019-06-10 16:10:12 莫颜 时代壹周刊 ...“有时我正好碰见他从楼里面走出来,他没有和我打招呼,就一头钻进自己的奔驰里。我无所谓,推着单车慢慢地走过去,但透过小车的反光玻璃,我看不清他的表情。...
  • 分布式服务框架

    千次阅读 2016-01-29 10:42:11
    memcache 存储支持的数据格式也是灵活多样的,通过对象的序列化机制,可以将更高层抽象的对象转换成为二进制数据,存储在缓存服务器中,当前端应用需要时,又可以通过二进制内容序列化,将数据还原成原有对象。...
  • 近来拼多多爆出的羊毛党事件使得计算机信息安全再次被提到人们的面前,原本属于计算机安全学科中的“薅羊毛”这一专有名词也被众多普通人所熟知。通过拼多多事件还原我们得知它其实是一个非常简单的“低级错误”导致...
  • 应用1970年1月至1989年12月热带太平洋SSTA(海面温度距平)和SSWA(海面风距平...赤道中东太平洋距平东风(西风)向赤道距平西风(东风)的转换伴随着中西太平洋副热带SSWA偶极子气旋(气旋)的生消,偶极子气旋(
  • 服务端架构演变

    千次阅读 2017-06-06 11:01:44
    在架构演进的过程中,还要考虑系统的安全性、数据分析、监控、作弊等等......,同时继续发展呢,SOA架构、服务化、消息队列、任务调度、多机房等等… ... 从刚才对架构演进的讲解,也可以看出来,所有大型...
  • 相同内容通过一正一镜像传输,干扰可以很快被发现和纠正,从而可以将传输频率大幅提升。加上PCI原来基本是半双工的(地址/数据线太多,不得不复用线路),而串行可以全双工。综合下来,如果如果我们从频率提高下来...
  • 变换从本质上说也是一种累加处理,这样就可以将单独改变的正弦波信号转换成一个信号。因此,可以说,傅立叶变换将原来难以处理的时域信号转换成了易于分析的频域信号(信号的频谱),可以利用一些工具对这些频域...
  • 7.4 等角线及其他与位似旋转变换 7.5 三角形的连接与位似旋转变换之积 7.6 位似轴反射变换与几何证题 习题7第8章 反演变换 8.1 反演变换及其性质 8.2 线段度量关系与反演变换 8.3 圆与反演变换 8.4 两圆的互...
  • 上面五个步骤详细地介绍了从匿名方法到 Lambda 表达式完整的演变过程。希望对大家熟悉Lambda表达式有所启发。今天就到这里吧!See You! 相关图文 : 如何利用 C# 实现 K 最邻近算法? 如何利用 C# 实现 K...
  • 深度卷积神经网络结构演变

    千次阅读 2018-12-07 16:54:33
    提出通过卷积方法进行卷积网络可视化的方法,可以了解到图像“学”到了什么。以此改进,在AlexNet基础上取得了更好的成果。 四、VGGNet 2014 提出使用很小的卷积核来代替大的卷积核,大量使用3*3卷积,这样...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,954
精华内容 4,781
关键字:

反演变换