在matlab中表示动态Euler-Bernoulli梁矩阵?

时间:2014-04-14 11:17:41

标签: matlab matrix

如何在matlab中动态表示左边的矩阵,允许我对给定的n迭代地增长它。
enter image description here

1 个答案:

答案 0 :(得分:1)

给定n,以下代码构造您显示的矩阵,前提是模式保持不变。

n = 5;
d(n) = -12;
d(1) = 12;
d(2:end-1) = 6;
b1(n-1) = 6;
b1(1:end-1) = -4;
b2(n-2) = 4/3;
b2(1:end-1) = 1;
a1 = b1(end:-1:1);
a1(1) = -a1(1);
A = diag(d) + diag(b1, -1) + diag(b2, -2) + diag(a1, 1) + diag(b2(end:-1:1), 2)

n=5的输出:

A =

   12.0000   -6.0000    1.3333         0         0
   -4.0000    6.0000   -4.0000    1.0000         0
    1.0000   -4.0000    6.0000   -4.0000    1.0000
         0    1.0000   -4.0000    6.0000   -4.0000
         0         0    1.3333    6.0000  -12.0000

n=8的输出:

A =

   12.0000   -6.0000    1.3333         0         0         0         0         0
   -4.0000    6.0000   -4.0000    1.0000         0         0         0         0
    1.0000   -4.0000    6.0000   -4.0000    1.0000         0         0         0
         0    1.0000   -4.0000    6.0000   -4.0000    1.0000         0         0
         0         0    1.0000   -4.0000    6.0000   -4.0000    1.0000         0
         0         0         0    1.0000   -4.0000    6.0000   -4.0000    1.0000
         0         0         0         0    1.0000   -4.0000    6.0000   -4.0000
         0         0         0         0         0    1.3333    6.0000  -12.0000

要使用A的稀疏表示,您可以使用传递给命令spdiags四个参数:

  1. 矩阵B,其列为A的对角线。
  2. 向量dd(j)A中的对角线,其元素将填充B(:,j)中的元素({{1}的第j列}})。
  3. B中的行数。
  4. A
  5. 中的列数

    我使用以A(上图)开头的名称作为超对角线,以及以a(下方)开头的名称,用于子对角线(我不使用{{1} }(上)和b(下)因为l在我的编辑器中看起来很像1。这是相关的代码。

    u