0 / 0 / 1
Регистрация: 29.09.2014
Сообщений: 97
1

Численное решение системы линейных уравнений

12.12.2014, 03:40. Показов 1335. Ответов 7
Метки нет (Все метки)

Решить систему линейных уравнений:
-сформировать матрицу А коэффициентов и матрицу В правых частей (матрицы должны быть размещены в файле in_file.txt);
-вычислить обратную матрицу https://www.cyberforum.ru/cgi-bin/latex.cgi?{A}^{-1};
-вычислить матрицу X - решение системы уравнений;
-напечатать решение в файл o_file.txt


x1-x2+x4=0
x2-x3+x5=0
-x1+x3+x6+0
-5*x1-25*x2-9*x3=-2
25*x2+7*x4-43*x5=17
9*x3+43*x5-31*x6=-20

P.S. впереди фигурная скобка.


Вот такая вот задачка, как найти правильно обратную матрицу не пойму, выходит ерунда!
Выручайте, помогите разобраться во всем этом задании
Если не сложно, то желательно программу написать с комментариями, что бя я вас не переспрашивал по сто раз, что и где происходит и т.п., новичок же еще
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.12.2014, 03:40
Ответы с готовыми решениями:

Решение системы линейных уравнений
Компилятор wxDev-c++. Ошибка:C:\Program Files\Dev-Cpp\çàäà÷è\ãëàâà1\Ïåðâàÿ çàäà÷à\Makefile.win ...

Решение системы линейных уравнений
Помогите решить на Си

Решение системы линейных уравнений
Не могу сделать прогу на С++. Кто сделает - огромное спасибо. Решить систему линейных уравнений...

Решение системы линейных уравнений.
\begin{cases} & \text{ } cos(ax+2)...... x>2 \\ & \text{ } tg |x-2a| .... .. x\leq 2...

7
Модератор
Эксперт С++
12088 / 9763 / 5906
Регистрация: 18.12.2011
Сообщений: 26,213
12.12.2014, 05:27 2
Большая коллекция решенных задач
См. спойлер Решение систем линейных уравнений.
0
0 / 0 / 1
Регистрация: 29.09.2014
Сообщений: 97
13.12.2014, 22:43  [ТС] 3
Это конечно хорошо, но там не совсем то, что мне нужно...
0
0 / 0 / 1
Регистрация: 29.09.2014
Сообщений: 97
15.12.2014, 03:42  [ТС] 4
Помогите пожалуйста сделать по данному заданию решение этих уравнений, с меня спасибо конечно же....
0
0 / 0 / 1
Регистрация: 29.09.2014
Сообщений: 97
21.12.2014, 00:54  [ТС] 5
Подскажите, пожалуйста, как можно решить данную систему уравнение (т.е. матрица 6 на 6) методом Крамера?

Добавлено через 8 часов 44 минуты
Неужели так никто и не поможет? Я просто в этом деле еще новичок. Просматривал я кодировки, где решается методом Гауса, но это не то, мне нужно именно Крамера, так что что бы еще была видна обратная матрица.
Все это сделать очень сложно, для меня, уж точно.
0
0 / 0 / 1
Регистрация: 29.09.2014
Сообщений: 97
23.12.2014, 21:21  [ТС] 6
zss, можете ли вы помочь с данной задачей?
Цитата Сообщение от qwen1234 Посмотреть сообщение
Решить систему линейных уравнений:
-сформировать матрицу А коэффициентов и матрицу В правых частей (матрицы должны быть размещены в файле in_file.txt);
-вычислить обратную матрицу ;
-вычислить матрицу X - решение системы уравнений;
-напечатать решение в файл o_file.txt
x1-x2+x4=0
x2-x3+x5=0
-x1+x3+x6+0
-5*x1-25*x2-9*x3=-2
25*x2+7*x4-43*x5=17
9*x3+43*x5-31*x6=-20
0
Модератор
Эксперт С++
12088 / 9763 / 5906
Регистрация: 18.12.2011
Сообщений: 26,213
23.12.2014, 21:36 7
Так этот пример практически то, что у Вас:
Крамер для коллекции
0
0 / 0 / 1
Регистрация: 29.09.2014
Сообщений: 97
05.01.2015, 22:19  [ТС] 8
Подскажите, пожалуйста, где у меня тут есть ошибка? Это все по той же теме, вроде все хорошо, но программа выдает не то, что нужно, если говорить о том, что она выдает, то вот:
Кликните здесь для просмотра всего текста
3.53562e+041 1.08434e-311 2.69493e-312 3.14281e-317 6.94713e-308
6.94796e-308 1.21696e-008 6.94772e-308 2.1319e-312 1.08434e-311
2.12213e-313 1.4822e-323 1.08434e-311 5.57703e-307 -1.#QNAN
6.36887e-314 5.03947e-322 2.92907e+267 6.94803e-308 7.35627e-314
1.31778e+048 1.08434e-311 4.41376e-312 1.79087e-307 3.05514e+267

1.#QNAN 1.#QNAN 1.#QNAN 0 6.94713e-308
1.#QNAN 1.#QNAN 1.#QNAN 0 1.08434e-311
1.#QNAN 1.#QNAN 1.#QNAN 1.#QNAN 1.#QNAN
6.36887e-314 5.03947e-322 2.92907e+267 6.94803e-308 7.35627e-314
1.31778e+048 1.08434e-311 4.41376e-312 1.79087e-307 3.05514e+267

1.#QNAN 1.#QNAN 1.#QNAN 0 6.94713e-308
1.#QNAN 1.#QNAN 1.#QNAN 0 1.08434e-311
1.#QNAN 1.#QNAN 1.#QNAN 1.#QNAN 1.#QNAN
6.36887e-314 5.03947e-322 2.92907e+267 6.94803e-308 7.35627e-314
1.31778e+048 1.08434e-311 4.41376e-312 1.79087e-307 3.05514e+267

1.#QNAN 1.#QNAN 1.#QNAN 0 6.94713e-308
1.#QNAN 1.#QNAN 1.#QNAN 0 1.08434e-311
1.#QNAN 1.#QNAN 1.#QNAN 1.#QNAN 1.#QNAN
6.36887e-314 5.03947e-322 2.92907e+267 6.94803e-308 7.35627e-314
1.31778e+048 1.08434e-311 4.41376e-312 1.79087e-307 3.05514e+267

1.#QNAN 1.#QNAN 1.#QNAN 0 6.94713e-308
1.#QNAN 1.#QNAN 1.#QNAN 0 1.08434e-311
1.#QNAN 1.#QNAN 1.#QNAN 1.#QNAN 1.#QNAN
6.36887e-314 5.03947e-322 2.92907e+267 6.94803e-308 7.35627e-314
1.31778e+048 1.08434e-311 4.41376e-312 1.79087e-307 3.05514e+267

1.#QNAN 1.#QNAN 1.#QNAN 0 6.94713e-308
1.#QNAN 1.#QNAN 1.#QNAN 0 1.08434e-311
1.#QNAN 1.#QNAN 1.#QNAN 1.#QNAN 1.#QNAN
6.36887e-314 5.03947e-322 2.92907e+267 6.94803e-308 7.35627e-314
1.31778e+048 1.08434e-311 4.41376e-312 1.79087e-307 3.05514e+267

-1 0 1 0 0
1.#QNAN 1.#QNAN 1.#QNAN 0 1.08434e-311
1.#QNAN 1.#QNAN 1.#QNAN 1.#QNAN 1.#QNAN
6.36887e-314 5.03947e-322 2.92907e+267 6.94803e-308 7.35627e-314
1.31778e+048 1.08434e-311 4.41376e-312 1.79087e-307 3.05514e+267

0 0 1 0 0
1.#QNAN 1.#QNAN 1.#QNAN 0 1.08434e-311
1.#QNAN 1.#QNAN 1.#QNAN 1.#QNAN 1.#QNAN
6.36887e-314 5.03947e-322 2.92907e+267 6.94803e-308 7.35627e-314
1.31778e+048 1.08434e-311 4.41376e-312 1.79087e-307 3.05514e+267

0 1 1 0 0
1.#QNAN 1.#QNAN 1.#QNAN 0 1.08434e-311
1.#QNAN 1.#QNAN 1.#QNAN 1.#QNAN 1.#QNAN
6.36887e-314 5.03947e-322 2.92907e+267 6.94803e-308 7.35627e-314
1.31778e+048 1.08434e-311 4.41376e-312 1.79087e-307 3.05514e+267

0 1 -1 0 0
1.#QNAN 1.#QNAN 1.#QNAN 0 1.08434e-311
1.#QNAN 1.#QNAN 1.#QNAN 1.#QNAN 1.#QNAN
6.36887e-314 5.03947e-322 2.92907e+267 6.94803e-308 7.35627e-314
1.31778e+048 1.08434e-311 4.41376e-312 1.79087e-307 3.05514e+267

0 1 -1 0 0
1.#QNAN 1.#QNAN 1.#QNAN 0 1.08434e-311
1.#QNAN 1.#QNAN 1.#QNAN 1.#QNAN 1.#QNAN
6.36887e-314 5.03947e-322 2.92907e+267 6.94803e-308 7.35627e-314
1.31778e+048 1.08434e-311 4.41376e-312 1.79087e-307 3.05514e+267

0 1 -1 0 1
1.#QNAN 1.#QNAN 1.#QNAN 0 1.08434e-311
1.#QNAN 1.#QNAN 1.#QNAN 1.#QNAN 1.#QNAN
6.36887e-314 5.03947e-322 2.92907e+267 6.94803e-308 7.35627e-314
1.31778e+048 1.08434e-311 4.41376e-312 1.79087e-307 3.05514e+267

-1 0 1 0 0
1 -1 0 1 0
1.#QNAN 1.#QNAN 1.#QNAN 1.#QNAN 1.#QNAN
6.36887e-314 5.03947e-322 2.92907e+267 6.94803e-308 7.35627e-314
1.31778e+048 1.08434e-311 4.41376e-312 1.79087e-307 3.05514e+267

0 0 1 0 0
-1 -1 0 1 0
1.#QNAN 1.#QNAN 1.#QNAN 1.#QNAN 1.#QNAN
6.36887e-314 5.03947e-322 2.92907e+267 6.94803e-308 7.35627e-314
1.31778e+048 1.08434e-311 4.41376e-312 1.79087e-307 3.05514e+267

0 1 1 0 0
-1 0 0 1 0
1.#QNAN 1.#QNAN 1.#QNAN 1.#QNAN 1.#QNAN
6.36887e-314 5.03947e-322 2.92907e+267 6.94803e-308 7.35627e-314
1.31778e+048 1.08434e-311 4.41376e-312 1.79087e-307 3.05514e+267

0 1 -1 0 0
-1 0 1 1 0
1.#QNAN 1.#QNAN 1.#QNAN 1.#QNAN 1.#QNAN
6.36887e-314 5.03947e-322 2.92907e+267 6.94803e-308 7.35627e-314
1.31778e+048 1.08434e-311 4.41376e-312 1.79087e-307 3.05514e+267

0 1 -1 0 0
-1 0 1 0 0
1.#QNAN 1.#QNAN 1.#QNAN 1.#QNAN 1.#QNAN
6.36887e-314 5.03947e-322 2.92907e+267 6.94803e-308 7.35627e-314
1.31778e+048 1.08434e-311 4.41376e-312 1.79087e-307 3.05514e+267

0 1 -1 0 1
-1 0 1 0 0
1.#QNAN 1.#QNAN 1.#QNAN 1.#QNAN 1.#QNAN
6.36887e-314 5.03947e-322 2.92907e+267 6.94803e-308 7.35627e-314
1.31778e+048 1.08434e-311 4.41376e-312 1.79087e-307 3.05514e+267

-1 0 1 0 0
1 -1 0 1 0
0 1 0 0 1
6.36887e-314 5.03947e-322 2.92907e+267 6.94803e-308 7.35627e-314
1.31778e+048 1.08434e-311 4.41376e-312 1.79087e-307 3.05514e+267

0 0 1 0 0
-1 -1 0 1 0
-5 1 0 0 1
6.36887e-314 5.03947e-322 2.92907e+267 6.94803e-308 7.35627e-314
1.31778e+048 1.08434e-311 4.41376e-312 1.79087e-307 3.05514e+267

0 1 1 0 0
-1 0 0 1 0
-5 -25 0 0 1
6.36887e-314 5.03947e-322 2.92907e+267 6.94803e-308 7.35627e-314
1.31778e+048 1.08434e-311 4.41376e-312 1.79087e-307 3.05514e+267

0 1 -1 0 0
-1 0 1 1 0
-5 -25 -9 0 1
6.36887e-314 5.03947e-322 2.92907e+267 6.94803e-308 7.35627e-314
1.31778e+048 1.08434e-311 4.41376e-312 1.79087e-307 3.05514e+267

0 1 -1 0 0
-1 0 1 0 0
-5 -25 -9 0 1
6.36887e-314 5.03947e-322 2.92907e+267 6.94803e-308 7.35627e-314
1.31778e+048 1.08434e-311 4.41376e-312 1.79087e-307 3.05514e+267

0 1 -1 0 1
-1 0 1 0 0
-5 -25 -9 0 0
6.36887e-314 5.03947e-322 2.92907e+267 6.94803e-308 7.35627e-314
1.31778e+048 1.08434e-311 4.41376e-312 1.79087e-307 3.05514e+267

-1 0 1 0 0
1 -1 0 1 0
0 1 0 0 1
-25 -9 0 0 0
1.31778e+048 1.08434e-311 4.41376e-312 1.79087e-307 3.05514e+267

0 0 1 0 0
-1 -1 0 1 0
-5 1 0 0 1
0 -9 0 0 0
1.31778e+048 1.08434e-311 4.41376e-312 1.79087e-307 3.05514e+267

0 1 1 0 0
-1 0 0 1 0
-5 -25 0 0 1
0 25 0 0 0
1.31778e+048 1.08434e-311 4.41376e-312 1.79087e-307 3.05514e+267

0 1 -1 0 0
-1 0 1 1 0
-5 -25 -9 0 1
0 25 0 0 0
1.31778e+048 1.08434e-311 4.41376e-312 1.79087e-307 3.05514e+267

0 1 -1 0 0
-1 0 1 0 0
-5 -25 -9 0 1
0 25 0 7 0
1.31778e+048 1.08434e-311 4.41376e-312 1.79087e-307 3.05514e+267

0 1 -1 0 1
-1 0 1 0 0
-5 -25 -9 0 0
0 25 0 7 -43
1.31778e+048 1.08434e-311 4.41376e-312 1.79087e-307 3.05514e+267

-1 0 1 0 0
1 -1 0 1 0
0 1 0 0 1
-25 -9 0 0 0
25 0 7 -43 0

0 0 1 0 0
-1 -1 0 1 0
-5 1 0 0 1
0 -9 0 0 0
0 0 7 -43 0

0 1 1 0 0
-1 0 0 1 0
-5 -25 0 0 1
0 25 0 0 0
0 0 7 -43 0

0 1 -1 0 0
-1 0 1 1 0
-5 -25 -9 0 1
0 25 0 0 0
0 0 9 -43 0

0 1 -1 0 0
-1 0 1 0 0
-5 -25 -9 0 1
0 25 0 7 0
0 0 9 0 0

0 1 -1 0 1
-1 0 1 0 0
-5 -25 -9 0 0
0 25 0 7 -43
0 0 9 0 43

1.#QNAN 1.#QNAN 1.#QNAN 1.#INF 1.#INF 1.#INF
1.#QNAN 1.#QNAN 1.#QNAN -1.#IND -1.#INF 1.#INF
1.#QNAN 1.#QNAN 1.#QNAN -1.#INF -1.#INF 1.#INF
1.#QNAN 1.#QNAN 1.#QNAN -1.#IND 1.#INF 1.#INF
1.#QNAN 1.#QNAN 1.#QNAN 1.#INF -1.#INF -1.#INF
1.#QNAN 1.#QNAN 1.#QNAN -1.#INF 1.#INF -1.#INF
X1=1.#QNAN
X2=1.#QNAN
X3=1.#QNAN
X4=1.#QNAN
X5=1.#QNAN
X6=1.#QNAN

(В самом конце, корни, которые, похоже на то, что делятся на 0)

Исходная матрица(находится в файле in_file) такова:
Кликните здесь для просмотра всего текста
6
1 -1 0 1 0 0 0
0 1 -1 0 1 0 0
-1 0 1 0 0 1 0
-5 -25 -9 0 0 0 -2
0 25 0 7 -43 0 17
0 0 9 0 43 -31 -20


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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
#include <iostream>
#include <fstream>
#include <math.h>
#include <stdio.h>
 
using namespace std;
double opr(double* , int,int);
int main()
{ 
    int N,M,i,j,i0,j0;
    double res,c,res1;
    ifstream f("in_file.txt");
    ofstream r("out_f.txt");
    f>>N;
    double mas[N][N], vd[N-1][N-1],d[N][N],x[N];
    double B[N];
    for (i=0;i<N;i++)
    {
        for (j=0;j<N;j++)
        {
            f>>mas[i][j];
        }
        f>>B[i];
        
    }
    for (i0=0;i0<N;i0++)
    {
        for (j0=0;j0<N;j0++)
        {
            
            for (i=0;i<N-1;i++)
            {
                for (j=0;j<N-1;j++)
                {
                    if (i<i0&&j<j0)
                        vd[i][j]=mas[i][j];
                    if (i<i0&&j>=j0)
                        vd[i][j]=mas[i][j+1];
                    if(i<i0&&j<j0)
                        vd[i][j]=mas[i+1][j];
                                
                }
            }
            
            for (i=0;i<N-1;i++)
            {
                for (j=0;j<N-1;j++)
                r<<vd[i][j]<<'\t';
                r<<endl;
            }
            r<<endl;
            
            res1=opr(&vd[0][0], N-1, N-1);
            cout<<"resyltat glavnii= "<<res1*pow((-1),(i0+j0))<<endl;
            d[j0][i0]=(pow((-1),(i0+j0)))*res1;
        }
    }
    
    res=opr(&mas[0][0], N, M);
    cout<<"res = "<<res<<endl;
    
    for (i=0;i<N;i++)
    {
        for (j=0;j<N;j++)
        {
            cout<<mas[i][j]<<'\t';
        }
        cout<<endl;
    }
    for (i=0;i<N;i++)
    {
        x[i]=0;
        for (j=0;j<N;j++)
        {
            r<<d[i][j]/res<<'\t';
            x[i]=x[i]+d[i][j]*B[j]/res;
        }
        r<<endl;
    }
    for (i=0;i<N;i++)
    r<<"X"<<i+1<<"="<<x[i]<<endl;
}
 
        double opr(double* ap,int N,int M)
{ int i,j,d,x=1,p,k;
double opred, koeff,pff;
if(N>1)//öèêë ñ÷èòàåò îïðåäåëèòåëü
{
opred=1;
p=0;
    if( *(ap+(N-1)*M+N-1)==0)
    {
        k=0;
        for(d=N-2; d>=0 && k<1;d--) 
        {
            if( *(ap+d*M+(N-1))!=0)
            {
                p=p+d-(N-1);
                x=1;
                k++;
                for (j=0;j<M;j++)
                {
                    pff= *(ap+(N-1)*M+j);
                    *(ap+(N-1)*M+j)=(*(ap+d*M+j));
                    *(ap+d*M+j)=pff;
                }
            }
            else
            {
                x=0;
            }
            cout<<k<<"\t"<<d<<endl;
        
        }
    }
    
    if(x==0)
    {
        opred=0;
    }
    else
    {
        for(i=0;i<N-1;i++)
        {
            koeff= -( *(ap+i*M+N-1))/(*(ap+(N-1)*M+N-1));
 
            for(j=0;j<N;j++)
            {   
                *(ap+i*M+j)=(* (ap+i*M+j))+koeff*( *(ap+(N-1)*M+j));
                cout<< *(ap+i*M+j)<<endl;
            }
 
        }
            opred=( *(ap+(N-1)*M+(N-1))) * (pow(-1,p)) * opr(&ap[0], (N-1), M);
    }
}
    
    else 
    {
        opred = ( *(ap+(N-1)*M+(N-1)));
    }
    
    return opred;
}
Добавлено через 3 часа 18 минут
zss, можете, пожалуйста, найти ошибку?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.01.2015, 22:19
Помогаю со студенческими работами здесь

Решение системы двух линейных уравнений
Привет всем. Я только недавно начал учить с++. Я вспомнил, что когда-то давно в школе мы учили...

Найти решение системы линейных уравнений
Даны действительные числа a1, b1, c1, a2, b2, c2. Выяснить, верно ли, что...

Решение системы линейных алгебраических уравнений
Добрый вечер!!! Помогите, пожалуйста, написать программу для решения системы уравнений...

Найти решение системы линейных уравнений
Даны действительные числа a1, b1, c1, a2, b2, c2. Выяснить, верно ли, что |a1*b2-a2*b1|&gt;=0.0001, и...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru