zoukankan      html  css  js  c++  java
  • 雅克比迭代

    #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;
    }
    

  • 相关阅读:
    函数式宏定义与普通函数
    linux之sort用法
    HDU 4390 Number Sequence 容斥原理
    HDU 4407 Sum 容斥原理
    HDU 4059 The Boss on Mars 容斥原理
    UVA12653 Buses
    UVA 12651 Triangles
    UVA 10892
    HDU 4292 Food
    HDU 4288 Coder
  • 原文地址:https://www.cnblogs.com/zztong/p/6695288.html
Copyright © 2011-2022 走看看