Function SolveY(x0 As Double, y0 As Double, E As Double, n As Double, K As Double, Optional initial_guess As Double = -1, Optional max_iter As Integer = 100, Optional tol As Double = 1e-10) As Double ' 求解方程: (y/E + 2*(y/(2K))^(1/n)) * y = x0*y0 ' 使用牛顿迭代法 Dim y As Double Dim f As Double, df As Double Dim iter As Integer ' 初始猜测:如果未提供,用 y0 作为初始值 If initial_guess <= 0 Then y = y0 Else y = initial_guess End If For iter = 1 To max_iter ' 计算 f(y) 和 f'(y) f = (y / E + 2 * (y / (2 * K)) ^ (1 / n)) * y - x0 * y0 ' 导数:d/dy [y^2/E + 2*y*(y/(2K))^(1/n)] df = 2 * y / E + 2 * (y / (2 * K)) ^ (1 / n) + (2 * y / n) * (y / (2 * K)) ^ (1 / n) / y ' 避免除零 If Abs(df) < 1e-15 Then SolveY = CVErr(xlErrNA) Exit Function End If ' 牛顿更新 y = y - f / df ' 检查收敛 If Abs(f) < tol Then Exit For End If Next iter If iter > max_iter Then ' 未收敛 SolveY = CVErr(xlErrNA) Else SolveY = y End IfEnd Function