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

如何在Mathematica中输入递推公式并生成i=1至30的结果矩阵

在Mathematica中实现递推公式生成i=1到30的矩阵

嘿,刚好我对Mathematica的递推计算很熟悉,结合你之前用Matlab For循环的经验,我给你几种实用的实现方式,每种都带例子,你可以按需选择:

1. 最贴近Matlab循环习惯:Do循环实现

如果你更习惯像Matlab那样的逐次迭代,用Do循环最直观。这里分两种写法,一种是动态追加元素,另一种是预分配列表(更高效,适合数据量较大的情况):

动态追加版本(简单直观)

假设你的初始条件是e'[1] = 2,递推公式是e'[i] = (e'[i-1]^2)/10 + 1,代码如下:

(* 定义初始值和递推公式 *)
initVal = 2;
recurrenceFunc[x_] := x^2 / 10 + 1;

(* 初始化列表,存入i=1的值 *)
eList = {initVal};

(* 从i=2循环到i=30,计算每一项并追加 *)
Do[
  nextVal = recurrenceFunc[eList[[-1]]];
  AppendTo[eList, nextVal],
  {i, 2, 30}
];

(* 生成包含i和对应e'i的矩阵,转成矩阵格式展示 *)
resultMatrix = Transpose[{Range[1, 30], eList}] // MatrixForm;

预分配列表版本(高效推荐)

和Matlab里预分配数组一样,提前创建固定长度的列表可以避免动态追加的性能损耗:

initVal = 2;
recurrenceFunc[x_] := x^2 / 10 + 1;

(* 预分配长度为30的列表 *)
eList = Table[0., {30}];
eList[[1]] = initVal;  (* 赋值i=1的初始条件 *)

(* 循环计算i=2到30的每一项 *)
Do[
  eList[[i]] = recurrenceFunc[eList[[i-1]]],
  {i, 2, 30}
];

(* 生成矩阵 *)
resultMatrix = Transpose[{Range[1, 30], eList}] // MatrixForm;

2. Mathematica专属:RecurrenceTable函数

这个函数是Mathematica专门为递推关系设计的,可读性极强,不需要手动写循环,直接定义递推规则即可:

initVal = 2;
(* 定义递推规则和初始条件 *)
recurrenceRules = {e[i] == e[i-1]^2 / 10 + 1, e[1] == initVal};

(* 直接生成i=1到30的所有值 *)
resultList = RecurrenceTable[recurrenceRules, e, {i, 1, 30}];

(* 转成包含i和对应值的矩阵 *)
resultMatrix = Transpose[{Range[1, 30], resultList}] // MatrixForm;

这个方法的好处是代码更简洁,递推关系一目了然,适合复杂的递推场景。

3. 函数式编程风格:NestList函数

如果你喜欢Mathematica的函数式编程,NestList可以一行生成所有递推值,非常简洁:

initVal = 2;
recurrenceFunc[x_] := x^2 / 10 + 1;

(* NestList会从初始值开始,迭代29次(得到30个值,包括初始的i=1) *)
resultList = NestList[recurrenceFunc, initVal, 29];

(* 生成矩阵 *)
resultMatrix = Transpose[{Range[1, 30], resultList}] // MatrixForm;

这里的29是因为初始值已经是i=1的结果,只需要再计算29次就能得到i=2到30的所有值。

注意事项

  • 替换示例中的initVal和递推公式/函数为你实际的初始条件和递推关系即可;
  • 如果只需要e'i的单列矩阵,直接用MatrixForm[resultList]就可以,不用和Range组合。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 19:52:34