这道小学六年级的数学题,恕我直言没几个人会做
今天网上冲浪的时候突然看到一道小学六年级的数学题,如上图所示,求阴影部分的面积。
我下意识就想到了微积分,这不就建立坐标系,求出交点,计算积分就行了嘛。转念一想,小学生哪里会积分,这道题一定有简单的解法。
经过一番努力,我尝试出了一共两种精确解法和一种近似解法,但都超出了小学生的理解范畴。
首先我们把图左右翻转一下,方便建立坐标系,如下图所示:
积分方法
首先联立半圆和对角线的方程:
解出交点E的坐标是
所以可以直接求下面积分,得到要求的阴影面积:
利用简单的高等数学知识,可以解出答案是下面这样的,约等于1.252。
但是小学生肯定不会积分呀,就算高中生大多数都不会!
间接计算
既然我们不方便算这个不规则图形的面积,我们可以计算其他规则图形的面积,然后加减之后间接得到答案。
图中阴影部分面积其实等价于三角形ACE+梯形BOCE-扇形BOE,而这三部分其实都非常好算。
因为E的坐标是
这个方法初中生都会做了!但是对于小学生来说难度还是有点大了。
蒙特卡洛采样方法
如果往第一象限正方形内随机抛撒若干豆子,然后看掉落在阴影部分里的豆子所占的比例,那么就可以近似估计出阴影部分的面积了,这就叫蒙特卡洛采样。
那我们可以随机生成两个随机数,作为采样点的坐标,然后判断是否在阴影部分里,重复上述过程,记录次数就行了。
我这里写了C++和CUDA两个实现,CUDA可以并行采样,速度快很多。
执行的话,C++保存为test.cpp
,然后执行g++ test.cpp -o test
和./test
。CUDA保存为test.cu
,然后执行nvcc test.cu -o test
和./test
。
实测CUDA相同时间内可以采样的次数大约是100倍左右,主要受到原子写操作的局限,不然可以达到1000倍左右的加速。
但是小学生会CUDA吗?显然不可能。
C++实现
#include <iostream>
typedef unsigned long long int ull;int main() {srand(time(NULL));ull res = 0;ull cnt = 1e8;for (ull i = 0; i < cnt; ++i) {double x = double(rand()) / RAND_MAX;double y = double(rand()) / RAND_MAX;if (x * x + (y - 1) * (y - 1) > 1 && x + 2 * y - 1 < 0) {res += 1;}}printf("%.5f\n", res * 16.0 / cnt);return 0;
}
CUDA实现
#include <iostream>
#include <chrono>
#include <curand_kernel.h>
typedef unsigned long long int ull;__global__ void monte_carlo_kernel(ull* res, ull cnt, const int seed) {ull i = blockIdx.x * blockDim.x + threadIdx.x;if (i >= cnt) return;curandStatePhilox4_32_10_t state;curand_init(seed, i, 0, &state);double2 rand = curand_uniform2_double(&state);double x = rand.x;double y = rand.y;if (x * x + (y - 1) * (y - 1) > 1 && x + 2 * y - 1 < 0) {atomicAdd(res, 1);}
}void launch_monte_carlo(ull* res, ull cnt, cudaStream_t& stream) {ull grid_dim = cnt >> 10;monte_carlo_kernel<<<grid_dim + 1, 1024, 0, stream>>>(res, cnt,std::chrono::duration_cast<std::chrono::microseconds>(std::chrono::system_clock::now().time_since_epoch()).count());
}int main() {ull* res;cudaMallocManaged(&res, sizeof(ull));res[0] = 0;ull cnt = 1e10;cudaStream_t stream;cudaStreamCreate(&stream);launch_monte_carlo(res, cnt, stream);cudaDeviceSynchronize();printf("%.5f\n", res[0] * 16.0 / cnt);cudaFree(res);return 0;
}
标准方法
其实标准的小学生解法不需要建坐标系,只需要如下图所示,做4条辅助线就行。
很容易证明,辅助线将三角形ACD划分出来的5个小三角形是全等的。
那么阴影面积就等于正方形AOBD减去四分之一圆BOD,再减去最右侧的弧边三角形ADE。而弧边三角形ADE面积等于三角形ACD减去三角形BCE,再减去扇形BDE。
所以问题的关键就是求角DBE的大小,因为小三角形的边长可以轻易求出,所以最终答案很好算:
可以发现和之前高等数学得到的结果形式并不同,其实数值是一样的,所以我们得到了一个等式:
这个可能看起来不是那么直观,但确实是成立的,根据反三角函数恒等式
总结与拓展
其实这道题小学生也没几个人能做出来,就算给我们做也得费老鼻子劲,还不一定算的对。
最近还看到了很多类似的趣图,这里分享给大家,闲暇时间可以做了玩玩。
可以在评论区说出你的答案哦。
这道小学六年级的数学题,恕我直言没几个人会做相关推荐
- 小学毕业学计算机会计行吗,女孩子小学六年级唸到一半没毕业,打了几年工,现在17岁了,可以学计算机,会计什么的吗?...
女孩子小学六年级唸到一半没毕业,打了几年工,现在17岁了,可以学计算机,会计什么的吗?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起 ...
- 小学六年级,自学计算机,会爬虫,搞崩过学校网站,还有女朋友...
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 我在上周遇到一个很奇怪的读者,他的头像是电影<V字仇杀队> ...
- 小学六年级能用计算机器,小学六年级信息技术测试题
小学六年级信息技术测试题 导读:小编根据大家的需要整理了一份关于<小学六年级信息技术测试题>的内容,具体内容:信息技术,缩写IT,是主要用于管理和处理信息所采用的各种技术的总称.以下是小编 ...
- 小学六年级上册计算机教学总结,小学六年级上册信息技术期末教学工作总结范文...
小学六年级上册信息技术期末教学工作总结范文 日子总是像从指尖流过的细沙,在不经意间悄然滑落,回顾过去这段教学工作,我们都取得了很大的进步,是时候静下心来好好写写教学总结了.那么什么样的教学总结才是好的 ...
- 小学六年级的读者,自学计算机,会爬虫,搞崩过学校网站,还有 Girlfriend.....
大家好,我是小林. 我之前遇到一个很奇怪的读者,他的头像是电影<V字仇杀队>里的面具. 感觉上去是一个黑客爱好者,不是一个好惹的家伙,小林看了瑟瑟发抖. 结果,他来了这么一句,「哥哥,在吗 ...
- 六年级上计算机课程计划书,六年级学习计划书_小学六年级学习计划范文
想要更高效地学习,大家可以提前制定好一份学习计划.下面是小编整理的六年级学习计划书,欢迎大家参考! 1.我认为,我目前最大的毛病就是上课不认真听讲.总是在课堂上摆着一个认真听讲的架子,但脑子却早已想别 ...
- 奥数计算机竞赛试题,小学六年级奥数题计算机书
第1篇:小学六年级奥数题计算机书 如何在充满激烈竞争的竞赛中取得好的成绩,大家最为关注的还是学习方法和复习资料.数学网为大家提供了六年级奥数题计算机书,希望能够真正的帮助到大家. 书架的第一层放有4本 ...
- 小学六年级计算机知识点总结怎么写,小学六年级信息技术教学工作总结范文(精选4篇)...
小学六年级信息技术教学工作总结范文(精选4篇) 时间的脚步是无声的,它在不经意间流逝,在过去这段时间的教学中,我们一定收获不少,请务必好好写一份教学总结,记录好这段经历.但是你知道怎样才能写的好吗?下 ...
- 小学六年级下册计算机计划,小学六年级科学下册教学计划(通用5篇)
小学六年级科学下册教学计划(通用5篇) 时间过得飞快,我们又将学习新的知识,有新的感受,是时候写一份详细的教学计划了.你知道领导想要看到的是什么样的教学总结吗?以下是小编收集整理的小学六年级科学下册教 ...
- 六年级计算机应用计划,2016年小学六年级信息技术教学计划
(800字)
JE范文为您整理.编辑<2016年小学六年级信息技术教学计划 (800字)>一文,为了您更好完成一篇精彩的范文,JE范文还为你准备与<2016年小学六年级信息技术教学计划 (800字 ...
最新文章
- OpenCV Mat数据类型及位数总结
- 一招教会你处理Flutter中的数据
- Navicat Premium 11.1.9在Linux系统下的安装
- Pat乙级 1034 有理数四则运算
- 创建WCF第一个应用程序
- Unity3d烘焙常见黑斑解决方法(适用5.x、2017、2018、2019版)
- 数据可视化实现技术(canvas/svg/webGL)
- Nginx系列二:(Nginx Rewrite 规则、Nginx 防盗链、Nginx 动静分离、Nginx+keepalived 实现高可用)...
- Vue 3源码剖析,看这篇就够了
- java传入数据库生成柱状图_Java读取数据库数据生成柱状图
- 阅读《大型网站技术架构》前两章心得体会及总结
- RabbitMQ 如何保证消息的可靠性
- Apache Flink 零基础入门(三):DataStream API 编程
- java转码工具_java转码工具native2ascii
- 老Java程序员花一天时间写了个飞机大战,很舒服!
- C/C++获取CPU等硬件信息屏幕截图
- 根据url批量下载图片
- 程序的优化 文字的减法
- NFPA-持续为美国贡献防火国家规范的非政府协会
- HTML学生作业网页:使用HTML+CSS技术实现非遗文化网页设计题材【汉服文化—共12个页面】