世界上最简单的不可能的问题

(这是一个再版的克利夫角有史以来的第二1990年冬MathWorks通讯).

有一天,我和MathWorks的几个同事共进午餐,我提出了以下问题:

“我在想两个数字。它们的平均值是3。数字是多少?”

现在停一分钟,在你继续读下去之前,对我的问题给出你自己的答案。

当然,我的问题没有“正确”答案。解不是唯一的。问题是“决心不足”或“姿势不当”。

和我共进午餐的大多数人都不给我答案。当我追问他们时,其中一个人最后说:“两个数字都可以是3。”另一个人说:“是的,但一个可以是6,另一个是0。我希望他们会这么说。从某种意义上说,这两个答案都“不错”。没有人说“23和- 17”或者“2.71828和3.28172”。这些也都是正确的,但没有那么“好”。

这和MATLAB有什么关系?MATLAB不会回避不可能的问题。它能解决这个问题。而且它没有抱怨,就像我午餐时的伙伴一样。

这个问题自然是一个矩阵问题。这是一个“系统”

A*x = b

一个“联立”线性方程在两个未知数。矩阵是

A = [1/2 /2]

右边是

B = 3

MATLAB的反斜杠可以解决这样的方程。打字

x = A\b

告诉我的

X = 6 0

答案是一个2乘1的矩阵表示的“好”答案之一,我期待。“\”的帮助条目的后半部分给出了该解决方案的出处。

如果A是一个m × n矩阵且m <或> n, B是一个有m个分量的列向量,或一个有几个这样的列的矩阵,那么X = A\B是过定或过定方程组A*X = B的最小二乘解。A的有效秩k由旋转的QR分解确定。计算一个解X,它每列最多有k个非零分量。如果k < n,这通常不是与PINV(A)*B相同的解。

在我们这里,我们做到了M = 1而且N = 2.我的矩阵是满秩的,但最多是K = 1.所以我们得到了一个最多只有一个非零分量的解。甚至这也不是唯一的。有两个解只有一个非零分量,金宝搏官方网站[6 0) '而且[0 6]”.我们得到非零分量的下标最小的那个。

我的另一个“好”解决方案呢?这来自于伪逆。

x = pinv(A)*b

生产

X = 3.0000

(事实上,我得到的是3.000而不是没有后面0的整数3,这表明存在一些舍入错误,我没有其他“漂亮”的解决方案,但如果你真的想要,你可以自己去追求。)

在所有可能的解决方案中金宝搏官方网站A*x = b,这个,X = [3 3] ',是“最短的”。它最小化规范(x).事实上x = A\b

Norm (x) = 6.0000

x = pinv(A)*b

Norm (x) = 4.2426

最后,我们有了唯一性。在所有可能的解决方案中金宝搏官方网站A*x = b,也就是最小化的那个规范(x)是独一无二的。

所以,MATLAB不仅解决了这个问题,它给了我们两个不同的解决方案,金宝搏官方网站x = A\b而且x = pinv(A)*b.我认为第一个解决方案,A\b = [6 0]',是“好看”,因为它“简单”;也就是说,它有最少的非零分量。我认为第二个解决方案,pinv(A)*b = [3 3]',是“nice”,因为它“简短”和“独特”。其他可能的解决方案都没有这么好的特点。金宝搏官方网站

这个问题,“给定两个数的平均值,求出这两个数”,抓住了许多不适定和未定问题的本质。计算机断层扫描技术是通过x射线、磁共振和其他扫描仪生成图像来拯救生命的业务,它实际上是这个问题的一个成熟版本。额外的约束,如最小范数或最少非零分量,或“好看的图片”,必须指定,使其成为一个合理的数学和计算任务。

顺便说一句,我第一次知道这个“世界上最简单的不可能问题”是来自唐·莫里森,他也是新墨西哥大学计算机科学系的创始人,在Cooley和Tukey之前发明了快速傅里叶变换,几年前,他让我搬到了新墨西哥州。唐,谢谢你所做的一切。

我必须承认,这篇关于在MathWorks午餐上提出一个问题的轶事是我在问题真正发生之前写的。实际实验的结果更加有趣。正如我所预料的,每个人都抱怨我的问题。然后一个人说"9和-3 "她显然明白了这个主意。另一个人说“3和1”。幸运的是,他不负责MATLAB的任何数字部分。但有三个人说是2和4。这当然是另一个“不错”的答案,但它所满足的约束更为微妙。它们要求解具有不同但接近平均值的整数分量。 It's harder to state and compute in MATLAB without just giving the answer.

好,现在我想出三个平均值为$\pi$的数。这些数字是什么?




发布与MATLAB®R2018b

|

评论

如欲留言,请点击在这里登录您的MathWorks帐户或创建一个新帐户。