我正在求解稳态热方程,边界条件像这样变化 10,0,0,10,0,0,10,0,0,10,0,0,10.... 等等,具体取决于数量我选择的点。我想为这些边界条件构造一个矩阵,但无法根据矩阵的第 i 个元素指定序列的逻辑。
我为此使用mathematica,但是我只需要公式,例如奇数我们可以指定 2n+1 和偶数 2n ,对于序列 10,0,0,10,0,0,10,0,0 是这样的, 10,....
我正在求解稳态热方程,边界条件像这样变化 10,0,0,10,0,0,10,0,0,10,0,0,10.... 等等,具体取决于数量我选择的点。我想为这些边界条件构造一个矩阵,但无法根据矩阵的第 i 个元素指定序列的逻辑。
我为此使用mathematica,但是我只需要公式,例如奇数我们可以指定 2n+1 和偶数 2n ,对于序列 10,0,0,10,0,0,10,0,0 是这样的, 10,....
在 MATLAB 中,它将是
M = zeros(1000, 1);
M(1:3:1000) = 10;
制作具有这种结构的 1000 长向量。1:3:1000
是1,4,7,...
。
在 Mathematica 中执行此操作的一种方法:
Take[Flatten[ConstantArray[{10, 0, 0}, Ceiling[1000/3] ], 1],1000]
另一种方式
Table[Boole[Mod[i,3]==1]*10, {i,1,1000}]
由于您特别想要一个数学公式,因此我建议一种方法:
seq = PadRight[{}, 30, {10, 0, 0}];
func = FindSequenceFunction[seq]
10/3 (1 + Cos[2/3 \[Pi] (-1 + #1)] + Cos[4/3 \[Pi] (-1 + #1)]) &
测试它:
Array[func, 10]
{10, 0, 0, 10, 0, 0, 10, 0, 0, 10}
肯定有更简单的程序可以生成这个序列,例如:
Array[10 Boole[1 == Mod[#, 3]] &, 10]
{10, 0, 0, 10, 0, 0, 10, 0, 0, 10}