gpt4 book ai didi

java - 托普利茨矩阵初始化

转载 作者:行者123 更新时间:2023-12-01 10:04:05 25 4
gpt4 key购买 nike

我正在尝试在java中初始化Toeplitz矩阵。我希望它具有这种形式
6 -4 1 0 0 ... 0
-4 6 -4 1 0 ... 0
1 -4 6 -4 1 ...0
......................
0 ... 1 -4 6 -4 1
0 ... ...1 -4 6-4
0 .. ... 0 1 -4 6

我意识到问题出在 data[i-j-1] 范围内的 if(j>i) 。我尝试更改它,但收到 IndexOutOfBounds 错误。这是我到目前为止编写的代码

    int a1[][] = new int[size][size];


int data[] = new int[size];

data[0] = 6;
data[1] = -4;
data[2] = 1;

for(int i=3; i<size; i++){
data[i] = 0;
}

/* Creating the A1 matrix */
for(int i=0; i<size; i++)
{
for(int j=0; j<size; j++)
{
if(j>i){
a1[i][j] = data[j-i-1];

}else if(j==i){
a1[i][j] = data[0];

}else{
a1[i][j] = data[i-j-1];
}


}
}

输出是

    The Matrix is : 
6 6 -4 1 0 0 0 0 0 0
6 6 6 -4 1 0 0 0 0 0
-4 6 6 6 -4 1 0 0 0 0
1 -4 6 6 6 -4 1 0 0 0
0 1 -4 6 6 6 -4 1 0 0
0 0 1 -4 6 6 6 -4 1 0
0 0 0 1 -4 6 6 6 -4 1
0 0 0 0 1 -4 6 6 6 -4
0 0 0 0 0 1 -4 6 6 6
0 0 0 0 0 0 1 -4 6 6

最佳答案

问题是如果i = j+1j = i+1a1被分配a1[i] [j] = 数据[0]。这是一个相差一的错误,您应该删除 1:

for(int j=0; j<size; j++) {
if(j>i){
a1[i][j] = data[j-i];
}else if(j==i){
a1[i][j] = data[0];
}else{
a1[i][j] = data[i-j];
}
}

关于java - 托普利茨矩阵初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36583182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com