1

我正在求解稳态热方程,边界条件像这样变化 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,....

4

3 回答 3

1

在 MATLAB 中,它将是

M = zeros(1000, 1);
M(1:3:1000) = 10;

制作具有这种结构的 1000 长向量。1:3:10001,4,7,...

于 2013-04-21T17:13:39.817 回答
0

在 Mathematica 中执行此操作的一种方法:

Take[Flatten[ConstantArray[{10, 0, 0}, Ceiling[1000/3] ], 1],1000]

另一种方式

Table[Boole[Mod[i,3]==1]*10, {i,1,1000}]
于 2013-04-21T19:24:10.890 回答
0

由于您特别想要一个数学公式,因此我建议一种方法:

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}
于 2013-04-26T09:39:01.673 回答