Mathematica 递归求解问题。
按年龄分组的种群增长模型,我输入完递归方程后,结果出来是这个。是哪里打错了嘛?对了,初始条件应该是x[0],不是x[1]...
按年龄分组的种群增长模型,我输入完递归方程后,结果出来是这个。是哪里打错了嘛?
对了,初始条件应该是x[0],不是x[1] 展开
对了,初始条件应该是x[0],不是x[1] 展开
1个回答
展开全部
首先,Mathematica并不支持非显式的矩阵定义,所以你的x[k]要改写成显式的{x[k], y[k], z[k]},顺便你的第一行根本没有起到作用,这行东西没法申明x[k]是个3×1的矩阵;然后,矩阵的内积应该用“ . ”,最后,至少到版本8为止,RSolve还不支持这种矩阵式的方程写法,所以需要使用Thread把它变成一般形式的代数方程,总之:
RSolve[{Thread[{x[1 + k], y[1 + k], z[1 + k]} == {{1, 4, 3}, {1/2, 0, 0}, {0, 1/4, 0}}.{x[k], y[k], z[k]}], {x[1], y[1], z[1]} == {1000, 1000, 1000}}, {x[k], y[k], z[k]}, k]
一分钟左右就能算出来了,结果很长,这里就不贴了。
追答
其实你有不懂的指令,可以把鼠标移到上面点一下,使光标移到这个指令上,再按F1,就可以调出相关的帮助了,Mathematica的帮助是很强大的……这个Root,简单地说,就是表示这里的数值,是Root里面的那个方程的一个根。要求15年后,很简单(注意代码已经做了一些小修改——我想你想要的是数值值吧):
sol = RSolve[{Thread[{x[1 + k], y[1 + k], z[1 + k]} == {{1, 4, 3}, {1/2, 0, 0}, {0, 1/4, 0}}.{x[k], y[k],z[k]}], {x[0], y[0], z[0]} == {1000, 1000, 1000}}, {x, y, z}, k];
{x[15], y[15], z[15]} /. sol // N
(* {{1.49462*10^8, 3.62857*10^7, 4.40469*10^6}} *)
TableDI
2024-07-18 广告
2024-07-18 广告
仅需3步!不写公式自动完成Excel vlookup表格匹配!Excel在线免,vlookup工具,点击16步自动完成表格匹配,无需手写公式,免费使用!...
点击进入详情页
本回答由TableDI提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询