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

如何在C#中实现SJM因子代数公式并求解未知参数J

SJM因子求解C#实现

公式推导

首先对原式做代数变形,解出未知量J:
已知公式:SJM Factor = S*(J-M) / (J*(S-M))
设K = SJM Factor,对等式做移项整理:

  1. 两边同乘J*(S-M)得:K * J * (S-M) = S*(J-M)
  2. 展开右侧后将含J的项移至左侧:K*J*(S-M) - S*J = -S*M
  3. 提取公因子J后整理得最终解:J = (S * M) / (S - K * (S - M))

边界校验说明

计算前需要先校验以下非法场景:

  • S值与M值相等:此时原式分母为0,公式本身无意义
  • 分母S - K * (S - M)计算结果为0:无有效实数解
  • 可根据业务场景额外补充校验规则,比如要求J为正数、整数等

C#代码实现

using System;

public static class SjmFactorCalculator
{
    /// <summary>
    /// 通过已知的SJM因子、S值、M值计算J值
    /// </summary>
    /// <param name="sjmFactor">已知的SJM因子</param>
    /// <param name="s">已知的S值</param>
    /// <param name="m">已知的M值</param>
    /// <param name="tolerance">精度校验阈值,默认1e-9,避免浮点数精度问题</param>
    /// <returns>计算得到的J值</returns>
    /// <exception cref="ArgumentException">参数非法时抛出异常</exception>
    public static double CalculateJ(double sjmFactor, double s, double m, double tolerance = 1e-9)
    {
        // 校验S和M不能相等
        if (Math.Abs(s - m) < tolerance)
        {
            throw new ArgumentException("S值不能等于M值,否则公式无意义");
        }

        // 计算分母
        double denominator = s - sjmFactor * (s - m);
        if (Math.Abs(denominator) < tolerance)
        {
            throw new ArgumentException("当前输入参数无有效实数解");
        }

        double j = (s * m) / denominator;

        // 如果业务要求J必须为正数,可放开下面的注释
        // if (j < 0)
        // {
        //     throw new ArgumentException("计算得到的J值为负,不符合业务要求");
        // }

        return j;
    }

    // 调用示例
    public static void Main()
    {
        try
        {
            double k = 0.5;
            double s = 10;
            double m = 2;
            double j = CalculateJ(k, s, m);
            Console.WriteLine($"计算得到的J值为:{j:F4}"); // 输出结果约为3.3333
        }
        catch (ArgumentException ex)
        {
            Console.WriteLine($"计算失败:{ex.Message}");
        }
    }
}

补充说明

代码中加入了浮点数精度校验,避免浮点数运算的精度误差导致非法判断出错。如果你的输入参数都是整数,且要求J为整数,可以把方法的参数和返回值改成decimal类型获得更高的精度,再额外添加整数校验逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 10:45:10