Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Sashak
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 21
#1

Метод пополнения. Метод Ершова - C++

06.12.2013, 23:01. Просмотров 599. Ответов 0
Метки нет (Все метки)

Имеется код в Mathematica for student:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Clear[a, A, dop];
A = a = ( {
     {1, 0.42, 0.54, 0.66},
     {0.42, 1, 0.32, 0.44},
     {0.54, 0.32, 1, 0.22},
     {0.66, 0.44, 0.22, 1}
    } );
dop = Table[0, {4}, {4}];
For[k = 1, k <= 4,
  For[i = 1, i <= Length[a],
   For[j = 1, j <= Length[a],
    If[i == k && j == k, dop[[i, j]] = 1/A[[k, k]]];
    If[i != k && j == k, dop[[i, j]] = A[[i, k]]/A[[k, k]]];
    If[i == k && j != k, dop[[i, j]] = -( A[[k, j]]/A[[k, k]])];
    If[i != k && j != k, 
     dop[[i, j]] = A[[i, j]] - A[[i, k]]/A[[k, k]]*A[[k, j]]];
    Print["k=", k, " ;i=", i, " ; j=", j, " ; a=", MatrixForm[dop]]
     j++];
   i++];
  A = dop;
  k++];
Print["Inverse Matrix=", MatrixForm[A]];
всё это мне необходио перевести на С++
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
    const int n = 4;
//Clear[a, A, dop];
 
    double a[n][n] = {1.0, 0.42, 0.54, 0.66,
                      0.42, 1.0, 0.32, 0.44, 
                      0.54, 0.32, 1.0, 0.22,
                      0.66, 0.44, 0.22, 1.0}, 
    dop[n][n];
    for(int k = 0; k < n;k++){
        for(int i = 0; i <n;i++){
            for(int j = 0; j <n;j++){
    if((i == k) && (j == k))
        dop[i][j] = 1/(a[k][k]);
    if((i != k) && (j == k))
        dop[i][j] = (a[i][k])/(a[k][k]);
    if((i == k) && (j != k))
        dop[i][j] = -((a[k][j])/(a[k][k]));
    if((i != k) && (j != k)) 
     dop[i][j] = a[i][j] - (((a[i][k])/(a[k][k]))*(a[k][j]));
    cout<<"k= "<< k<< " i="<< i<< "  j= "<< j<< "  a= "<< dop[i][j]<<endl;
        a[i][j] = dop[i][j];    }}
        //a[i][j] = dop[i][j];
    }
    cout<<"Inverse Matrix = "<<endl;
    for(int i = 0; i < n; i++)
    {
    for(int j = 0; j < n; j++)
        cout<<a[i][j]<<"  ";
    }
    cin.get();
    cin.get();
 
    return 0;
}
в математике получается :
C++
1
2
3
4
My Inverse Matrix=(2.50759    -0.123039 -1.01149    -1.37834
                         -0.123039   1.33221    -0.261427   -0.447454
                          -1.01149   -0.261427  1.53183 0.445609
                          -1.37834  -0.447454 0.445609   2.00855)
в с++ должно быть это же самое.
Подскажите пожалуйста что не так..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.12.2013, 23:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Метод пополнения. Метод Ершова (C++):

СЛАУ. Метод обратной матрицы, метод Гаусса, метод Крамера, метод Зейделя - C++
Помогите ребят. Не могу построить алгоритмы для этих методов Язык C++

Метод медиан из трех элементов VS улучшенный быстрый метод сортировки(метод Бентли-Макилроя) - C++
Здравствуйте! Дали весьма интересное задание. Сравнить два вышеуказанных метода сортировки для массива из 10000 элементов, результаты...

Мой код - метод бисекции, метод секущих (метод хорд) - C++
Всем привет!!! Изучаем в институте С++. Сделал код, и там, и там одна и та же проблема - при любых вбиваемых значениях программа делает...

Исследовать итерационный метод- метод касательных для решения нелинейных уравнений - C++
прочитал много всего , но сам пример реализовать никак не могу , кто может помогите F(x) = x5+5x+1=0 с...

Не сходится теория и практика метод Шелла и метод простого выбора - C++
Здравствуйте! Помогите пожулуйста найти ошибке в коде, Я уже не знаю где ее искать. У меня метод простого выбора работает по показателям...

Метод деления отрезка пополам для решения нелинейных уравнений (метод дихотомии) - C++
Здравствуйте. Помогите пожалуйста дописать программу. Вот что вымучал, но на сдаче завалили, типо нет вывода корней, не рассмотрены...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2013, 23:01
Привет! Вот еще темы с ответами:

Нахождения корней уравнения: метод половинного деления (бисекции) или метод хорд - C++
Разработать программу нахождения корней уравнения f(x) =0 на интервале с точностью e = 0,001 (интервал или подобрать самостоятельно). При...

Производный класс: метод возведения в произвольную степень, и метод для вычисления логарифма числа - C++
Реализовать класс-оболочку Number для числового типа float. Реализовать методы сложения и деления. Создать производный класс Real, в...

Класс vector (поля: координаты, 2 конструктора, метод нахождения длины вектора и метод вывода координат на экран) - C++
Здравствуйте , помогите пожалуйста с заданием. Организовать класс Вектор на плоскости – поля: координаты, 2 конструктора, метод...

Метод Эйлера, и Метод Лагранжа, в долгу не останусь - C++
1)Метод Эйлера 2)Теорема Лагранжа задания вложены


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru