作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个线性递归问题,其中下一个元素不仅仅依赖于先验值,例如斐波那契数列。计算第 n 个元素的一种方法是通过函数调用来定义它,例如
Fibonacci[0] = 0; Fibonacci[1] = 1;
Fibonacci[n_Integer?Positive] := Fibonacci[n] + Fibonacci[n - 1]
Module
内,所以我不会污染
Global`
。)但是,我将使用它 210 - 213 点,所以当我只需要最后一项,没有任何先前的元素。我想用
Fold
这样做,但是
Fold
仅通过直接在先的结果,这意味着它对一般线性递归问题没有直接用处。
Fold
和
FoldList
将指定数量的先验序列元素传递给函数,即
In[1] := MultiFoldList[f, {1,2}, {3,4,5}] (* for lack of a better name *)
Out[1]:= {1, 2, f[3,2,1], f[4,f[3,2,1],2], f[5,f[4,f[3,2,1],2],f[3,2,1]]}
RSolve
或
MatrixPower
来解决这个问题。我的具体问题是我正在执行
n-point Pade approximant分析继续一个函数,我只知道在虚轴 {zi} 上的一组点。创建近似值的一部分是生成一组系数 ai,这是另一个递推关系,然后将其输入到最终关系中
A[n+1]== A[n] + (z - z[[n]]) a[[n+1]] A[n-1]
RSolve
也不是
MatrixPower
,至少我能看到。
最佳答案
RecurrenceTable 可以为您执行此任务吗?
根据之前的两个值查找重复中的第 1000 项:
In[1]:= RecurrenceTable[{a[n] == a[n - 1] + a[n - 2],
a[1] == a[2] == 1}, a,
{n, {1000}}]
Out[1]= {4346655768693745643568852767504062580256466051737178040248172\
9089536555417949051890403879840079255169295922593080322634775209689623\
2398733224711616429964409065331879382989696499285160037044761377951668\
49228875}
f[m, n]
定义的,那么您可以使用
Condition :
In[2]:= f[m_, n_] /; IntegerQ[m] && IntegerQ[n] := m + n
f
的循环表:
In[3]:= RecurrenceTable[{a[n] == f[a[n - 1], a[n - 2]],
a[1] == a[2] == 1}, a, {n, {1000}}]
Out[3]= {4346655768693745643568852767504062580256466051737178040248172\
9089536555417949051890403879840079255169295922593080322634775209689623\
2398733224711616429964409065331879382989696499285160037044761377951668\
49228875}
关于wolfram-mathematica - 使用Fold计算依赖多个先前值的线性递推结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5294376/
我是一名优秀的程序员,十分优秀!