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

如何在Matlab中实现阶乘拟合?Curve Fitting App使用疑问

在Matlab中实现阶乘拟合的方法

Matlab的Curve Fitting App本身没有内置阶乘拟合选项,你可以通过自定义拟合方程来实现,具体操作如下:

  • 打开Curve Fitting App并导入数据

    1. 先运行数据定义代码:
      x = [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30];
      y = [20, 30, 42, 56, 512, 729, 1000, 1331, 1728, 2197, 2744, 3375, 28800, 36992, 46818, 58482, 72200, 88200, 106722, 128018, 1068672, 1322500, 1622400, 1974375, 2384928, 2861082, 3410400];
      
    2. 命令行输入cftool打开Curve Fitting App,将x设为自变量、y设为因变量导入。
  • 自定义阶乘拟合模型

    1. 在拟合类型下拉框中选择Custom Equation(自定义方程)。
    2. 输入拟合模型,比如单参数阶乘模型:
      y = a * factorial(x)
      
      或带常数项的双参数模型:
      y = a * factorial(x) + b
      

      注意:阶乘factorial(x)的数值增长极快(比如30!≈2.6×10³²),但你的y值最大仅约3.4×10⁶,直接用原始阶乘拟合容易出现数值溢出或拟合效果极差的情况。此时可以对模型做对数转换,将非线性拟合转为线性拟合:对y = a*x!两边取自然对数,得到ln(y) = ln(a) + ln(x!),令Y = ln(y)、X = ln(factorial(x)),模型就变为Y = k + X(其中k = ln(a)),用线性拟合求解后,再通过a = exp(k)还原参数。

  • 执行拟合并分析结果

    1. 点击Fit按钮执行拟合。
    2. 在结果面板查看参数估计值、拟合优度等指标,通过绘图对比拟合曲线与原始数据的匹配度。

命令行实现方式

如果更习惯用命令行操作,可直接使用fit函数:

% 定义自定义拟合模型
model = fittype('a*factorial(x) + b', 'independent', 'x', 'dependent', 'y');
% 执行拟合(注意x和y需要转为列向量)
fit_result = fit(x', y', model);
% 输出拟合结果
disp(fit_result);
% 绘制拟合曲线与原始数据
plot(fit_result, x, y);

额外提示:观察你的数据可以发现,x=4-7时y值接近x*(x+1),x=8-15时y=x³,后续数据又有不同的增长规律,单一阶乘模型可能难以适配所有数据,建议先分析数据的分段规律,再选择合适的拟合模型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 14:20:24