<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Math on pugWoo&#39;s Life</title>
    <link>https://blog.pugwoo.com/tags/math/</link>
    <description>Recent content in Math on pugWoo&#39;s Life</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Wed, 13 Jan 2010 20:43:17 +0000</lastBuildDate>
    <atom:link href="https://blog.pugwoo.com/tags/math/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>贝特朗悖论</title>
      <link>https://blog.pugwoo.com/posts/2010/%E8%B4%9D%E7%89%B9%E6%9C%97%E6%82%96%E8%AE%BA/</link>
      <pubDate>Wed, 13 Jan 2010 20:43:17 +0000</pubDate>
      <guid>https://blog.pugwoo.com/posts/2010/%E8%B4%9D%E7%89%B9%E6%9C%97%E6%82%96%E8%AE%BA/</guid>
      <description>&lt;p&gt;贝特朗悖论是概率论的经典问题。题目是：随机取圆的一条弦，求该线的长度大于该圆的内接正三角形变长的概率。贝特朗给出3中解答，答案概率分别是1/2，1/3，1/4，具体题目见http://baike.baidu.com/view/1258843.htm。&lt;/p&gt;&#xA;&lt;p&gt;数学是确定的。一般地，我们从自然语言提炼出信息，变成数学语言，数学语言求解得出答案。关于贝特朗悖论，不少教科书说出现该悖论是&amp;quot;随机&amp;quot;的理解不同所导致的。我不同意，如果有歧义，那么必定是在&amp;quot;自然语言&amp;ndash;&amp;gt;数学语言&amp;quot;这个环节出现。而&amp;quot;随机取圆的一条弦&amp;quot;本身就是数学语言，&lt;strong&gt;我不认为这有歧义&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;p&gt;我认为答案是唯一的。在Google搜索&amp;quot;贝特朗悖论&amp;quot;的前10页文章的解答中，主要有以下几个观点：&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong style=&#34;COLOR: #ff8000&#34;&gt;1）&lt;/strong&gt;三个答案均正确，原因在于&amp;quot;均匀分布&amp;quot;的假设不同，见&lt;a href=&#34;http://www.charlesgao.com/?p=130&#34; target=&#34;_blank&#34;&gt;这篇&lt;/a&gt;。或者归于定义不明确，见&lt;a href=&#34;http://www.eaglefantasy.cn/archives/214&#34; target=&#34;_blank&#34;&gt;这篇&lt;/a&gt;。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong style=&#34;COLOR: #ff8000&#34;&gt;2）&lt;/strong&gt;某大学学报&lt;a href=&#34;http://scholar.ilib.cn/A-kmsfgdzkxxxb200404003.html&#34; target=&#34;_blank&#34;&gt;《关于贝特朗悖论的新思考》&lt;/a&gt;一文经大量微积分运算得出只有1/4正确。典型的中国式学术，为的就是足够复杂，乱七八糟一堆公式以至于别人看不懂以显示自己牛B。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong style=&#34;COLOR: #ff8000&#34;&gt;3）&lt;/strong&gt;从点的&amp;quot;对等关系&amp;quot;得出1/3是正确的，其它均错误，给出了错误原因，&lt;a href=&#34;http://www.ejzc.com/show.asp?ArticleID=4941&#34; target=&#34;_blank&#34;&gt;这篇&lt;/a&gt;。说白点，就是其它两种的&amp;quot;点&amp;quot;对应到圆周上的&amp;quot;点&amp;quot;的数目不同。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong style=&#34;COLOR: #ff8000&#34;&gt;4）&lt;/strong&gt;其它要收钱下载不了的论文没看。&lt;/p&gt;&lt;/p&gt;&#xA;&lt;p&gt;我认为这些全是错误的，其中1）错得最离谱。2）没细看，不过没点出错误所在。3）虽是错误，但最接近。&#xD;&#xA;&lt;p&gt;问题的本质在于&amp;quot;&lt;strong&gt;怎么&amp;rsquo;画&amp;rsquo;一条随机的弦&lt;/strong&gt;&amp;quot;。以下几种是随机的弦吗？&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong style=&#34;COLOR: #ff8000&#34;&gt;1）&lt;/strong&gt;随机取圆内（包括圆周）的两点，连成直线，取弦。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong style=&#34;COLOR: #ff8000&#34;&gt;2）&lt;/strong&gt;随机取圆周上两点，连线。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong style=&#34;COLOR: #ff8000&#34;&gt;3）&lt;/strong&gt;随机取圆内（包括圆周）的一点，与圆心连线，作过该点且与该连线相垂直的弦。&lt;/p&gt;&#xA;&lt;p&gt;上面那些是随机的？&lt;/p&gt;&#xA;&lt;p&gt;1）不是。我们把随机的弦化作点的随机来处理，必须是一对一的关系方可认为它们相等（参见无穷怎么判断相等）。2）是。3）不是，因为过圆心的弦没法表示。&lt;/p&gt;&#xA;&lt;p&gt;问题就出在这里，得出概率为1/4的做法没有把所有直径算进去，这是其错误的地方，不是其他原因。得出概率为1/2的做法不是一对一，即它们都不等，如何比较？上面的做法3）解释了这点。&lt;/p&gt;&#xA;&lt;p&gt;回到原题，得出1/3的结论是正确的。它根据的是上面随机取弦的第二种做法。如果你认真在看这篇文章，你会发觉原题的做法和上面方法2的取随机弦做法有些不同，它们可以把点平移到一个固定的点吗？怎么证明呢？&lt;/p&gt;&#xA;&lt;p&gt;在回答之前，再看看下面这几种做法，它们可以作出随机的弦吗？&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong style=&#34;COLOR: #ff8000&#34;&gt;1）&lt;/strong&gt;事先选定圆周上的一点，随机选&lt;code&gt;[0,180]&lt;/code&gt;度一实数，以约定的正方向取过该事先选定的点的一条弦；再随机选定&lt;code&gt;[0,2*pi*r]&lt;/code&gt;的一实数，将选定的点绕圆周移动该实数的距离（约定好正方向），取该弦。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong style=&#34;COLOR: #ff8000&#34;&gt;2）&lt;/strong&gt;随机选取0～360度某一角度，过圆心作该角度的直径；随机选取&lt;code&gt;[-r，r]&lt;/code&gt;一实数（约定一个正方向，可由右手定律约定），移动该直径，取弦。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong style=&#34;COLOR: #ff8000&#34;&gt;3）&lt;/strong&gt;为该单位圆建立好直角坐标系，原点和圆心重合，对圆的任一条弦，引过(0,r)点的垂线，把所有&amp;quot;垂点&amp;quot;的集合即为S；随机选取集合S中的一点，按上面放顺序作出一条弦。&lt;/p&gt;&#xA;&lt;p&gt;上面三种做法都是可以的。特别的，第一种就是原题作出1/3概率的方法。其它两种难计算，但我相信它们能算出1/3的概率。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong style=&#34;COLOR: #ff8000&#34;&gt;总结：&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;按上面的分析，得出1/4的概率是因为直径没有算进去，设所有弦数量为x1，直径数量为x2，大于内接正三角形边长的弦数量为x3，可以由x3/x1=1/3；(x3-x2)/x1=1/4；算出x2/x1=1/12。很不可思议的结论，直径数量竟然占所有弦的1/12。然而在涉及无穷多的时候，很多结论不是直觉所能接受的。我们知道2n和4n（n是自然数）的个数是一样多的，那么随机取一非负数，该数为2n和该数为4n的概率是一样的，足够不可思议吧！或许我们需要对无穷大的比较作出一定的修正和解释，测度论的出现就是用来处理这些无穷多元素之间的大小关系的，而非来&amp;quot;和谐&amp;quot;模棱两可允许歧义的数学的。&lt;/p&gt;&#xA;&lt;p&gt;题外话：由于Google退出中国的影响，本打算详细写这篇文章的计划也放弃了，博客流量虽少，90%以上是google带来的，如没有该搜索引擎，博客便少了分享的动力，写博客也只是为了自己看，既然为了自己看，就不必那么详细。有问题欢迎讨论。&lt;/p&gt;</description>
    </item>
    <item>
      <title>偏微分方程数值解实验报告(3个)</title>
      <link>https://blog.pugwoo.com/posts/2010/%E5%81%8F%E5%BE%AE%E5%88%86%E6%96%B9%E7%A8%8B%E6%95%B0%E5%80%BC%E8%A7%A3%E5%AE%9E%E9%AA%8C%E6%8A%A5%E5%91%8A3%E4%B8%AA/</link>
      <pubDate>Wed, 13 Jan 2010 11:10:37 +0000</pubDate>
      <guid>https://blog.pugwoo.com/posts/2010/%E5%81%8F%E5%BE%AE%E5%88%86%E6%96%B9%E7%A8%8B%E6%95%B0%E5%80%BC%E8%A7%A3%E5%AE%9E%E9%AA%8C%E6%8A%A5%E5%91%8A3%E4%B8%AA/</guid>
      <description>&lt;p&gt;我的课程期末实验，仅供参考，版权所有请勿抄袭，点开链接直接查看：&lt;/p&gt;&#xA;&lt;p&gt;1）欧拉Euler和Adams插值求解常微分方程：http://docs.google.com/fileview?id=0ByxoWlaHw_idZThjNjU1NjMtYzc3Yi00MmM2LWEyZDgtMjFkNTMwMGQzOWI3&amp;amp;hl=en。&lt;/p&gt;&#xA;&lt;p&gt;2）Ritz-Galerkin方法求解边值问题：http://docs.google.com/fileview?id=0ByxoWlaHw_idY2JhNjhlODEtZTRiNi00NDAxLThmMmItMjc5YWM0MmU4ZDk4&amp;amp;hl=en。&lt;/p&gt;&#xA;&lt;p&gt;3）线性有限元求解边值问题：http://docs.google.com/fileview?id=0ByxoWlaHw_idZmI5YmJmZTItMDg3Ni00NTNlLThmM2MtODU4ZjhlYWI0OTE1&amp;amp;hl=en。&lt;/p&gt;</description>
    </item>
    <item>
      <title>新年来道数学题</title>
      <link>https://blog.pugwoo.com/posts/2010/%E6%96%B0%E5%B9%B4%E6%9D%A5%E9%81%93%E6%95%B0%E5%AD%A6%E9%A2%98/</link>
      <pubDate>Fri, 01 Jan 2010 10:49:40 +0000</pubDate>
      <guid>https://blog.pugwoo.com/posts/2010/%E6%96%B0%E5%B9%B4%E6%9D%A5%E9%81%93%E6%95%B0%E5%AD%A6%E9%A2%98/</guid>
      <description>&lt;p&gt;题目：怎样判断一枚硬币是均匀的，即抛硬币的正反面出现的概率相等。&lt;/p&gt;&#xA;&lt;p&gt;欢迎留言解答~&lt;/p&gt;</description>
    </item>
    <item>
      <title>阅微堂BBS里判断全排列问题的讨论</title>
      <link>https://blog.pugwoo.com/posts/2009/%E9%98%85%E5%BE%AE%E5%A0%82bbs%E9%87%8C%E5%88%A4%E6%96%AD%E5%85%A8%E6%8E%92%E5%88%97%E9%97%AE%E9%A2%98%E7%9A%84%E8%AE%A8%E8%AE%BA/</link>
      <pubDate>Tue, 29 Dec 2009 16:40:46 +0000</pubDate>
      <guid>https://blog.pugwoo.com/posts/2009/%E9%98%85%E5%BE%AE%E5%A0%82bbs%E9%87%8C%E5%88%A4%E6%96%AD%E5%85%A8%E6%8E%92%E5%88%97%E9%97%AE%E9%A2%98%E7%9A%84%E8%AE%A8%E8%AE%BA/</guid>
      <description>&lt;p&gt;题目：给一个n长的数组，判断它是否为一个1,2,&amp;hellip;,n的全排列，要求在线性时间，常数空间内实现。&lt;/p&gt;&#xA;&lt;p&gt;今天和同学讨论了下，他给出的做法等价于&amp;quot;给定n长的数组，不用额外空间，通过交换元素，在线性时间里把数组排序，然后就能判断该数组是否为全排列&amp;quot;。这不难想出，但我不认同这种方法是常数空间，因为存放这些数组的空间就是O(n)空间。&lt;/p&gt;&#xA;&lt;p&gt;我把实现的程序看成是一个黑盒子，既然是常数空间，那么盒子的体积就是固定，不随n变化。n长的数组相当于一个输入流作为参数输入到函数。输入完之后函数判断该序列是否为全排列。形象地表示为：&lt;/p&gt;&#xA;&lt;img src=&#34;http://farm3.static.flickr.com/2775/4225705852_851438ac69.jpg&#34; alt=&#34;2009-12-29 22-59-25.png&#34; height=&#34;202&#34; width=&#34;313&#34;/&gt;&#xD;&#xA;&lt;p&gt;可假定这些数都落在1到n范围内，否则可以即刻检测出不是全排列。接着，可以推导出这个函数应该在&amp;quot;最后时刻&amp;quot;才能判断出是否为全序列。这里指的&amp;quot;最后时刻&amp;quot;包括那些肉眼轻易就能判别的情况，比如输入1、1、2、4&amp;hellip;，一开始出现了两个1，我们马上就能判断该序列不是全排列，但这个实现不能具有这样的功能。&lt;/p&gt;&#xA;&lt;p&gt;假设该实现能在当出现两个数重复时，就判断出结果。那么，我们可以利用该函数的常数空间，构造出一个可以存储无限信息的有限空间。假设对于信息111000&amp;hellip;101，不管它多长，它的左边第一位用全排序的1和2表示，1表示0，2表示1；第二位用全排序的3和4表示，3表示0，4表示1. 以此类推，则这则信息相当于往Function输入2、4、6、7、9、10&amp;hellip;.这样的一排数。如果该实现能在第一次出现重复时就判断出是否全排列，那么可以利用该特点，随便读取出信息的任何一位，比如读取第一位，只需要往Function输入2，如果它判断出&amp;quot;非全排列&amp;quot;，则说明第一位是1. 由于Function的空间是常数的，每次读取一个bit，都可以保持Function的状态，读取后还原。就这样，我们构造了一个可写可读的可存放无穷容量的常数空间。这可能吗？&lt;/p&gt;&#xA;&lt;p&gt;我先假定有限容量存无穷信息是不可能的。那么就可得出该函数&amp;quot;最后时刻&amp;quot;方可判断结果，无论序列是什么（无论多显而易见）。&lt;/p&gt;&#xA;&lt;p&gt;讨论到这，我同学提出，那无论什么实现肯定都不可能是常数空间的，因为它肯定和输入长度N有关。其实常数空间的例子很多，比如说，输入一排整数，判断奇数和偶数的个数是否相等；判断是否出现了0；判断其和是否大于某个给定的数。这些简单的例子都是线性时间+常数空间就可实现的。它们有什么共同点呢？它们的输入都是随N变换的，但是输出仅是这排序列的某个属性！而这个属性反推不出原序列，即它们不可逆，结论仅是原序列性质的一个提取。&lt;/p&gt;&#xA;&lt;p&gt;那么，判断一排数是否为全排列也仅是这排数的一个性质，知道它是不是全排列并不能反推出原来这排数的顺序，也就是这个Function提取了数列的一个性质。至于提取这个性质可不可以是常数空间呢？需要讨论。可以把这个Function看成是一种投影，它把不管多长的线，投影成一个点，这个点就是要提取的属性。前面的常数空间例子都没问题，那提取是否为全排序这个性质又能不能是常数空间呢？不好证明，或许它真的存在。&lt;/p&gt;&#xA;&lt;p&gt;&amp;ldquo;最后时刻&amp;quot;方可判断结果，意味着该Function不需要去记录已读取的数是什么，只需要把它们投影到某个常数空间的&amp;quot;点&amp;quot;上，当所有的数读完，再来判断该点的性质，就可以得出结论。这样的数学函数存不存在，难说。&lt;/p&gt;</description>
    </item>
    <item>
      <title>集合的性质在证明扩展欧几里德和欧拉定理的表现</title>
      <link>https://blog.pugwoo.com/posts/2009/%E9%9B%86%E5%90%88%E7%9A%84%E6%80%A7%E8%B4%A8%E5%9C%A8%E8%AF%81%E6%98%8E%E6%89%A9%E5%B1%95%E6%AC%A7%E5%87%A0%E9%87%8C%E5%BE%B7%E5%92%8C%E6%AC%A7%E6%8B%89%E5%AE%9A%E7%90%86%E7%9A%84%E8%A1%A8%E7%8E%B0/</link>
      <pubDate>Fri, 18 Dec 2009 18:33:29 +0000</pubDate>
      <guid>https://blog.pugwoo.com/posts/2009/%E9%9B%86%E5%90%88%E7%9A%84%E6%80%A7%E8%B4%A8%E5%9C%A8%E8%AF%81%E6%98%8E%E6%89%A9%E5%B1%95%E6%AC%A7%E5%87%A0%E9%87%8C%E5%BE%B7%E5%92%8C%E6%AC%A7%E6%8B%89%E5%AE%9A%E7%90%86%E7%9A%84%E8%A1%A8%E7%8E%B0/</guid>
      <description>&lt;p&gt;这些是最基础的数论知识，写出来是强调集合性质的表现。集合中的元素是无序的、互异的。函数是一个集合到另一个集合的映射，对于原象中的任何一个元素，至多有一个元素与之对应。&lt;/p&gt;&#xA;&lt;img src=&#34;http://farm3.static.flickr.com/2766/4194256743_b792909e0f.jpg&#34; alt=&#34;2009-12-18 18-52-30.png&#34; height=&#34;292&#34; width=&#34;423&#34;/&gt;&#xD;&#xA;&lt;p&gt;集合A是原象，集合B是象。抽屉原理就是运用集合的性质，如果集合A的元素比集合B多，则集合A至少存在有两个以上的元素，映射到相同的一个元素（集合B中）；如果集合A的元素比集合B少，则集合B中比存在元素，不是从集合A映射过去的（不落在函数的值域内）。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;扩展欧几里德算法&lt;/strong&gt;：如果整数f &amp;gt;= 1，gcd(d,f)=1，那么d有一个模 f 的乘法逆元d&amp;rsquo;，即对小于f的正整数d，存在一个小于f的整数d&amp;rsquo;，使得d*d&amp;rsquo; ≡1 mod f. 其中gcd(d,f)表示d和f的最大公约数。&lt;/p&gt;&#xA;&lt;p&gt;例如：对于f=9，d=5，满足gcd(5,9)=1，则存在一个数d&amp;rsquo;&amp;lt; f，使得5*d&amp;rsquo;≡1 mod 9. 可以穷举出d&amp;rsquo;=2.&lt;/p&gt;&#xA;&lt;h2 id=&#34;证明&#34;&gt;证明：&lt;/h2&gt;&#xA;&lt;p&gt;对于命题中的d*d&amp;rsquo; ≡x mod f，可以把左边看成集合A，右边看成集合B，它们之间有一种一一对应的关系。&lt;/p&gt;&#xA;&lt;p&gt;左边集合：d&amp;rsquo;的取值有0、1、2&amp;hellip;.f-1共f种可能。右边集合：x可能取0、1、2&amp;hellip;f-1共f种可能。&lt;/p&gt;&#xA;&lt;p&gt;反证法，假设对于所有的d&amp;rsquo;，不存在d&amp;rsquo;，使得&lt;code&gt;d*d&#39; ≡1 mod f&lt;/code&gt;. 那么集合A的元素数量就比集合B多。根据抽屉原理，必存在不同的d&amp;rsquo;，记为d1&amp;rsquo;,d2&amp;rsquo;，使得&lt;code&gt;d*d1&#39;≡d*d2&#39;≡a mod f&lt;/code&gt;，a是落在0、2&lt;del&gt;f-1的某个值。&lt;code&gt;d*d1&#39;≡d*d2&#39;≡a mod f&lt;/code&gt;等价于&lt;code&gt;d*(d1&#39;-d2&#39;)≡0 mod f&lt;/code&gt;，由于gcd(d,f)=1，则有(d1&amp;rsquo;-d2&amp;rsquo;)≡0 mod f，由于d1&amp;rsquo;和d2&amp;rsquo;落在0&lt;/del&gt;f-1的范围内，所以(d1&amp;rsquo;-d2&amp;rsquo;)的取值范围为-(f-1)~(f-1)，则(d1&amp;rsquo;-d2&amp;rsquo;)只能为0，则有d1&amp;rsquo;=d2&amp;rsquo;。矛盾，所以存在d&amp;rsquo;，使得d*d&amp;rsquo; ≡1 mod f，得证。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;欧拉定理&lt;/strong&gt;：网上广泛流传着&lt;a href=&#34;http://blog.csdn.net/hillgong/archive/2009/05/25/4214327.aspx&#34;&gt;这个证明&lt;/a&gt;。看的时候记得考虑一下集合的性质。&lt;/p&gt;</description>
    </item>
    <item>
      <title>球的有趣性质----两平行平面切得的球表面积与其距离成线性正比</title>
      <link>https://blog.pugwoo.com/posts/2009/%E7%90%83%E7%9A%84%E6%9C%89%E8%B6%A3%E6%80%A7%E8%B4%A8----%E4%B8%A4%E5%B9%B3%E8%A1%8C%E5%B9%B3%E9%9D%A2%E5%88%87%E5%BE%97%E7%9A%84%E7%90%83%E8%A1%A8%E9%9D%A2%E7%A7%AF%E4%B8%8E%E5%85%B6%E8%B7%9D%E7%A6%BB%E6%88%90%E7%BA%BF%E6%80%A7%E6%AD%A3%E6%AF%94/</link>
      <pubDate>Tue, 15 Dec 2009 05:32:41 +0000</pubDate>
      <guid>https://blog.pugwoo.com/posts/2009/%E7%90%83%E7%9A%84%E6%9C%89%E8%B6%A3%E6%80%A7%E8%B4%A8----%E4%B8%A4%E5%B9%B3%E8%A1%8C%E5%B9%B3%E9%9D%A2%E5%88%87%E5%BE%97%E7%9A%84%E7%90%83%E8%A1%A8%E9%9D%A2%E7%A7%AF%E4%B8%8E%E5%85%B6%E8%B7%9D%E7%A6%BB%E6%88%90%E7%BA%BF%E6%80%A7%E6%AD%A3%E6%AF%94/</guid>
      <description>&lt;p&gt;这是大三我在做数学物理方程作业时发现的，该结论可使那道证明题变得很简便，可惜考试时我没把该结论证明一遍，太懒了被扣分。&lt;/p&gt;&#xA;&lt;p&gt;只要两个平行平面都切到球，则可以找到该球的一条直径，使得它和两平行平面垂直。因此命题也可表达成：对于球的任意一条直径，在其上面任取两点，过这两点分别作两个和该直径垂直的平面，则两平面切得的球表面积（不包括切平面面积）和这两点间的距离成线性正比。&lt;/p&gt;&#xA;&lt;img src=&#34;http://farm3.static.flickr.com/2516/4186490249_d589bf6ab0.jpg&#34; alt=&#34;2009-12-15 14-24-44.png&#34; height=&#34;352&#34; width=&#34;358&#34;/&gt;&#xD;&#xA;&lt;p&gt;这个比例是2πr，r是球的半径。即图中距离x的两点的垂直平面切得的球表面积是2πr*x，只要两点落在直径上，无论两点距离多远，无论两点在什么位置上。&lt;/p&gt;&#xA;&lt;h2 id=&#34;证明&#34;&gt;证明：&lt;/h2&gt;&#xA;&lt;p&gt;先求球冠的表面积，如图：&lt;/p&gt;&#xA;&lt;img src=&#34;http://farm3.static.flickr.com/2629/4186491639_12b0691e98.jpg&#34; alt=&#34;2009-12-15 14-38-48.png&#34; height=&#34;211&#34; width=&#34;286&#34;/&gt;&#xD;&#xA;&lt;p&gt;图中的红点是球心，x是球冠的高，θ是夹角。如图，对于角θ，其微分Δθ对应的弧长是&lt;code&gt;r*Δθ&lt;/code&gt;，此时该切面的周长为&lt;code&gt;2π*r*sinθ&lt;/code&gt;，则这一小圈表面积为&lt;code&gt;r*Δθ*2π*r*sinθ&lt;/code&gt;，则球冠的表面积就是角θ从θ角度到0角度的积分。即：&lt;/p&gt;&#xA;&lt;img src=&#34;http://farm3.static.flickr.com/2782/4187253318_e32e2b8f9d.jpg&#34; alt=&#34;2009-12-15 15-00-41.png&#34; height=&#34;51&#34; width=&#34;169&#34;/&gt;&#xD;&#xA;&lt;p&gt;现在需要把θ换成x。首先&lt;img src=&#34;http://farm5.static.flickr.com/4003/4186491933_afdc924a7d.jpg&#34; style=&#34;DISPLAY: inline;&#34; height=&#34;24&#34; alt=&#34;CodeCogsEqn.gif&#34; width=&#34;215&#34;/&gt;。当θ从θ积分到0时，x从x积分到0，dθ和dx的关系推导如下：&lt;/p&gt;&#xA;&lt;img src=&#34;http://farm3.static.flickr.com/2629/4187253574_fdbc1a4afa.jpg&#34; alt=&#34;2009-12-15 15-17-15.png&#34; height=&#34;199&#34; width=&#34;337&#34;/&gt;&#xD;&#xA;&lt;p&gt;将上面的两条等式替换到S的表达式后，记得dx是从x到0，则有最后结论&lt;img src=&#34;http://farm3.static.flickr.com/2558/4187253796_22b9f7cb69.jpg&#34; alt=&#34;2009-12-15 15-20-21.png&#34; height=&#34;46&#34; width=&#34;191&#34;/&gt;。&lt;/p&gt;&#xA;&lt;p&gt;利用该结论可以证明最终命题。记直径上的两点为x1和x2，到圆冠顶部的距离分别为x1和x2，则球面面积减去这两个圆冠的面积 = 两平面切得的球表面积。&lt;/p&gt;&#xA;&lt;p&gt;两平面切得的球表面积 = &lt;code&gt;4πr^2 - 2πr*x1-2πr*x2 = 2πr*(2r-x1-x2)&lt;/code&gt;，而(2r-x1-x2)就是两点间距离。证毕。&lt;/p&gt;</description>
    </item>
    <item>
      <title>可信的抽奖机制</title>
      <link>https://blog.pugwoo.com/posts/2009/%E5%8F%AF%E4%BF%A1%E7%9A%84%E6%8A%BD%E5%A5%96%E6%9C%BA%E5%88%B6/</link>
      <pubDate>Tue, 08 Dec 2009 15:50:44 +0000</pubDate>
      <guid>https://blog.pugwoo.com/posts/2009/%E5%8F%AF%E4%BF%A1%E7%9A%84%E6%8A%BD%E5%A5%96%E6%9C%BA%E5%88%B6/</guid>
      <description>&lt;p&gt;我想起小时候常玩的一种游戏，潮州话叫&amp;quot;安仔&amp;quot;，不知怎用文字称呼。它很像一张邮票，一面有图案，一面空白。游戏规则是：两个人，每人拿一张，放在掌心，然后相互击掌，放开，使&amp;quot;安仔&amp;quot;自由落地，正面向上的一方赢。如果同为正面向上或正面向下，则算打平。有些小朋友爱作弊，把两张一模一样的&amp;quot;安仔&amp;quot;背靠背贴在一起，这样无论怎样它都是正面的。于是，有时一方赢得太多，输的一方总会检查&amp;quot;安仔&amp;quot;，以确定对方未作弊。&lt;/p&gt;&#xA;&lt;p&gt;这是现实生活中很典型的验证真伪的方法。抓阄、抽牌等赌博方式都是可以去验证真伪的。比方说抓阄二选一，一个有字一个无字，如果一方抽到无字的，那他会看看另一张是否有字，以验证其参与了一场公平的赌博。&lt;/p&gt;&#xA;&lt;p&gt;事情从现实到了计算机世界就大为不同。假设前面说到得&amp;quot;安仔&amp;quot;的双面是高科技的显示屏，作弊的人只要写个程序，让&amp;quot;安仔&amp;quot;在落地的瞬间，在其向上的一面显示出图案，背面不显示图案，那么这个&amp;quot;安仔&amp;quot;将是常胜将军。&lt;/p&gt;&#xA;&lt;p&gt;计算机世界要实现这样的作弊就太简单了。看看这个例子，某公司举办一抽奖活动，每购买一件该公司商品可获得抽奖机会一次。奖金丰厚，中奖概率50%，由于抽奖人数过多，该公司决定用计算机抽奖。于是他们写了个程序：计算机随机地将0和1这两个值赋给变量a、b，也就是说a是0或1的概率相等，然后，由抽奖者选择a或b哪个的值是1，猜对者获奖。按照上面提到的验证真伪的方法，如果某人选到的变量是0，那么他会要求公开另一个变量，看看是否是1. 现实中可以的验证方法到了计算机就未必使人信服，作弊太简单了。&lt;/p&gt;&#xA;&lt;p&gt;用伪代码写的作弊程序:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;   If (rand() &amp;gt; 0.5) a=0,b=1; //rand()产生一个[0,1 )之间的数&#xD;&#xA;   Else a=1,b=0;&#xD;&#xA;&#xD;&#xA;   Print &amp;#34;请猜猜哪个是1，a或b&amp;#34;&#xD;&#xA; &#xD;&#xA;   Cin &amp;gt;&amp;gt; char; //用户输入a或b&#xD;&#xA;&#xD;&#xA;   if (用户输入的变量的值为1) a 、b交换值; //作弊了&#xD;&#xA;   &#xD;&#xA;   Print 你中的变量的值是0 //无论用户选哪个，都是0&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;由于计算机的运行速度极快且其内部运算不可见，所以这个程序可以让抽奖者无论如何抽不中，就算他抽后检查另一个变量的值也没用。当然该公司为了掩人耳目，可以将中奖概率修改为30%并捏造出20%虚假的中奖者，这样更难被发现。&lt;/p&gt;&#xA;&lt;p&gt;事情似乎无法继续，难道计算机世界和真实世界存在着质的区别吗？它们验证证伪的特性如此不同。在继续之前，须介绍些密码学知识。&lt;/p&gt;&#xA;&lt;p&gt;HASH函数：指将任意长度的字符串映射到另一段字符串的函数。实际应用中，另一段字符串一般为数字或是固定长度的字符串。密码学中，典型的HASH函数有MD5、SHA1等，它们有如下特点，假设f是HASH函数，x属于定义域，y是值域：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;已知y，反求x是极其困难的。&lt;/li&gt;&#xA;&lt;li&gt;找到两个不同的x1、x2，使得f(x1)=f(x2)是极其困难的。(碰撞困难)&lt;/li&gt;&#xA;&lt;li&gt;已知x，求y=f(x)速度很快。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;满足这样性质的HASH函数最适合用于密码学，所谓的极其困难一般指除了暴力破解外别无他法，暴力破解耗费的时间上万年。&lt;/p&gt;&#xA;&lt;p&gt;MD5的碰撞性质已经被破解，不过它的第一个性质还没被破解，即已知y，反求x。为了安全起见，可以使用SHA1，甚至SHA-512，这些HASH函数目前要多少有多少。&lt;/p&gt;&#xA;&lt;p&gt;利用这样的HASH函数，可以解决上面的验证真伪问题。机制是这样的：&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;   1) 程序产生随机地一串足够长的字符串STRING1&#xD;&#xA;&#xD;&#xA;   2) 用户输入随机地一串足够长的字符串STRING2&#xD;&#xA;&#xD;&#xA;   3) 计算机计算HASH(STRING1+a的值+STRING2)，发送给用户&#xD;&#xA;&#xD;&#xA;   4) 计算机计算HASH(STRING1+b的值+STRING2)，发送给用户&#xD;&#xA;&#xD;&#xA;   5) 用户选择这两个HASH值的一个，也即选择a或b&#xD;&#xA;&#xD;&#xA;   6) 计算机公开a、b的值，用户知道是否中奖&#xD;&#xA;&#xD;&#xA;   7) 用户可验算a、b值是否被篡改&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;利用密码学HASH函数的特征，可以推断上述机制是对双方是安全的：&lt;/p&gt;&#xA;&lt;p&gt;1)用户得到这两串HASH值之后，不可能从此HASH值反求出原来的值，也即用户不可能反求出a、b的值。因为STRING1足够长，暴力破解出STRING1在短时间内不可能。这保证&amp;quot;奖券&amp;quot;在&amp;quot;刮开&amp;quot;之前是安全的。&lt;/p&gt;&#xA;&lt;p&gt;2)由于STRING2是用户随机输入的，计算机就无法实时计算好作弊数据。具体用图表示，左边是正常过程，右边是作弊需要的手段：&lt;/p&gt;&#xA;&lt;img src=&#34;http://farm5.static.flickr.com/4001/4170039561_faec36b789.jpg&#34; alt=&#34;2009-12-9 9-41-03.png&#34; height=&#34;126&#34; width=&#34;540&#34;/&gt;&#xD;&#xA;&lt;p&gt;Str1是计算机生成的，用户在步骤5)完成之前，不可能知道。当计算机把C1、C2这两个HASH值告诉用户之后，如果它要作弊，就必须找到新的Str1&amp;rsquo;，并且满足上图右边的情况。这在短时间内是不可能的，根据HASH函数特点，HASH碰撞是极其困难的，即使是已被破解的MD5，在上面机制下也无能为力，就算计算机找到Str1&amp;rsquo;，使得HASH (Str1&amp;rsquo;+b的值+Str2) = C1，那么要让这个Str&amp;rsquo;同时满足HASH (Str1&amp;rsquo;+a的值+Str2) = C2那真的是不可能的巧合。&lt;/p&gt;&#xA;&lt;p&gt;用户验证真伪：问题回到现实中来，现在用户验证真伪很简单。计算机公开Str1及a、b的值，用户计算HASH (Str1+a的值+Str2)和HASH (Str1+b的值+Str2)是否等于C1和C2即可。&lt;/p&gt;&#xA;&lt;p&gt;下面这个是可信抽奖程序的伪代码：&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;   If (rand()&amp;amp;lt;0.5) a=0,b=1; //rand()产生一个[0,1 )之间的数&#xD;&#xA;   Else a=1,b=0;&#xD;&#xA;&#xD;&#xA;   Str1 = 随机生成的一串足够长字符串&#xD;&#xA;&#xD;&#xA;   Print &amp;#34;请用户输入一串随机足够长的字符串&amp;#34;&#xD;&#xA;   Cin &amp;gt;&amp;gt; Str2; 用户输入足够长的字符串Str2&#xD;&#xA;&#xD;&#xA;   C1 = HASH(Str1+a+Str2);&#xD;&#xA;   C2= HASH(Str1+b+Str2);&#xD;&#xA;&#xD;&#xA;   Print &amp;#34;a的HASH值：&amp;#34;+C1 +&amp;#34;b的HASH值：&amp;#34;+C2&#xD;&#xA;&#xD;&#xA;   Print &amp;#34;请选择一个：&amp;#34;&#xD;&#xA;&#xD;&#xA;   If(用户选择的变量是1) Print &amp;#34;中奖了&amp;#34;; Else &amp;#34;没中奖&amp;#34;;&#xD;&#xA;&#xD;&#xA;   Print &amp;#34;计算机生成的Str1是&amp;#34;+Str1+&amp;#34;,请验证。&amp;#34;&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;按照上面的分析，如果计算机在用户输入a或b之后变换a、b的值，那么最后的验证将出错，作弊行为将被发现。现实中的问题在数学的辅助下得到更好的解决，我想大家现在更相信这种抽奖方式，因为现实中可能还存在魔术师，而要破解这个验证真伪的方法，比变魔术还难。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Bezier曲线的de Casteljau算法证明</title>
      <link>https://blog.pugwoo.com/posts/2009/bezier%E6%9B%B2%E7%BA%BF%E7%9A%84de-casteljau%E7%AE%97%E6%B3%95%E8%AF%81%E6%98%8E/</link>
      <pubDate>Tue, 01 Dec 2009 10:19:07 +0000</pubDate>
      <guid>https://blog.pugwoo.com/posts/2009/bezier%E6%9B%B2%E7%BA%BF%E7%9A%84de-casteljau%E7%AE%97%E6%B3%95%E8%AF%81%E6%98%8E/</guid>
      <description>&lt;p&gt;Bezier曲线（又称貝茲曲線或贝塞尔曲线）的定义和性质请看维基百科&lt;a href=&#34;http://zh.wikipedia.org/wiki/%E8%B2%9D%E8%8C%B2%E6%9B%B2%E7%B7%9A&#34;&gt;貝茲曲線&lt;/a&gt;。它的定义是：&lt;/p&gt;&#xA;&lt;img src=&#34;http://farm3.static.flickr.com/2522/4149447065_515b971535.jpg&#34; alt=&#34;2009-12-1 18-29-51.png&#34; height=&#34;58&#34; width=&#34;276&#34;/&gt;&#xD;&#xA;&lt;p&gt;其中&lt;img src=&#34;http://farm3.static.flickr.com/2493/4149447231_836f1a330f.jpg&#34; alt=&#34;2009-12-1 18-30-08.png&#34; height=&#34;58&#34; width=&#34;345&#34;/&gt;，约定0^0 = 1.&lt;/p&gt;&#xA;&lt;p&gt;de Casteljau算法揭示了Bezier数学上很美的一个性质，我八成相信是先有了这个性质，才有了上面的定义式，当然它们是等价的。首先来看维基百科中的三张图：&lt;/p&gt;&#xA;&lt;p&gt;二次Bezier曲线：&lt;img src=&#34;http://farm3.static.flickr.com/2671/4149447845_f29b211847_o.gif&#34; alt=&#34;Bezier_2_big.gif&#34; height=&#34;150&#34; width=&#34;360&#34;/&gt;&lt;/p&gt;&#xA;&lt;p&gt;三次Bezier曲线：&lt;img src=&#34;http://farm3.static.flickr.com/2755/4149449087_122cfae235_o.gif&#34; alt=&#34;Bezier_3_big.gif&#34; height=&#34;150&#34; width=&#34;360&#34;/&gt;&lt;/p&gt;&#xA;&lt;p&gt;四次Bezier曲线：&lt;img src=&#34;http://farm3.static.flickr.com/2670/4149449879_c449cbcedc_o.gif&#34; alt=&#34;Bezier_4_big.gif&#34; height=&#34;150&#34; width=&#34;360&#34;/&gt;&lt;/p&gt;&#xA;&lt;p&gt;这三张图展现了Bezier曲线漂亮的数学性质。图中的参数变量t的从0增长到1，红色的线就是Bezier曲线，Bezier曲线上的任一个点(t)，都是其它相邻线段的同等比例(t)点处的连线，再取同等比例(t)的点再连线，一直取到最后那条线段的同等比例(t)处，该点就是Beizer曲线上的点(t).以二次Bezier曲线为例，如该曲线上的1/3点，就是线段P0P1取1/3点，P1P2取1/3点，两点连线，再取其1/3点处即是。这就是de Casteljau算法提出来的，其数学表达式是：&lt;/p&gt;&#xA;&lt;img src=&#34;http://farm3.static.flickr.com/2685/4150209650_aa0ff7a629.jpg&#34; alt=&#34;2009-12-1 18-56-45.png&#34; height=&#34;52&#34; width=&#34;407&#34;/&gt;&#xD;&#xA;&lt;p&gt;上式中，k表示第k层，以四次Bezier曲线为例，k=0时，就是灰色线段，k=1时，就是绿色线段，k=2就是蓝色线段，一直递推下去就是Bezier上的点(t)了。于是用de Casteljau算法很容易求出Bezier曲线上的任一点(t)的位置。换一种图示的方法表示这种递推关系：&lt;/p&gt;&#xA;&lt;img src=&#34;http://farm3.static.flickr.com/2708/4150209822_497420a903.jpg&#34; alt=&#34;2009-12-1 19-58-25.png&#34; height=&#34;178&#34; width=&#34;321&#34;/&gt;&#xD;&#xA;&lt;p&gt;这是用几何画板画的，很难看，解释一下。左边一列是原来(k=0)的控制顶点，第二列是(k=1)的控制顶点，以此类推。每个箭头表示两个点分别乘以1-t和t并加起来，得到右边的点。这样一直做到最后的点就是Bezier上的点(t).&lt;/p&gt;&#xA;&lt;p&gt;先看P0的系数为什么是&lt;img height=&#34;20&#34; src=&#34;http://latex.codecogs.com/gif.latex?(1-t)^n&#34; title=&#34;(1-t)^n&#34; width=&#34;60&#34;/&gt;，因为每次P0都是乘以(1-t)传到右边的点，这样一直传了n次到达最右端。仔细看一下就可以发现，最左边的点传递到最右边，是靠乘以一系列的t或1-t到达的，那么Pi的系数就是Pi走到最右边左右的&amp;quot;路&amp;quot;的系数之和。比如，P0只能一直走斜下的边，而且只有一条路，记住能不往左走，因此它的系数就是&lt;img height=&#34;20&#34; src=&#34;http://latex.codecogs.com/gif.latex?(1-t)^n&#34; title=&#34;(1-t)^n&#34; width=&#34;60&#34;/&gt;。那么P1的系数就是&lt;img height=&#34;21&#34; src=&#34;http://latex.codecogs.com/gif.latex?2t(1-t)^{n-1}&#34; title=&#34;2t(1-t)^{n-1}&#34; width=&#34;93&#34;/&gt;,因为它到最右边有两条路，且t和1-t的次数是一样的。可以发现每个Pi的每条路的t和1-t的次数都是一样的，而路的条数的系数很熟悉。没错，把上图逆时钟转90°就是&lt;a href=&#34;http://zh.wikipedia.org/wiki/%E6%9D%A8%E8%BE%89%E4%B8%89%E8%A7%92%E5%BD%A2&#34;&gt;杨辉三角&lt;/a&gt;了。&lt;/p&gt;&#xA;&lt;p&gt;杨辉三角有这样的特征：每个数字表示从顶点走下来到该点不同走法的数目，而且无论是哪条路走到该点，向左和向右的次数是一样的，等于该点的二次多项式展开系数。&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;1 &#xD;&#xA;1 1 &#xD;&#xA;1 2 1 &#xD;&#xA;1 3 3 1 &#xD;&#xA;1 4 6 4 1 &#xD;&#xA;1 5 10 10 5 1&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;到了这里，如果看懂了的话，我想已经证明了，剩下就是一些说明性言语了。数学美还没结束，见下图：&lt;/p&gt;&#xA;&lt;img src=&#34;http://farm3.static.flickr.com/2651/4149450537_f80aa00f3c.jpg&#34; alt=&#34;2009-12-1 20-32-14.png&#34; height=&#34;245&#34; width=&#34;376&#34;/&gt;&#xD;&#xA;&lt;p&gt;绿色线按顺序排列的点P0到P0n这n个点可以画出一条n次Bezier曲线，记为B1；蓝色的n个点也可以画出一条n次Bezier曲线；这两条曲线直接接起来，就是原来P0到Pn画出的n次Bezier曲线！神奇吧，它们居然有类似向量的性质。实际应用也是用这个性质，一般取t=1/2，将一条Bezier曲线变成两条小的，再继续分下去，当Bezier曲线足够小时就可以用线段代替曲线了。这个性质同样可以证明，但写到网上很麻烦就不写了，大家推荐好一点的数学画图软件，谢谢。数学有时很美。&lt;/p&gt;</description>
    </item>
    <item>
      <title>一道数学难题</title>
      <link>https://blog.pugwoo.com/posts/2009/%E4%B8%80%E9%81%93%E6%95%B0%E5%AD%A6%E9%9A%BE%E9%A2%98/</link>
      <pubDate>Sun, 22 Nov 2009 15:23:57 +0000</pubDate>
      <guid>https://blog.pugwoo.com/posts/2009/%E4%B8%80%E9%81%93%E6%95%B0%E5%AD%A6%E9%9A%BE%E9%A2%98/</guid>
      <description>&lt;p&gt;这道题在2007年11月20号想过，可能是来自于一道比较简单的题目，经过变形后我贴在我的网易博客上，今晚整理时再次看到，还是做不出，期盼高手。&lt;/p&gt;&#xA;&lt;p&gt;把一个圆等分成N个扇形，N&amp;gt;=2，用R&amp;gt;=2种不同的颜色给每个扇形着色，要求相邻的两个扇形颜色不同，每个扇形只着一种颜色。如果通过旋转该圆，两种着法可以重合的话，则这两种着法只算一种。要求求出f(N,R)的表达式，它表示可能的着法的个数。&lt;/p&gt;&#xA;&lt;p&gt;一些特例：f(2,2)=1, f(3,2)=0, f(4,2)=1, f(2,3)=3, f(3,3)=1等。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
