python笔记--使用solve算出黄金分割比近似值
参考百度百科: 黄金分割是指将整体一分为二,较大部分与整体部分的比值等于较小部分与较大部分的比值,其比值约为0.618。 这个比例被公认为是最能引起美感的比例,因此被称为黄金分割。
因此列方程: (设x为较大部分, y为较小部分)
其中: x + y = 1
使用python解决问题时要先下载sympy模块, 复制下面命令进入cmd中
py -m pip install sympy -i https://pypi.douban.com/simple/
若要提示你更新pip包, 复制下面命令:
py -m pip install --upgrade pip -i https://pypi.douban.com/simple/
1. 导入sympy模块与math模块:
import sympy as sp
from math import *
2. 定义两个符号变量x, y
x, y = sp.symbols('x y')
3. 定义方程组: (要注意转换成 '表达式=0' 的形式, 我们取左边的表达式参与运算即可)
fx = x / (x + y) - y / x
fx2 = x + y - 1
4. 使用solve解方程:
result_list = sp.solve([fx, fx2], [x, y])
5. 我们打印看看结果是什么:
print(result_list)
结果如下:
[(-1/2 + sqrt(5)/2, 3/2 - sqrt(5)/2), (-sqrt(5)/2 - 1/2, sqrt(5)/2 + 3/2)]
其中对于每一个元组来说左边部分为x的值, 右边部分为y的值, 我们尝试使用math模块把他转换成小数形式:
x1 = eval(str(result_list[0][0]))
y1 = eval(str(result_list[0][1]))
x2 = eval(str(result_list[1][0]))
y2 = eval(str(result_list[1][1]))
输出打印结果:
print(f'x1={x1}')
print(f'y1={y1}')
print(f'x2={x2}')
print(f'y2={y2}')
结果为:
x1=0.6180339887498949
y1=0.3819660112501051
x2=-1.618033988749895
y2=2.618033988749895
又因为x与y都大于0, 所以要增加下面代码:
result = [(x1, y1), (x2, y2)]
for x, y in result:if x > 0 and y > 0:print('满足条件的值:')print(f'x={x}')print(f'y={y}')
最终结果为:
满足条件的值:
x=0.6180339887498949
y=0.3819660112501051
6. 所用代码如下:
import sympy as sp
from math import *x, y = sp.symbols('x y')
fx = x / (x + y) - y / x
fx2 = x + y - 1
result_list = sp.solve([fx, fx2], [x, y])
print(result_list)
x1 = eval(str(result_list[0][0]))
y1 = eval(str(result_list[0][1]))
x2 = eval(str(result_list[1][0]))
y2 = eval(str(result_list[1][1]))
print(f'x1={x1}')
print(f'y1={y1}')
print(f'x2={x2}')
print(f'y2={y2}')
result = [(x1, y1), (x2, y2)]
for x, y in result:if x > 0 and y > 0:print('满足条件的值:')print(f'x={x}')print(f'y={y}')
我是刚刚学习的, 所以思路可能就显得非常乱, 请多多包含-_-
python笔记--使用solve算出黄金分割比近似值相关推荐
- python写一个表白程序_用Python写一个能算出自己年龄的小程序
用Python写一个能算出自己年龄的小程序. 其实我连我今年多少岁都不知道,最近看到了python的datetime库里面有很多好用的方法,于是就写了这样一个程序作为练习,然后又写了这样一篇文章来梳理 ...
- 如何用python计算年龄_用Python写一个能算出自己年龄的小程序
用Python写一个能算出自己年龄的小程序. 其实我连我今年多少岁都不知道,最近看到了python的datetime库里面有很多好用的方法,于是就写了这样一个程序作为练习,然后又写了这样一篇文章来梳理 ...
- Python筛选法(算出十亿之内所有的质数之和)
其实别人写的挺好的了....直接上链接吧http://blog.csdn.net/power721/article/details/8216619 转载于:https://www.cnblogs.co ...
- python 估值模型_利用RFM模型建模,并通过聚类分析、分类,分别算出8中不同的价值会员...
RFM-Clustering 利用RFM模型建模,并通过聚类分析.分类,分别算出8中不同的价值会员 RFM模型构建会员价值标签 R:最近一次消费(Recency) F:消费频率(Frequency) ...
- python 实现ip分配_Python实现根据IP地址和子网掩码算出网段的方法
本文实例讲述了Python实现根据IP地址和子网掩码算出网段的方法.分享给大家供大家参考.具体如下: 该代码在Linux环境2.6.6python版本测试通过! #!/usr/bin/env pyth ...
- python图像识别车票_警惕啊,不要随便发车票照片了,用Python可以算出了你的身份证号码!...
原标题:警惕啊,不要随便发车票照片了,用Python可以算出了你的身份证号码! 为了一杯奶茶. 事情的经过是这样的: 我的同事李大伟最近出差去了. 昨晚睡觉前翻了翻朋友圈, 就跟他愉快地 互怼交流了起 ...
- 用python实现时间的动态(动态时钟)+ 算出某年某月星期几的所有日期
一个玩得好的朋友突然大晚上的给我布置作业,吓得我精神抖擞.他的原话是: 感觉发现新大陆了,利用小海龟画的,上次玩海龟已经是几个月之前的事情了 https://blog.csdn.net/hanhanw ...
- 怎么用python算单价和总价_怎样用EXCEL表格自动算出数量单价总金额
展开全部 日常用EXCEL表格自动算出数量单2113价的总金额,5261需要用到EXCEL里面的公式,具体操作4102步骤如下: 1.创建1653一个EXCEL表格,在表格上输入有关于"数量 ...
- python笔记: 生成器
元素按照某种算法推算出来,我们在循环的过程中不断推算出后续的元素 不必创建完整的list,从而节省了大量的空间 这种一边循环一遍计算的机制,称之为生成器generator 1 列表生成器 把列表生成式 ...
最新文章
- random类的使用
- 《百面机器学习》笔记-特征工程相关面试题
- 成为DBA的10条规则
- mysql 织梦 索引_Mysql索引详解 建立索引的优势劣势以及索引规范
- mysql router测试_MySQL 主从复制配置 + MySQL Router 部署使用测试
- thymeleaf th:if 案例
- 百度地图滚轮缩放,所在点偏移问题
- u盘启动 联想一体机_联想Y430pAT-ISE(H)U盘安装Win7系统教程
- 三层BP神经网络的python实现
- php无限极 left right,php无限极分类实现的两种解决方法
- SAP License:MM-采购订单migo,101收货,有三种方式冲销,可以使库存减少,有何不同?
- poj 3261 Milk Patterns
- 8.2、磁盘、目录和文件计算
- JDBC中的Statement和PreparedStatement的差别
- SkinSharp使用方法
- Python基础之文件和数据格式化
- unity粒子编辑器详解
- echarts树形结构实现组织架构图
- 随手写程序-t检验计算置信区间
- BeanFactory not initialized or already closed - call ‘refresh‘ before accessing beans via the Applic