Python之枚举法解数学题

作为一名初二的学生,数学问题总是困扰着我。尤其是随着我们预科考试(也就是我们两所最好的高中提前一年招生和挑选尖子生的考试)的临近,我面临的数学问题变得越来越麻烦。

[En]

As a student in the second year of junior high school, math problems always bother me. Especially as our preparatory class exam (that is, the exam for recruiting students in two of our best high schools one year in advance and selecting top students) is approaching, the math problems I face are becoming more and more troublesome.

这不,麻烦来了:

Python之枚举法解数学题

如图,在正方形ABCD中,E在射线BC上,连接AE、CE,则DE/AE的最小值为__.

拿到这题,信心满满的我从容淡定地设AB:CE为1:x,即AB=k,CE=xk,于是原式(设为y)=[k^2+(xk)^2]^0.5/[k^2+(k+xk)^2]^0.5(这里的”^”代表乘方)。这不就只要求[k^2+(xk)^2]/[k^2+(k+xk)^2]的最小值嘛!这是一个求代数式最小值的问题。

可是……越看越不对劲。这个代数式是个分式,而我们常接触的同类型题涉及的都只是整式。凭着我对六本初中数学书的印象,我不禁提出疑问:这真的是初中的内容吗?书上似乎只字未提吧?

然而,本着一个辛勤工作的老黄牛的精神,我花了几个小时在这个问题上毫无结果。最后,我放弃了。

[En]

However, in the spirit of an old scalper who worked hard, I spent hours there fruitlessly on the subject. Finally, I gave up.

但也许是梦里来的灵感,第二天早上,我突然想到:何不通过一个Python程序来逐个列举,从中选择近似值呢?

于是第一个节目问世了:

[En]

So the first program came out:

k=1
answer=100
myx=0
for x in range(10):
    y=(k**2+(x*k)**2)**0.5/(k**2+(k+x*k)**2)**0.5
    if y<answer:
        answer=y
        myx=x
print(answer,myx)

输出结果:

0.6324555320336759 1

唉,怎么越看越不对劲?

最后,我终于发现问题的所在:像这样遍历x,它的值都是整数,而事实上最小的y所对应的x不一定是整数。

那好,我们改:

k=1
answer=100
myx=0
for x in range(10000):
    x=x/1000
    y=(k**2+(x*k)**2)**0.5/(k**2+(k+x*k)**2)**0.5
    if y<answer:
        answer=y
        myx=x
print(answer,myx)

输出:

0.6180339889095493 0.618

这个总没有问题了吧?还是有问题。你怎么能确定x的区间?

这个问题看似很致命,但并非完全不可解。我们可以大致推断,y的变化趋势应该是先下降后上升或先上升后下降(这个推理对我来说是本能的,以至于我自己都无法详细解释过程,但确实可以推理得到这个结论),而既然是求最小值,那自然是前者。因此,由于x从o.618到1是在增加,所以x一定在0.618或其以下,而这些数显然我们已经遍历到了(至少在某个精度上)。接下来,我们所需要的只是提高精度,以此来得到更接近真实值的结果,并凭借它猜测正确答案。

最终,在较高的精度下(程序与前面大致相同,只是加大了遍历的数值与x缩小的倍数,在此不列出),我们得到结果:

0.6180339887498948 0.618034

我们都知道,黄金分割比的小数点后前65位等于0.6180339887498948482045868343656381177203091798057628621354486227,这个数的前面几位和我们遍历的结果完全吻合。我们有理由相信,答案是黄金分割比(5^0.5-1)/2。于是,我们完美地用Python解决了这个问题。

当然,后来我们老师为我们讲解了这题不需要程序的解决方法:设法将式子中未知部分化为x+a/x的形式,这个式子永远不会小于2a^0.5。这样,我们就可以求得最值了。

Original: https://www.cnblogs.com/godforever/p/16428461.html
Author: GodForever
Title: Python之枚举法解数学题

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/499175/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 一分钟带你了解Pygame

    一.Pygame是什么 Pygame 是跨平台 Python 模块,专为电子游戏设计。包含图像、声音。创建在 SDL 基础上,允许实时电子游戏研发而无需被低级语言 二.Pygame…

    Python 2023年9月21日
    038
  • python 条形图 负值_Matplotlib中条形图显示负值的问题

    我正在尝试使用Matplotlib创建一个包含正值和负值的条形图,但在使负值显示在Y轴上时遇到了困难。当代码运行时,它将正确地显示所有正值(用红色标记),但负数根本不显示。 相反,…

    Python 2023年9月4日
    041
  • pandas.DataFrame.to_csv实用方法

    pandas.DataFrame.to_csvDataFrame.to_csv( path_or_buf = None , sep = ‘,’ , na_r…

    Python 2023年8月7日
    031
  • python使用正则表达式

    一、使用正则表达式步骤 1、寻找规律; 2、使用正则符号表示规律; 3、提取信息,如果每一个字符都能匹配,则匹配成功;一旦有匹配不成功的字符则匹配失败。 二、正则表达式中常见的基本…

    Python 2023年8月1日
    032
  • python测试框架之pytest (四)fixture

    一 引言在测试过程中,通常会包括三个步骤,前置、执行测试、后置,pytest框架中,提供了类似的函数。 模块级别:setup_module (前置) / teardown_modu…

    Python 2023年9月10日
    029
  • 拯救Python初学者的几个项目实战总结

    Python 做小游戏 实例一:24点游戏,源码解读下载 项目名称:经典趣味24点游戏程序设计(python) 实例二:五子棋游戏,源码下载 项目名称:python大作业 五子棋 …

    Python 2023年9月19日
    028
  • 上周热点回顾(11.21-11.27)

    热点随笔: · Chrome 103支持使用本地字体,纯前端导出PDF优化 (葡萄城技术团队)· 电视剧里的代码真能运行吗? (Crossin先生)· 新零售SaaS架构:多租户系…

    Python 2023年10月14日
    044
  • pandas创建及读取excel文件

    将DataFrame数据写入excel文件。 没有限制时,会自动添加index。 用字典创建时的key则自动为column。 如果想去掉自动生成的index,可以用set_inde…

    Python 2023年8月8日
    051
  • 第14章 记分

    14.1 添加play按钮 1、创建Button类 导入pygame.font,让pygame能够将文本渲染到屏幕上。 初始方法__init__()最后需要接受一个对象为文本内容(…

    Python 2023年9月25日
    038
  • AI驱动的京东端到端补货技术建设实践

    导读:自动化是嵌入到整个智能供应链Y的基因里去的,我们服务的一个愿景是希望通过自动化技术实现供应链全链条的降本提效。本文将分享京东如何利用AI驱动端到端补货建设,包括以下几大方面内…

    Python 2023年10月28日
    033
  • 利用LSTM实现预测时间序列(股票预测)

    目录 1. 作者介绍 2. tushare 简介 3. LSTM简介 * 3.1 循环神经网络 (Recurrent Neural Networks) 3.2 LSTM网络 &#8…

    Python 2023年7月31日
    041
  • pycharm安装pygame

    pycharm成功安装pygame后,仍然出现无法找到pygame模块错误的解决方案记录2021-05-31 问题描述 解决方案记录 * 1.先卸载掉原有的pygame 2.找到a…

    Python 2023年9月20日
    043
  • python flask使用蓝图渲染模板直接显示html代码问题

    问题描述: 跟着文档示例想简单显示一个html页面的,结果渲染出来的是html源码。。。看着输出的内容想着应该是没有识别出是html代码的原因,对比html页面的response发…

    Python 2023年8月12日
    049
  • pandas10minnutes_中英对照01

    本次主要讲以下三部分:1.Object creation(对象创建)2.Viewing data(查看数据)3.Selection(筛选) 导入包 import numpy as …

    Python 2023年8月16日
    036
  • 【Python】matplotlib之折线图的各种样式和画法

    上述图的完整代码如下: from numpy import * import numpy as np import pandas as pd import matplotlib.p…

    Python 2023年8月1日
    038
  • 更改pip镜像源的方法

    http://pypi.douban.com/simple/ 豆瓣 http://mirrors.aliyun.com/pypi/simple/ 阿里 http://pypi.hu…

    Python 2023年8月2日
    055
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球