You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将解析案例转为数值案例求解y关于p_h和p_s的表达式

数值求解y的具体操作及示例

由于你的表达式是非线性形式,sympy的符号求解无法得到解析解,因此可以通过数值方法,给定p_h和p_s的具体数值,求解对应的y值。以下是基于Python的实现示例:

实现思路

  1. 固定题目要求的参数α、h0、π、τ、θ取值,不可修改;
  2. 将原表达式转化为数值函数:对于给定的p_h和p_s,构造函数f(y) = 原表达式,求解使得f(y)=0的y值;
  3. 使用scipy.optimize.fsolve(数值根求解工具)来找到满足条件的y。

代码示例

import numpy as np
from scipy.optimize import fsolve

# 固定参数,不可修改
α, h0, π_val, τ, θ = 0.7, 1, 0.05, 0.02, 0.02

def find_y(p_h, p_s):
    # 定义需要求解根的函数:f(y) = 原表达式,目标是找到f(y)=0的y
    def equation(y):
        # 计算各中间变量的数值
        term = y / (1 + π_val) + τ
        c_r = α * term
        s_r = ((1 - α) / p_s) * term
        c0_o = (y / (1 + π_val)) - (p_h * θ * h0**2) / (1 + π_val) + τ
        
        # 返回原表达式的值,目标是让这个值等于0
        return (c_r**α) * (s_r**(1-α)) - (c0_o**α) * (h0**(1-α))
    
    # 初始猜测值,可根据实际情况调整,这里用1作为初始值
    initial_guess = 1.0
    # 调用fsolve求解
    y_solution = fsolve(equation, initial_guess)
    return y_solution[0]

# 案例1:给定p_h=1.0,p_s=0.5
p_h1, p_s1 = 1.0, 0.5
y1 = find_y(p_h1, p_s1)
print(f"当p_h={p_h1}, p_s={p_s1}时,y的解为:{y1:.4f}")

# 案例2:给定p_h=0.8,p_s=0.3
p_h2, p_s2 = 0.8, 0.3
y2 = find_y(p_h2, p_s2)
print(f"当p_h={p_h2}, p_s={p_s2}时,y的解为:{y2:.4f}")

# 案例3:给定p_h=1.2,p_s=0.7
p_h3, p_s3 = 1.2, 0.7
y3 = find_y(p_h3, p_s3)
print(f"当p_h={p_h3}, p_s={p_s3}时,y的解为:{y3:.4f}")

说明

  • 初始猜测值initial_guess可以根据实际问题的合理范围调整,若求解失败可尝试更换初始值;
  • fsolve会返回一个数组,取第一个元素就是对应的y解;
  • 可以根据需要批量输入多组p_h和p_s的值,循环调用find_y函数得到对应的y值。

内容的提问来源于stack exchange,提问作者NaTa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 12:45:24