⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 雅可比迭代解线性方程组.cpp

📁 雅可比迭代解线性方程组 这个也是计算方法中另一种 求解线性方程组的计算程序
💻 CPP
字号:
// 雅可比迭代解线性方程组.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include<iostream.h>
#include<math.h>
#include<iomanip.h>
#define N 50
int main(int argc, char* argv[])
{
	int i,j,n,s=0;
	double A[N][N],b[N],X[N];
	void yakebi(double A[][50],double X[],double b[],int n=1);
//变量的定义
	cout<<"请输入方程的阶数n:";
	cin>>n;
	cout<<"请输入方程组的系数矩阵:"<<endl;
	for(i=0;i<=n-1;i++){
		for(j=0;j<=n-1;j++){
			cout<<"A["<<i<<"]["<<j<<"]=";
			cin>>A[i][j];
		}
		cout<<"b["<<i<<"]=";
		cin>>b[i];
	};
//系数矩阵的输入
    yakebi(A,X,b,n);
//求解
	cout<<"下面是方程组的解:"<<endl;
	for(i=0;i<=n-1;i++){
		cout<<X[i]<<endl;
	};
	cin.get();
    cin.get();
	return 0;
}

void yakebi(double A[][50],double X[],double b[],int n=1){
	int i,j,k;
	double x[2][50];
	double distance;
	double temp;
	if(n==1){
		if(A[0][0]!=0){    X[0]=b[0]/A[0][0]; return;  }
	};
//为一阶时直接求解
	for(i=0;i<=n-1;i++){
          x[0][i]=1;
	};
	for(k=0;k<=500;k++){
		for(i=0;i<=n-1;i++){
			       temp=0;
			for(j=0;j<=n-1;j++){
				if(j!=i){   temp+=A[i][j]*x[k%2][j];   };
			};
			x[(k+1)%2][i]=(b[i]-temp)/A[i][i];
		};//求每个x[i];
		distance=0;
		for(i=0;i<=n-1;i++)   distance+=pow(x[(k+1)%2][i]-x[k%2][i],2);
		if(distance<=0.0001) break;
	cout<<k<<endl;
	};//循环迭代次数;
	for(i=0;i<=n-1;i++) X[i]=x[k%2][i];
return;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -