Từ 1 tới 2 trên tổng số 2 kết quả

Đề tài: Phương pháp tính và C++

  1. #1
    Ngày gia nhập
    11 2018
    Bài viết
    0

    Mặc định Phương pháp tính và C++

    Em đang code bài tập tìm nghiệm của hệ phương trình truyến tính bằng phương pháp A=LU bằng C++ theo thuật toán của thầy trong sách ạ, nhưng không hiểu sao nó chạy cứ ra lỗi "Không có pt ALU" mặc dù input đầu vào đúng.
    Các bác giúp em với ạ.
    Code:
    #include <stdio.h>
    #include <conio.h>
    #include <iostream>
    #include <fstream>
    #define max 100
    using namespace std;
    
    void Nhap( float A[max][max], int n)
    {
    	for(int i=0;i<n;i++)
    		for(int j=0;j<n;j++)
    			{
    				cin>>A[i][j];
    			}
    }
    
    void NhapB(float B[max],int n)
    {
    	for(int i=0;i<n;i++)
    		{
    			cout<<"B["<<i<<"] =";
    			cin>>B[i];
    		}
    }
    void Xuat(float A[max][max], int n)
    {
    	cout<<"\n";
    	for(int i=0;i<n;i++)
    		{
    			cout<<endl;
    			for(int j=0;j<n;j++)
    				cout<<A[i][j]<<"\t";
    		}
    	
    }
    
    int main()
    {
    	int n;
    	float A[max][max], B[max];
    	cout<<"_____________Phan tich A=LU_____________"<<endl;
    	cout<<"Nhap so he pttt n= "; cin>>n;
    	cout<<"Nhap ma tran A: \n";
    	Nhap(A,n);
    	cout<<"\nMa tran A: ";
    	Xuat(A,n);
    	cout<<"\nNhap ma tran he so b: \n";
    	NhapB(B,n);
    	float U[max][max], L[max][max];
    	U[1][1] = A[1][1];
    	L[1][1] = L[n][n] = 1;
    	
    	if( U[1][1] == 0)
    	{
    		cout<<"Khong ton tai phan tich LU";
    		exit(1);
    	}
    
    	for(int j=2;j<=n;j++)
    	{
    		U[1][j] = A[1][j];	 //hang dau tien cua ma tran U
    		L[j][1] =(float) A[j][1] / U[1][1];	//cot dau tien cua ma tran L
    	}
    	
    	for(int i=2; i<= n-1; i++)
    	{
    		//xac dinh duong cheo chinh ma tran U
    		float m=0;
    		for(int k=1; k<=i-1; k++)
    			m +=(float) L[i][k] * U[k][i];
    		U[i][i] =(float) A[i][i] - m;
    		L[i][i] = 1;
    		
    		if(U[i][i] == 0)
    		{
    			cout<<"Khong ton tai phan tich LU";
    			exit(1);
    		}
    		
    		
    		for(int j=i+1; j<= n; j++)
    		{
    			float n=0;
    			for(int k=1; k<=i-1; k++)
    				n +=(float) L[i][k] * U[k][j];
    			U[i][j] =(float) A[i][j] - n;	//Hang i cua cot U
    			
    			float c=0;
    			for(int k=1; k<=i-1; k++)
    				c +=(float) L[j][k] * U[k][i];
    			L[j][i] =(float) (1/U[i][i]) * (A[j][i] - c);	//Cot i cua L
    		}	
    	}
    	float m1=0;
    	for(int k=1;k<=n-1;k++)
    		m1 +=(float) L[n][k] * U[k][n];
    	U[n][n] =(float) A[n][n] - m1;
    	if(U[n][n] == 0){
    		cout<<"Khong ton tai phan tich LU";
    		exit(1);
    	}
    	cout<<"\nMa tran L: ";
    	Xuat(L,n);
    	cout<<"\nMa tran U: ";
    	Xuat(U,n);
    	
    	// Giai he Ly=b
    	float y[n+1];		
    	y[1] = B[1];
    	for(int i=2;i<=n;i++)
    	{
    		float m2=0;
    		for(int j=1;j<=i-1;j++)	
    			m2 +=(float) L[i][j] * y[j];
    		y[i] =(float) B[i] - m2;
    	}	
    	
    	// Giai he Ux=b 
    	
    	float x[n+1];
    	x[n] =(float) y[n] / U[n][n];
    	for(int i=n-1; i>=1; i--){
    		float m3=0;
    		for(int j=i+1; j<=n ;j++)	
    			m3 +=(float) U[i][j] * x[j];
    		x[i] =(float) (y[i] - m3) / U[i][i];
    	}	
    	//In ra nghiem x
    	cout<<"\nHe co nghiem la: \n";
    	for(int i=1;i<=n;i++)	
    		cout<<x[i]<<"\t";
    	getch();
    	return 0;
    }
    Đã được chỉnh sửa lần cuối bởi changtraihaohoa : 28-11-2018 lúc 10:02 PM. Lý do: Sai cú pháp code

  2. #2
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất đông người
    Bài viết
    531

    Hàng đầu tiên, cột đầu tiên là hàng 0, cột 0 nhé.
    -...- -.- .. .-.. .-.. - .... . -... . .- ... - .-.-.

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn