手算开方大法

今天(2018/07/26)在微信公众号《玉刚说》看到这样一则故事

那年盛夏
某所高校
教室里,男生和女生
男生对女生有意,可是却不知道女生的心思
唯唯诺诺
男生对女生说:hi,做我女朋友好吗?
女生:呃。。。
女生不忍直接拒绝男生
这时她拿出手机
纤纤玉指轻盈地舞动
接着,她说:
如果你能算出 27157793606596 的平方根
我就答应你
男生面露难色:这。。。能用计算器吗?
女生幸灾乐祸:不能,最多给你纸和笔
因为女生知道没人可以做到
这应该可以让男生知难而退了吧
万万没想到
最终她们还是在了一起
因为女生不知道的是
男生在初中就掌握了徒手开平方的技巧!
27157793606596 的平方根就是 5211314

这个故事告诉我们:知识就是力量,哪怕是泡妞

于是我就好奇了,怎么手算开方呢???查阅资料,似有所悟。归纳如下

以数字270400为例,

  1. 将被开方数的整数部分从个位起向左每隔两位划为一段,分成几段,就表示平方根是几位数。270400可分为三段,第一二三段依次是,27|04|00,同时表明开方结果是个三位数。
  2. 将第一段27开方,其整数部分为5,表明开方结果最高位数是5
  3. 将第一段的数减去这最高位数的平方(27-5*5=2),再把被开方数的第二段(04)拖下来,组成第一个余数(204)。
  4. 将第一个余数除以求得的开方结果的最高位数的20倍(204/(5*20)=2),所得的最大整数作为试商(2)。如果这个整数部分大于或者等于10,就改用9作试商,如果第一个余数小于第一位数字乘以20的积(很明显204>5*20),则得试商0。
  5. 将最高位数的20倍加上试商的和乘以这个试商((5*20+2)*2=204),如果所得的积小于或等于余数(刚好相等),试商就是平方根的第二位数;如果所得的积大于余数,就把试商减小再试。所以次高位数为2
  6. 类似地,重复步骤2~5,计算第二个余数:04-2*2=0,第三段是00,则第二个余数就是0;进而试商也是0,((2*20+0)*0)=0),进而开方结果的个位数为0
  7. 综上所述,数字270400的开方结果是...,不说了,我爱你。
### 使用最大最小距离法进行聚类的动计 #### 最大距离法(完全连接) 在最大距离法中,两个簇之间的距离定义为这两个簇中最远两点间的欧几里得距离。这意味着要找到属于两个不同簇的点的最大距离。 假设有一组二维数据点集合 \( P = \{p_1, p_2, ..., p_n\} \),其中每个点 \( p_i=(x_i,y_i) \)[^1]。初始状态下,每个点都视为独立的一个簇。随着法推进,最近的两个簇会不断合并直到满足特定条件为止。 对于任意两簇 C 和 D ,它们之间的距离 d(C,D) 定义为: \[ d(C,D)=max_{c∈C,d∈D}\| c-d \| \] 即求解所有可能配对中的最大值作为这两簇的距离。 #### 最小距离法(单连接) 相反地,在最小距离法中,两个簇之间的距离被定义为其成员间最短路径长度——也就是所谓的“单链”。这意呈着寻找来自不同群集中彼此最为接近的一对样本点,并以其间距衡量整体关联程度。 同样设存在一组离散型观测对象组成的群体 S={s₁,s₂,…,sn}, 对于任选二子集 A,B ⊆S , 则有: \[ d(A,B)=min_{a∈A,b∈B}\| a-b \| \] 此表达式表明应选取能使上述公式取极小值得那一对元素来表征整个类别间隔大小。 #### 示例过程 考虑简单情况下的四个二维平面上的数据点 { (0, 0), (1, 1), (-1, -1), (5, 5)} 。按照以下流程执行操作: 1. **初始化**:将每一个单独的数据点作为一个簇。 ```plaintext Cluster Set: {{(0,0)}, {(1,1)}, {(-1,-1)}, {(5,5)}} ``` 2. **计簇间距离**:分别采用最大/最小距离准则评估各组合并可能性;记录下当前最小或最大的那个选项准备下一步处理。 3. **更新簇列表**:依据第二步所得结果调整现有分组状态,即将选定的一对合并且移除旧项加入新实体至最新版cluster set 中去。 4. **重复迭代**:持续循环以上动作直至达到预设终止标准比如只剩下一个超级团块或者形成了固定数量的小团体等情形结束运。 在这个例子中,如果应用的是最大距离法则会在早期阶段倾向于保持较远处的对象各自分离而不急于将其纳入更大规模的整体之内;反之若是采取了最小距离策略则更有可能迅速促成局部区域内的紧密联合现象发生。 ```python import numpy as np from scipy.spatial.distance import pdist, squareform points = [(0, 0), (1, 1), (-1, -1), (5, 5)] dist_matrix_max = squareform(pdist(points, metric='chebyshev')) # For complete linkage dist_matrix_min = squareform(pdist(points)) # Default is Euclidean distance for single linkage print("Distance Matrix using Maximum Distance Method:\n", dist_matrix_max) print("\nDistance Matrix using Minimum Distance Method:\n", dist_matrix_min) ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

月小水长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值