mrdeer 发表于 2023-2-23 08:26:41

新人求助嵌套问题

问题的公式是
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

wp231957 发表于 2023-2-23 08:34:07

xy.都未知,这东西能有答案吗

mrdeer 发表于 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)。符合就对了。

mrdeer 发表于 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)。符合就对了。

mrdeer 发表于 2023-2-23 08:40:55

wp231957 发表于 2023-2-23 08:34
xy.都未知,这东西能有答案吗

求大佬指点!!!

ouyunfu 发表于 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
    y_val = solution
   
    # 计算方程式的值
    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)

wp231957 发表于 2023-2-23 09:21:44

本帖最后由 wp231957 于 2023-2-23 09:24 编辑

mrdeer 发表于 2023-2-23 08:40
求大佬指点!!!

这东西可以先数学化处理(手工计算一下)
我没太仔细算,不知道是否中间有错
大致最后会简化成以下样子

mrdeer 发表于 2023-2-23 09:26:24

ouyunfu 发表于 2023-2-23 09:21


这就是大佬么!!!!太厉害了!!!

mrdeer 发表于 2023-2-23 09:27:51

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

谢谢大佬指点!!!
页: [1]
查看完整版本: 新人求助嵌套问题