鱼C论坛

 找回密码
 立即注册
查看: 2623|回复: 8

[已解决]新人求助嵌套问题

[复制链接]
发表于 2023-2-23 08:26:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
问题的公式是
z =2000000*x+50000000+1000000/0.8
z= 2000000*y+50000000+1000000/0.7

z的值在什么范围时2000000/(2000000+50000000/x+1000000/0.8x) < 2000000/(2000000+50000000/y+1000000/0.7y)


我现在想用while函数嵌套z=z+10000之类的,但失败了...

我目前的垃圾想法是这样的...求大佬解答

from sympy import symbols, Eq, solve


while equation_3 < equation_4:
    z = 1000000
    z = str(z)
   
    x, y = symbols("x y")
    equation_1 = Eq(2000000*x+50000000+1000000/0.8, z)
    equation_2 = Eq(2000000*y+50000000+1000000/0.7, z)
    solution = solve((equation_1, equation_2), (x, y))

    equation_3 = Eq(2000000/(2000000+50000000/x+1000000/0.8*x))
    equation_4 = Eq(2000000/(2000000+50000000/y+1000000/0.7*y))
   
z = z + 100000

return z
最佳答案
2023-2-23 09:21:09
from sympy import symbols, Eq, solve

z = 1000000
x, y = symbols("x y")
equation_1 = Eq(2000000*x+50000000+1000000/0.8, z)
equation_2 = Eq(2000000*y+50000000+1000000/0.7, z)

while True:
    # 解决方程组
    solution = solve((equation_1, equation_2), (x, y))
    x_val = solution[x]
    y_val = solution[y]
    
    # 计算方程式的值
    equation_3_value = 2000000/(2000000+50000000/x_val+1000000/0.8*x_val)
    equation_4_value = 2000000/(2000000+50000000/y_val+1000000/0.7*y_val)
   
    if equation_3_value.evalf() < equation_4_value.evalf():
        z += 100000
        equation_1 = Eq(2000000*x+50000000+1000000/0.8, z)
        equation_2 = Eq(2000000*y+50000000+1000000/0.7, z)
    else:
        break

print(z)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-2-23 08:34:07 From FishC Mobile | 显示全部楼层
xy.都未知,这东西能有答案吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-23 08:40:18 | 显示全部楼层
z的值是自己输入的,这个循环的目的就是测试出z的值在什么范围时2000000/(2000000+50000000/x+1000000/0.8x) < 2000000/(2000000+50000000/y+1000000/0.7y)。我理解就是先把z值输入x和y的公式,算出x和y后,看看符不符合2000000/(2000000+50000000/x+1000000/0.8x) < 2000000/(2000000+50000000/y+1000000/0.7y)。符合就对了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-23 08:40:42 | 显示全部楼层
wp231957 发表于 2023-2-23 08:34
xy.都未知,这东西能有答案吗


z的值是自己输入的,这个循环的目的就是测试出z的值在什么范围时2000000/(2000000+50000000/x+1000000/0.8x) < 2000000/(2000000+50000000/y+1000000/0.7y)。我理解就是先把z值输入x和y的公式,算出x和y后,看看符不符合2000000/(2000000+50000000/x+1000000/0.8x) < 2000000/(2000000+50000000/y+1000000/0.7y)。符合就对了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-23 08:40:55 | 显示全部楼层
wp231957 发表于 2023-2-23 08:34
xy.都未知,这东西能有答案吗

求大佬指点!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-23 09:21:09 | 显示全部楼层    本楼为最佳答案   
from sympy import symbols, Eq, solve

z = 1000000
x, y = symbols("x y")
equation_1 = Eq(2000000*x+50000000+1000000/0.8, z)
equation_2 = Eq(2000000*y+50000000+1000000/0.7, z)

while True:
    # 解决方程组
    solution = solve((equation_1, equation_2), (x, y))
    x_val = solution[x]
    y_val = solution[y]
    
    # 计算方程式的值
    equation_3_value = 2000000/(2000000+50000000/x_val+1000000/0.8*x_val)
    equation_4_value = 2000000/(2000000+50000000/y_val+1000000/0.7*y_val)
   
    if equation_3_value.evalf() < equation_4_value.evalf():
        z += 100000
        equation_1 = Eq(2000000*x+50000000+1000000/0.8, z)
        equation_2 = Eq(2000000*y+50000000+1000000/0.7, z)
    else:
        break

print(z)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-23 09:21:44 | 显示全部楼层
本帖最后由 wp231957 于 2023-2-23 09:24 编辑
mrdeer 发表于 2023-2-23 08:40
求大佬指点!!!


这东西可以先数学化处理(手工计算一下)
我没太仔细算,不知道是否中间有错
大致最后会简化成以下样子
无标题.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-23 09:26:24 | 显示全部楼层

这就是大佬么!!!!太厉害了!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-23 09:27:51 | 显示全部楼层
wp231957 发表于 2023-2-23 09:21
这东西可以先数学化处理(手工计算一下)
我没太仔细算,不知道是否中间有错
大致最后会简化成以下样 ...

谢谢大佬指点!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-24 13:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表