• 雅克比迭代


    #include<iostream>
    #include<fstream>
    #include<string>
    using namespace std;
    int main()
    {
    	double **A_B_Matrix;  //矩阵A和B结合
    	double **X_Matrix;    //X取值
        string s;            //缓存用
        double dd;           //缓存用
    	//int m;               //矩阵列数
    	int n;               //矩阵的行数
    	int k;               //要求迭代次数
    	//m=0;
    	n=0;
    	char c;
    	ifstream read("data.dat");
    	while(getline(read,s))    //检测矩阵有几行
    	{
    		n++;
    	}
    	read.close();         
    	/*read.open("data.dat");
    	while(1)               //检测矩阵有几列
    	{
    		read>>dd;
    		m++;
    		c=read.peek();
    		if('
    '==c)
    			break;
    	}
    	read.close();    */  
    	cout<<"请输入要求的迭代次数"<<endl;
    	cin>>k;
    	A_B_Matrix=(double **)new double *[n];//为矩阵AB分配行空间
    	X_Matrix=(double **)new double[k+1];  //为X分配空间
    	for(int i=0;i!=n;i++)     //为矩阵A_B分配空间
    	{
    		A_B_Matrix[i]=new double[n];
    	}
    	read.open("data.dat");
    	int tem;              //缓存用
    	tem=0;
    	while(!read.eof())        //将文件中的矩阵输入到A_B中
    	{
    		for(int j=0;j!=n+1;j++)
    		{
               read>>A_B_Matrix[tem][j];
    		}
    	  tem++;
    	}
    	read.close();
    	for(int i=0;i!=k+1;i++)   //为X矩阵分配空间
    	{
    		X_Matrix[i]=new double[n];
    	}
    	
        cout<<"请输入初始向量"<<endl;
    	for(int i=0;i!=n;i++)             //输入初始向量X
    	{
    		cin>>X_Matrix[0][i];
    	}
        for(int i=1;i!=k+1;i++)         //进入迭代循环
    	{
    		for(int j=0;j!=n;j++)
    		{
    			double sum=0;
    			for(int nn=0;nn!=n;nn++)
    			{
    				if(j==nn)
    				{
    					sum+=0;
    				}
    				else
    				{
    					sum+=-A_B_Matrix[j][nn]*X_Matrix[i-1][nn];
    				}
    			}
    			X_Matrix[i][j]=(sum+A_B_Matrix[j][n])/A_B_Matrix[j][j];  
    		}
    	}
    	cout<<"经过"<<k<<"迭代,所得结果为"<<endl;
    	for(int i=0;i!=n;i++)
    	{
    		cout<<X_Matrix[k][i]<<'	';
    	}
    	system("pause");
    	return 0;
    }
    

  • 相关阅读:
    java
    Java 自定义异常(转载)
    java中更新文件时,指定原文件的编码格式,防止编码格式不对,造成乱码
    tar命令压缩和解压
    微服务之服务注册与发现--Consul(转载)
    git push 时:报missing Change-Id in commit message footer的错误
    git 版本回退
    item 快捷键
    mac下mysql的卸载和安装
    JAVA正则表达式:Pattern类与Matcher类详解(转)
  • 原文地址:https://www.cnblogs.com/zztong/p/6695288.html
Copyright © 2020-2023  润新知