疑问(高斯消元相关)
查看原帖
疑问(高斯消元相关)
853503
Ayk71200楼主2024/5/31 18:58

我在高斯消元部分的代码

	for(int k=1,t=1; k<=m; k++) {
		if(t==n+1) break;
		int u=t;   //这里
		for(int i=t+1; i<=n; i++) if((fabs(a[i][k])>1e-4)&&(w[u]>w[i])) u=i;
		if(fabs(a[u][k])<1e-4) continue;//到这里
		swap(a[t],a[u]);
		swap(w[t],w[u]);
		ans+=w[t];
		for(int i=1; i<=n; i++) {
			if(i==t) continue;
			double bs=a[i][k]/a[t][k];
			for(int j=n; j>=k; j--) a[i][j]-=a[t][j]*bs;
		}
		t++,cnt++;
	}

在寻找主元部分出现错误(只有30分)

改成这样就ac了

		int u=0;
		for(int i=t; i<=n; i++) if((fabs(a[i][k])>1e-4)&&((!u)||w[u]>w[i])) u=i;
		if(!u) continue;

为什么不能把初始主元设成t呢

2024/5/31 18:58
加载中...