首页 > 代码库 > 雅可比迭代法

雅可比迭代法

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

 

     算法伪代码如下,有错误的话请给我指出来:

 

//假设所有a[i][i]都不是0,为0的话还不知道怎么办		输入系数于数组a[][];		输入常数于数组b[];				//计算新系数于数组c[][]		for(int i=0; i<n; i++) {			c[i][n-1] = b[i]/a[i][i];		}		//不是n-1行,经过商议不处理,只是列数减1		for(int i=0; i<n; i++) {			for(int j=0; j<n-1; j++) {				if(i<j)					c[i][j] = -a[i][j+1]/a[i][i];				else if(i>j)					c[i][j] = -a[i][j]/a[i][i];				else					continue;			}		}			//迭代100次,自己加上精度判断吧		//从向量形式可以看出,初试解为全0的话第一次解为c[i][n-1],如果为了省着一次时间的话可以先把		//这个复制给解数组 root[],再仔细看看会发现每次迭代的话都需要加上c[i][n-1]		while(T--) {			//k行			for(int j=0; j<n; j++) {				//n-1列,最后的c[i][n-1]到最后加上				int temp = 0;				for(int k=0; k<n-1; k++) {					if(j>k)						temp += c[j][k]*root[k];					else if(j<k)						temp += c[j][k]*root[k+1];					else						continue;				}				//再仔细看看会发现每次迭代的话都需要加上c[i][n-1]				root[j] += temp;							}		}

雅可比迭代法