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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.03.2010, 12:38   #1
Space1
Новичок
Джуниор
 
Регистрация: 02.03.2010
Сообщений: 2
По умолчанию Метод Гаусса с использованием библиотеки STL

Здравствуйте
Не могли бы помочь реализовать метод Гаусса для решения СЛАУ с использованием STL (через vector и <algorithm>)? И еще требуется использовать не двумерный массив для задания коэф ai, а одномерный: т.е. вместо a[N][N] нужно использовать a[N*N]

Если же через STL слишком трудоемко, можете мой код переписать для одномерного массива? (Вместо gauss1[N][N] надо gauss1[N*N])
Код:
#include <iostream>
#include <time.h>
using namespace std;
int n;
double c,d,det;
 main ()
{
      srand((unsigned)time(NULL));
cout << "n=";
cin >> n;
double **gauss1 = new double*[n];
for(int i=0; i<n; i++)
gauss1[i] = new double[n];
double *y = new double[n];
double *gauss2 = new double[n];
 
for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
{
       gauss1[i][j] = rand()/100; 
//cout << "gauss1["<< i << "][" << j << "]=";
//cin >> gauss1[i][j];
}
}
 
for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
{
      // gauss1[i][j] = rand()/100; 
cout << "gauss1["<< i << "][" << j << "]=";
cout <<  gauss1[i][j];
cout << "\n";
}
}
for(int j=0; j<n; j++)
{
cout << "gauss2[" << j << "]=";
cin >> gauss2[j];
}
for(int i=0; i<n; i++)
 
 
 
//Triangulycia
 
for(int k=0; k<n-1; k++)
{
for(int i=k+1; i<n; i++)
{
d=gauss1[i][k]/gauss1[k][k];
gauss1[i][k]=0;
 
for(int j=k+1; j<n; j++)
gauss1[i][j]=gauss1[i][j]-d*gauss1[k][j];
gauss2[i]=gauss2[i]-d*gauss2[k];
}
 
/*
//Formiruet v vide matrix
cout << "\n";
for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
cout << "\n\t" << gauss1[i][j];
//printf("\n%f\t",gauss2[i]);
//printf("\n");
}*/
y[n-1]=gauss2[n-1]/gauss1[n-1][n-1];
for(int i=n-1; i>=1; i--)
 
c=0;
for(int j=i+1; j<n; j++)
c=c+gauss1[i][j]*y[j];
y[i]=(gauss2[i]-c)/gauss1[i][i];
 
}
 
//Glavnye peremennye
cout << "\n"; 
cout.precision(18);
for(int i=0; i<n; i++)
cout << "y[" << i << "]=" << y[i] << "\n";
 
 
//Determinant
det =1;
for(int i=0;i<n; i++)
det = det*gauss1[i][i];
cout << "\n Determinant= " << det;
 
cin.get();
cin.get();
}
Заранее Спасибо

Последний раз редактировалось Space1; 02.03.2010 в 12:46.
Space1 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Метод Гаусса mbeats Общие вопросы C/C++ 5 01.01.2010 20:07
Проблема с использованием вектора STL C++ Ultimateorb Помощь студентам 2 18.08.2009 00:40
Безумно сложные задачки!!!! Метод Гаусса, итераций, метод половинного деления, задача Коши и т.д. Хомяк!!!!! Помощь студентам 4 08.07.2009 10:08
Программа с использованием STL. Где ошибка?! Jarik Общие вопросы C/C++ 1 04.03.2009 10:32
Help!!! Метод Гаусса Надя Microsoft Office Excel 7 07.05.2008 00:45