所以我试图创建一个矩阵的一般形式,当 2N=6 看起来像 (6x6)
1 0 0 -1/1! 0 0
0 1 0 -1/1! -1/1! 0
0 0 1 -1/2! -1/1! -1/1!
0 0 0 -1/3! -1/2! -1/1!
0 0 0 -1/4! -1/3! -1/2!
0 0 0 -1/5! -1/4! -1/3!
也就是说,N=3 给出了一个 6x6 矩阵,
其中 TL 象限中的恒等式在
BL 象限中为空,
并且 -1/ 阶乘在列中从 0 到 N-1,向下移动 1。
我正在尝试尽可能普遍地做到这一点。到目前为止,我有:
#include <stdio.h>
#include <math.h>
int main()
{
int A, B, C, R, M;
int i, j, N;
double n,r,c,rf,x;
N=3;
n=N;
M=(N+N-1);
double a[(2*N)][(2*N)];
for(A=0; A<N; A++)
{a[A][A]=1.0;
}
for(C=N; C<=M;C++)
{
for(R=(C-N);R<=(M);R++)
{
r=R-(C-N);
rf=1;
for(x=1; x<=r; x++)
{
rf=rf*x;
}
a[R][C]=((-1)/rf);
}
}
for (i = 0; i < 2*N; i++)
{
for (j = 0; j < 2*N; j++)
{
printf(" %f ", a[i][j]);
if (j % 3 == 2) printf(" ");
}
printf("\n");
}
/*
for(i=0;i<=M;i++)
{
for(j=0;j<=M;j++)
{
printf("[%d][%d] = %f \n", i, j,a[i][j]);
}
}
*/
return 0;
}
我已包含(但已注释掉)打印出的单个元素。这适用于 N=3 但是当尝试增加 NI 的值时会遇到一些非常奇怪的结果并且无法弄清楚为什么,有人可以帮忙吗?(例如 N=4,a[2][0] 达到一个巨大的数字)没有“调试错误”,因为它编译和运行。并不是要求人们进行调试,而是想知道我是否缺少数组的一般属性?
谢谢