在 MatLab 中用任意大小的矩阵求解线性方程组进行有限差分计算

Solve System of Linear Equations in MatLab with Matrix of Arbitrary Size for Finite Difference Calculation

我正在尝试在 MatLab R2016a 中编写一个脚本,该脚本可以求解一个线性方程组,该方程组可以根据 pQ 的值具有不同的大小。

我试图求解以下方程式,其中 h=[-p:1:p]*dx。显然,h=0 处有一些索引 m,但这应该不是问题。

我正在尝试编写一个函数,我可以在其中输入 pQ 并构建矩阵,然后求解它以获得系数。有没有一种方法可以使用变量 pQh 来构建矩阵,而不是为每个个案使用不同的整数值?

我会用bsxfun(在最近的matlab版本中这个函数可能会实现到解释器,我不确定):

p = 4;
Q = 8;
dx = 1;

h = -p:p*dx

Qvector = [Q,1:Q-1]'

Matrix = bsxfun(@(Qvector, h)h.^(Qvector)./factorial(Qvector), Qvector, h)

输出:

h =

-4    -3    -2    -1     0     1     2     3     4


Qvector =

 8
 1
 2
 3
 4
 5
 6
 7

Matrix =

    1.6254    0.1627    0.0063    0.0000         0    0.0000    0.0063    0.1627    1.6254
   -4.0000   -3.0000   -2.0000   -1.0000         0    1.0000    2.0000    3.0000    4.0000
    8.0000    4.5000    2.0000    0.5000         0    0.5000    2.0000    4.5000    8.0000
  -10.6667   -4.5000   -1.3333   -0.1667         0    0.1667    1.3333    4.5000   10.6667
   10.6667    3.3750    0.6667    0.0417         0    0.0417    0.6667    3.3750   10.6667
   -8.5333   -2.0250   -0.2667   -0.0083         0    0.0083    0.2667    2.0250    8.5333
    5.6889    1.0125    0.0889    0.0014         0    0.0014    0.0889    1.0125    5.6889
   -3.2508   -0.4339   -0.0254   -0.0002         0    0.0002    0.0254    0.4339    3.2508