задача на с++ линейной алгебры

Тема в разделе "C/C++/C#", создана пользователем -, 11 дек 2010.

  1. Гость

    ПОМОГИТЕ РЕШИТЬ ЗАДАЧУ
    Решить СЛАУ A2X=YT,
    где A =
    ∣2 1 5 2
    5 2 2 6
    2 2 1 2
    1 3 3 1∣
    Y = [3 1 2 1 ]
     
  2. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Ксюха761 , Ксения, опять же скажу... Я уже как почти 5 лет как закончил университет, мне фраза:
    практически ни о чем не говорит, могу только предполагать, что это связанно с "системой линейных ... уровнений"
    Хочется увидить (раз нет кода) хотя бы отрывки теории, и тогда поверьте, за милую душу наша группа (C/С++ Team) вам поможет...
    Иначе подумайте сами, люди из группы затратят время на поиск теории, а в это время ваша задача уже уйдет из актуальных, и в конечном итоге так и останется без ответа...
    Так что надеюсь на ваше участие(!!!) и понимаение...
     
  3. Гость

    а теории нет никакой просто дали задачу и все...((
     
  4. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Понял Ксения... Действительно такое былает... Вы заочник??? Я завтра... Попробую понятно описать каждое решение....
    Если конечно все успею... (одну я вам написал, если какие то моменты не понятны, опишите из в той теме)....
     
  5. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Где то видно ошибку в методе Якобби допустил.. Завтра буду искать...

    Код (C++):
    /*
    codeby.net
    Autor: DarkKnight125 (Denis Goncharov)
    */

    #include <iostream>

    using namespace std;

    //Метод Якоби (простая итерация)
    void MJacobi (int Size, double **A, double *F, double *X, double eps)
    // Size - размерность матрицы; A[Size][Size] - матрица коэффициентов, F[Size] - столбец свободных членов,
    // X[Size] - начальное приближение, ответ записывается также в X[Size];
    // esp - точность
    {
    double * TempX = new double[Size];
    double norm; // норма, определяемая как наибольшая разность компонент столбца иксов соседних итераций.

    do {
    for (int i = 0; i < Size; i++)
    {
    TempX[i] =- F[i];
    for (int g = 0; g < Size; g++)
    {
    if (i != g)
    TempX[i] += A[i][g] * X[g];

    }
    TempX[i] /= -A[i][i];

    }
    norm = abs(X[0] - TempX[0]);
    for (int h = 0; h < Size; h++) {
    if (abs(X[h] - TempX[h]) > norm)
    norm = abs(X[h] - TempX[h]);
    X[h] = TempX[h];
    }
    } while (norm > eps);
    delete[] TempX;
    }

    //Основная функция программы
    void main(void)
    {
    setlocale(LC_ALL,".1251");
    const int Size = 4; //Размер уравнение (кол-во уранений и коэффициентов)

    //Исходные данные
    double A[Size][Size] = {
    {2,1,5,2},
    {5,2,2,6},
    {2,2,1,2},
    {1,3,3,1}
    };

    double Y[Size] = {3,1,2,1};


    //Ввод x и t
    double x,t;
    cout << "Введите x = ";
    cin >> x;
    cout << "Введите t = ";
    cin >> t;

    //Приведем к СЛАУ A2X=YT,
    double **Arr = new double*[Size]; //Выделим память под строки
    for (int i = 0; i< Size; i++)
    {
    Y[i] = Y[i] * t;
    Arr[i] = new double[Size]; //Выделим память под строки столбцы
    for (int j = 0; j< Size; j++)
    {
    Arr[i][j] = 2*x* A[i][j];
    Arr[i][j] = A[i][j];
    }
    }

    double ArrResult[Size]={0}; //Результ. матрица
    double esp = 10.0; //Точность

    //Решим СЛАУ с помощью метода Якобби
    MJacobi(Size, Arr,Y, ArrResult ,esp);

    cout<< "Результат : " << endl;
    for (int i = 0; i < Size; i++)
    {
    cout << ArrResult[i] << endl;
    }


    }
     
Загрузка...
Похожие Темы - задача на с++
  1. Аделина
    Ответов:
    1
    Просмотров:
    976
  2. Inforus10
    Ответов:
    4
    Просмотров:
    1.680
  3. astorr
    Ответов:
    0
    Просмотров:
    933
  4. filin94
    Ответов:
    1
    Просмотров:
    1.724
  5. morpheus
    Ответов:
    0
    Просмотров:
    1.773

Поделиться этой страницей