Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.05.2013, 22:30   #1
Psychoo
 
Регистрация: 05.11.2011
Сообщений: 5
По умолчанию Метод Гаусса с выбором основного элемента(Java)

Здраствуйте, у меня возникла проблема с методом Гаусса с выбором основного элемента. Проблема в преобразовании матрицы в треугольную матрицу (не понимаю , где ошибка ,но она есть).
Код:
public class GausTest {
	public static void main(String[] args) {
    	int n = 3;double Amax = 0;
    	//Задание матрицы Х
    	double[] X = new double[n]; 
    	//Задание матрицы коеффициентов
    	double[][] A = { {2,1,4},
    	                 {7,0,2},
    	                 {0,5,1}
    	               };
    	//Задание матрицы свободных членов
    	double [] B = {1,1,1};
    	for(int k = 0;k<=n-1;k++) {
    	   Amax = A[k][k];
    		int l = k;
    	    for(int i = k+1;i<n;i++) {
    	    	//Максимум по модулю
    	    	if(Math.abs(A[i][k])>Math.abs(Amax)) {
    	    		 Amax = A[i][k] ;
    	    		l = i;
    	    	               }
    	    	
    	                             }
    	    if(k!=l) {
    	    	//Замена уравнений
    	       	for(int j = 0;j<n;j++) {
    	       		double temp = 0;
    	       		temp = A[l][j];
    	       		A[l][j] = A[k][j];
    	       		A[k][j] = temp;
    	       	                       }
    	       	
    	            }
    	    
    	   for(int i = k+1;i<n;i++) {
    		//   System.out.print("Крок i: "+i);
    		//   System.out.println(" Крок k:"+k);
    		//Множитель   
    	   double m = A[i][k]/A[k][k];
    	     //  System.out.println("Множник: "+m);
    	     //Преобразование в треугольный вид
    	      for(int j = 0;j<n;j++) {
    	    	  A[i][j] = A[i][j]- m*A[k][j];
    	      }
    //	      for(int v = 0;v<n;v++) {
    //	    	  for(int b = 0;b<n;b++) {
    //	    	  System.out.print(A[v][b]+" ");
    //	    	  }
    //	    	  System.out.println();
    //	      }
    //	      System.out.println("------------------------------");
    	      B[i] = B[i] - m*B[k];
    	      
    	     }
    	   }
    	 //Решение треугольной матрицы
    	 X[n-1] = B[n-1]/A[n-1][n-1];
    	
    	 for(int i = n-2;i>=0;i--) {
    		 double S = 0;
    		 for(int j = i+1;j<n;j++) {
    			 S += A[i][j]*X[j];
    		 }
    		 X[i] = (B[i]-S)/A[i][i];
    	 }
    	
    	 //Вывод матриц
    	for(int i = 0;i<n;i++) {
    		for(int j = 0;j<n;j++) {
    			System.out.print(A[i][j]+" ");
    		}
    		System.out.println();
    	}
    	System.out.println("---------------------------");
    	for (int i = 0;i<n;i++) {
    		System.out.print(B[i]+" ");
    	}
    	System.out.println();
    	System.out.println("---------------------------");
    	
    	for(int i = 0;i<n;i++) {
    		System.out.print(X[i]+" ");
    	}
           	
    }
}
Psychoo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
преобразовать метод гаусса с выбором главного элемента Рагнара Microsoft Office Excel 1 10.05.2013 04:10
Исправить ошибки в программе метод гаусса с выбором главного элемента Никита1992 Помощь студентам 0 08.05.2012 16:43
Метод Гаусса с выбором главного элемента Fantom.as Общие вопросы C/C++ 2 17.02.2011 19:35
Метод Гаусса с выбором главного элемента Fantom.as Помощь студентам 1 16.02.2011 12:48
метод Гаусса с выбором ведущего элемента по ВСЕЙ матрице. mthmtcn Помощь студентам 2 22.02.2010 05:43