Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Описание массив из комплексных чисел, Описание массив из комплексных чисел 
:(
    Опции темы
SegPro
Дата 31.5.2014, 08:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 31.5.2014

Репутация: нет
Всего: нет



Здравствуйте, нужна помощь. Мне нужно написать программу для решения системы с комплексными числами методом Гаусса. Сам алгоритм решения я написал. но как описать комплексные числа. Я понял что нужно описать класс Complex. В интернете даже готовый есть. Но я не понимаю как описать массив типа Complex. В Java только разбираться начал, поэтому не очень сращиваю. Вот код реализации метода Гаусса.

Код

public class Gauss{
    static int i,j,n,k,h,c;
    double m,s;
    static boolean f;
    static double[][] buf;
    static double[][] matrix;
    static double[] b,x;
    static void Prisvoi(int n){
        buf = new double[n][n];
        matrix = new double[n][n];
        b = new double[n];    
        x = new double[n];
        k=0; c=0; f=false;
    }
    void MetodGaussa(){
        //Прямой ход
        for(h=1;h<n;h++){
            if(matrix[k][k]==0){
                for(i=1+k;i<n;i++){if(matrix[i][k]!=0){c=i;}
                if(c!=0){
                    for(j=0;j<n;j++){
                        buf[0][j]=matrix[k][j];
                        matrix[k][j]=matrix[c][j];
                        matrix[c][j]=buf[0][j];
                        if(j==n-1){
                         buf[0][j+1]=b[k];
                            b[k]=b[c];
                            b[k]=buf[0][j+1];
                        }
                    }
                    //buf=nill;
                    for(i=1+k;i<n;i++){
                        for(j=0+k;j<n;j++){
                            if(j==0+k){m=matrix[i][k]/matrix[k][k];}
                            matrix[i][j]=matrix[i][j]-matrix[k][j]*m;
                            if(j==n-1){b[i]=b[i]-b[k]*m;}
                        }
                        f=true;
                    }
                }
                else{
                    System.out.println("Нет максимума в системе уравнений");
                    f=false;
                }
                }
            }
            else{
                for(i=1+k;i<n;i++){
                    for(j=0+k;j<n;j++){
                        if(j==0+k){m=matrix[i][k]/matrix[k][k];}
                        matrix[i][j]=matrix[i][j]-matrix[k][j]*m;
                        if(j==n-1){b[i]=b[i]-b[k]*m;}
                    }
                } 
                f=true;
            }
        }
        //Расчёт корней
        if(f==true){
            if(matrix[n-1][n-1]==0){
                x[n-1]=b[n-1]/matrix[n-1][n-1];
                for(i=n-2;i>-1;i--){
                    s= 0;
                    for(j=i+1;j<n;j++){s=s-matrix[i][j]*x[j];}
                    x[i]=(b[i]+s)/matrix[i][i];
                }
            }
            else{
                if(b[n-1]==0){System.out.println("Система уравнений не имеет решения");}
                else System.out.println("Система уравений имеет бесконечное множество решений");
            }
        }
    }

PM MAIL   Вверх
_Y_
Дата 31.5.2014, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 5
Всего: 34



Массив как примитивов, так и объектов любого класса описывается одинаково:
Код

Complex[] myComplexArray;

Можно его и инициализировать сразу. При этом будет создана не только переменная, указывающая на массив, но и отведена память под массив нужного размера (например для 2 объектов класса Complex):
Код

Complex[] myComplexArray = new Complex[20]; 

Можно сразу и инициализировать (создать) каждый объект:
Код

Complex[] myComplexArray = {new Complex(1,1), new Complex(1,2)};

Не уверен, что объекты класса Complex имеют такой конструктор - это я сам придумал.

Кстати, Ваш код класс Complex не использует. 

Да и сама архитектура кода несколько "странная". Не то, чтобы так совсем уж нельзя было, но, похоже, Вы сумели пойти наперекор всем добрым советам по написанию Java кода smile 




--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
SegPro
Дата 1.6.2014, 07:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 31.5.2014

Репутация: нет
Всего: нет



Цитата(_Y_ @ 31.5.2014,  21:41)
Массив как примитивов, так и объектов любого класса описывается одинаково:
Код

Complex[] myComplexArray;

Можно его и инициализировать сразу. При этом будет создана не только переменная, указывающая на массив, но и отведена память под массив нужного размера (например для 2 объектов класса Complex):
Код

Complex[] myComplexArray = new Complex[20]; 

Можно сразу и инициализировать (создать) каждый объект:
Код

Complex[] myComplexArray = {new Complex(1,1), new Complex(1,2)};

Не уверен, что объекты класса Complex имеют такой конструктор - это я сам придумал.

Кстати, Ваш код класс Complex не использует. 

Да и сама архитектура кода несколько "странная". Не то, чтобы так совсем уж нельзя было, но, похоже, Вы сумели пойти наперекор всем добрым советам по написанию Java кода smile

Алгоритм Гаусса вообще писался на Пскале...а это я его просто прикрутить пытаюсь...кстате спасибо за совет...получается нужно просто создать каждый объект для каждого комплексного числа...и уже работать с полями этих объектов
PM MAIL   Вверх
_Y_
Дата 1.6.2014, 08:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 5
Всего: 34



Цитата(SegPro @  1.6.2014,  07:29 Найти цитируемый пост)
.и уже работать с полями этих объектов 

Если строго придерживаться идеологии написания кода, то работать надо не с полями, а с методами Get и Set (ну или как они назваются у класса Complex), сами же поля должны быть недоступны для внешнего кода (инкапсулированы).

Но это, естественно, вопрос Ваших собственных взглядов: кто-то старается написать код побыстрее, кто-то поидеальнее, большинство пишет что-то промежуточное.


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
SegPro
Дата 2.6.2014, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 31.5.2014

Репутация: нет
Всего: нет



Спасибо уже разобрался с вопросом
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0425 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.