返回顶部
首页 > 资讯 > 后端开发 > Python >怎么用Python求解阿基米德分牛问题
  • 417
分享到

怎么用Python求解阿基米德分牛问题

2023-07-05 10:07:54 417人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

今天小编给大家分享一下怎么用python求解阿基米德分牛问题的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。题目大意问&nbs

今天小编给大家分享一下怎么用python求解阿基米德分牛问题的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

题目大意

 太阳神有一牛群,由白、黑、花、棕四种颜色的公、母牛组成,其间关系如下,求每种牛的个数。

公牛中,白牛多于棕牛,二者之差为黑牛的1/2+1/3;黑牛多于棕牛,二者之差为花牛的1/4+1/5;花牛多于棕牛,二者之差为白牛数的1/6+1/7

母牛中,白牛是全体黑牛的1/3+1/4;黑牛是全体花牛的1/4+1/5;花牛是全体棕牛的1/5+1/6;棕牛是全体白牛的1/6+1/7

如果用字母x0,x1, x2 , x3分别表示白、黑、花、棕各色的公牛数;用y0,y1,y2,y3分别表示白、黑、花、棕各色母牛数,则得8 个未知数的如下7 个方程

怎么用Python求解阿基米德分牛问题

这个题其实是毫无难度的,但非要用Python,那么难点主要如何优雅地表达这个过程,这里选用的是sympy符号计算。

所以第一步,先给定一些符号

import sympyx0,x1,x2,x3 = sympy.symbols("x0,x1,x2,x3")y0,y1,y2,y3 = sympy.symbols("y0,y1,y2,y3")x = [x0,x1,x2,x3]y = [y0,y1,y2,y3]

sympy求解

然后将阿基米德分牛问题转化为Python代码,其优雅之处在于,这些分数的构建遵循自然数递增的规律,故可通过循环来生成,非常便捷。

frac = lambda x : sympy.Rational(1,x)fs = []for i in range(3):    fs.append(x[i]-x[3]-(frac(2*i+2)+frac(2*i+3))*x[i+1])for i in range(4):    ind = (i + 1) % 4    fs.append(y[i]-(frac(i+3)+frac(i+4))*(x[ind]+y[ind]))

这样就得到了待求方程组

>>> for f in fs: print(f)...x0 - 5*x1/6 - x3x1 - 9*x2/20 - x3x2 - 55*x3/42-7*x1/12 + y0 - 7*y1/12-9*x2/20 + y1 - 9*y2/20-11*x3/30 + y2 - 11*y3/30-13*x0/42 - 13*y0/42 + y3

但是,8个未知数7个方程,显然没有唯一解,考虑到x3貌似是最小的值,所以最后希望用x3来表示其他数。

res = sympy.solve(fs, x[:3]+y)

结果

查看一下结果

for key in res:    print(sympy.latex(key), "&=", sympy.latex(res[key]), r"\\")

怎么用Python求解阿基米德分牛问题

这道题到这里基本上就算解完了,但是牛至少得是个整数,所以接下来要做的是求解分母的最小公倍数。

在sympy中,对于一个分数r,r.p为分子,r.q为分母;lcm可求解其最小公倍数。

denominators = [(v/x3).q for v in res.values()]x3Res = sympy.lcm(denominators)# 32859792

然后让将x3的值加入fs,

fs.append(x3-x3Res)res2 = sympy.solve(fs, x+y)for key in res2:    print(sympy.latex(key), "=", res2[key], r"\\")

结果如下

x0=76379457
x1=52223598
x2=43030680
x3=32859792
y0=48646815
y1=31170942
y2=26238080
y3=38698608

这些牛加一起有349247972头,全世界大概有10万亿头,看来太阳神的牛还是比较多的。

以上就是“怎么用Python求解阿基米德分牛问题”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网Python频道。

--结束END--

本文标题: 怎么用Python求解阿基米德分牛问题

本文链接: https://lsjlt.com/news/351135.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么用Python求解阿基米德分牛问题
    今天小编给大家分享一下怎么用Python求解阿基米德分牛问题的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。题目大意问&nbs...
    99+
    2023-07-05
  • 利用Python求解阿基米德分牛问题
    目录题目大意sympy求解结果题目大意 问 太阳神有一牛群,由白、黑、花、棕四种颜色的公、母牛组成,其间关系如下,求每种牛的个数。 公牛中,白牛多于棕牛,二者之差为黑牛的1...
    99+
    2023-03-09
    Python阿基米德分牛问题 Python阿基米德分牛
  • Python怎么解决阿基米德分牛问题
    阿基米德分牛问题是一个数学问题,它的解法并不依赖于编程语言。下面是一种解决阿基米德分牛问题的数学方法:1. 首先,设定一个初始的牛的...
    99+
    2023-08-15
    Python
  • 怎么用Python/R语言分别解决金字塔数求和问题
    本篇内容介绍了“怎么用Python/R语言分别解决金字塔数求和问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、前N阶乘求和阶乘是基斯顿...
    99+
    2023-06-29
  • 怎么用Python解决Excel问题
    本篇内容介绍了“怎么用Python解决Excel问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!「问题说明」这次要处理的excel有两个s...
    99+
    2023-07-06
  • 利用Python/R语言分别解决金字塔数求和问题
    目录前言1、前N阶乘求和1.1 图解问题1.2 算法流程1.3 代码实现1.4实验小结2、金字塔数求和运算2.1 图解问题2.2 算法流程2.3 代码实现2.4 实验小结总结前言 此...
    99+
    2024-04-02
  • python线程池并发请求数据问题怎么解决
    在Python中,可以使用concurrent.futures模块中的ThreadPoolExecutor类来创建线程池,并发处理请...
    99+
    2023-10-26
    python
  • PHP怎么用回溯算法求解子集问题
    本篇内容介绍了“PHP怎么用回溯算法求解子集问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!回溯算法实际上一个类似枚举的搜索尝试过程,主要...
    99+
    2023-06-20
  • 怎么用C++解决分糖果问题
    本篇内容主要讲解“怎么用C++解决分糖果问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用C++解决分糖果问题”吧!分糖果问题There are N children ...
    99+
    2023-06-20
  • 怎么解决python-redis-lock分布式锁的问题
    本篇内容介绍了“怎么解决python-redis-lock分布式锁的问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!问题背景在使用cele...
    99+
    2023-06-25
  • python未解析的引用问题怎么解决
    Python未解析的引用问题可能有多种原因,以下是一些常见的解决方法: 检查引用的模块是否已经安装:如果使用的是第三方模块,可以...
    99+
    2023-10-25
    python
  • 怎么用iframe设置代理解决ajax跨域请求问题
    本篇内容介绍了“怎么用iframe设置代理解决ajax跨域请求问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有...
    99+
    2024-04-02
  • python多线程请求带参数的多个接口问题怎么解决
    这篇文章主要介绍了python多线程请求带参数的多个接口问题怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python多线程请求带参数的多个接口问题怎么解决文章都会有所收获,下面我们一起来看看吧。多线程...
    99+
    2023-07-05
  • 在.Net Framework应用中请求HTTP2站点的问题怎么解决
    这篇文章主要介绍“在.Net Framework应用中请求HTTP2站点的问题怎么解决”,在日常操作中,相信很多人在在.Net Framework应用中请求HTTP2站点的问题怎么解决问题上存在疑惑,小编查阅了各式资料,...
    99+
    2023-07-02
  • Security框架中怎么使用CorsFilter解决前端跨域请求问题
    本篇内容主要讲解“Security框架中怎么使用CorsFilter解决前端跨域请求问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Security框架中怎么使用CorsFilter解决前端跨...
    99+
    2023-06-25
  • Node.js中使用fetch按JSON格式发post请求的问题怎么解决
    本文小编为大家详细介绍“Node.js中使用fetch按JSON格式发post请求的问题怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“Node.js中使用fetch按JSON格式发post请求的问题怎么解决”文章能帮助大家解决疑惑...
    99+
    2023-07-05
  • 怎么使用php解决大文件分片上传问题
    小编给大家分享一下怎么使用php解决大文件分片上传问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前提首先, 上传超大的文件, 前端要和后端相互配合文件上传要使...
    99+
    2023-06-20
  • 租用阿里云服务器被攻击怎么解决问题
    首先,要加强对公司员工的网络安全意识教育。只有加强对员工的网络安全教育,才能够提高员工对网络安全的认识,从而减少公司的网络安全风险。同时,也需要加强员工对自己电脑的安全防护,比如安装杀毒软件、及时更新操作系统补丁等,以减少黑客攻击的风险。 ...
    99+
    2023-10-28
    阿里 解决问题 服务器
  • 怎么在python中使用os.listdir()方法解决乱码问题
    本篇文章给大家分享的是有关怎么在python中使用os.listdir()方法解决乱码问题,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Python的优点有哪些1、简单易用,与...
    99+
    2023-06-14
  • 怎么使用Python贪心算法解决集合覆盖问题
    本文小编为大家详细介绍“怎么使用Python贪心算法解决集合覆盖问题”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用Python贪心算法解决集合覆盖问题”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。在《算...
    99+
    2023-06-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作