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

Решение СЛАУ методом квадратного корня - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Невозможно преобразовать char* в char http://www.cyberforum.ru/cpp-beginners/thread1100036.html
Как исправить ошибку?
C++ Завершение программы по вводу текста при выборе "нет" Имеется код, который выводит максимальное число. #include <iostream> #include <clocale> using namespace std; int main() { setlocale(LC_ALL, "Russian"); http://www.cyberforum.ru/cpp-beginners/thread1100031.html
C++ Как передать входящие параметры main в подфункцию?
как в таком случае передать правильно параметры в вызывающей main в вызываемую функцию Multiplication() // ConsoleApplication11.cpp: главный файл проекта. #include "stdafx.h" #include <iostream> #include <conio.h> using namespace System; using namespace std;
C++ Интерпретатор текстовой (теговой) разметки документа
Здравствуйте, товарищи! На просторах интернета нашел интересное задание, которое захотел сделать, чтобы научиться чему-то в программировании, но сразу же возник вопрос: как? Какую теорию нужно знать? Какую литературу прочесть или еще что? Я просто вообще не пойму как распознавать теги и их закрытие, а если вложенность? Как искать теги? Накидайте как можно более полезных ссылок, литературы,...
C++ Заполнить массив В удвоенными значениями массива А, идущими в обратном порядке http://www.cyberforum.ru/cpp-beginners/thread1100010.html
Здравствуйте. Помогите пожалуйста. Задача стоит такая: Дан массив А, который вводится пользователем, необходимо из значений массива А, заполнить массив В удвоенными значениями массива А, идущими в обратном порядке. Я сделал вот так: int count=0; const int n = 5; double m,b;
C++ Преобразование структуры в байтовый массив Нужно преобразовать структуру данных в байтовый массив для передачи на сервер от клиента и так же обратно, используя сокеты И нужно, соответственно обратно, из байтового массива в структуру. или класс. VS2013 подробнее

Показать сообщение отдельно
slevin_45
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 66
18.02.2014, 22:57     Решение СЛАУ методом квадратного корня
Здравствуйте!Помогите мне,пожалуйста.
Суть задания написана в теме.Есть блок-схема для данного кода,но он для pasсal,поэтому добавляю к размеру массивов/матриц еденицу. Массив d-диагональная матрица.Массив a-исходный массив.Массив b-массив свободных членов.Массив y-просто массив нужный для подсчётов.Проблема в том,что как написать код я не знаю,ибо нужно высчитывать закономерности,чтобы самому написать решение по данному методу(квадр.корня).Поэтому и дана мне блок-схема.
Выводит чушь ! В вордовском файле указана блок-схема и формулы ,с помощью которых я считал элементы матрицы s и d.
Массив матрица а :
-4.88 1 0 0 0
1 -2 1 0 0
0 1 -2 1 0
0 0 1 -2 1
0 0 0 1 -4.88
матрица b:
0
-8
-8
-8
0
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
145
146
147
148
149
150
#include<iostream>
#include<math.h>
using namespace std;
void zapolneniemasabd(double **a,double *d,double *b,int n) //заполнение массива
{ 
    cout<<"zapolnite matricy a";
    int i,j,m=1;
    for(i=1;i<n;i++)
    {
        for(j=1;j<n;j++)
        {
        cin>>a[i][j];
        }
    }
    for(i=1,j=1;i<n;i++,j++)
    {
        d[m]=a[i][j];
        m++;
    }
    cout<<"zapolnite vektor-stolbec b";
    for(i=1;i<n;i++)
    {
        cin>>b[i];
    }
}
double sumd(double *d,double**s,int k,int n)//высчитываем сумму для d[k] которая указана в файле ворд 
{
    int i,sum=0;
    double f;
    for(i=1;i<k-1;i++)
    {
        f=d[i]*fabs(pow(s[i][k],2.));
        sum+=f;
    } 
    return(sum);
}//                                         сумма найдена
    double sumd2(double *d,double **s,int k,int j, int n)//высчитываем сумму вторую для s[k][k]
    {
        int i,suma=0;
        double g;
        for(i=1;i<k-1;i++)
        {
            g=d[i]*s[i][k]*s[i][j];
            suma+=g;
        }
        return(suma);
    }//                                                        сумма найдена
int main(void)//начало поиска корней
{
    double **a,*b,*x,*d,**s,h,*y,sam,fam;
    int n,k,i,j;
    cout<<"vvedite kolvo strok i stolbcov";
    cin>>n;
    n=n+1;
        d=new double[n-1];
    s=new double*[n-1];
    a=new double*[n-1];
    b=new double[n-1];
    x=new double[n-1];
    y=new double[n-1];
    for(i=1;i<n;i++)
    {
      s[i]=new double[n];
      a[i]=new double[n];
    }
    zapolneniemasabd(a,d,b,n);
    for(k=1;k<=n;k++)
    {
        sam=sumd(d,s,k,n);
        for(j=k+1;j<=n;j++)
        {
            fam=sumd2(d,s,k,j,n);
            if(a[k][k]-sam<0)
            {
            d[k]=-1;
            }
            if(a[k][k]-sam>0)
            {
                d[k]=1;
            }
            if(a[k][k]-sam==0)
            {
                d[k]=0;
            }
            s[k][k]=sqrt(fabs(a[k][k]-sam));
            s[k][j]=(a[k][j]-fam)/(s[k][k]*d[k]);
        }
    }
    for(k=1;k<n;k++)
    {
        h=a[k][k];
        if(k!=1)
        {
            for(i=1;i<k-1;i++)
            {
                h=h-d[i]*pow(s[i][k],2);
            }
        }
            if(h>0)
            {
                d[k]=1;
            }
            if(h<0)
            {
                d[k]=-1;
            }
            if(h==0)
            {
                d[k]=0;
            }
            s[k][k]=sqrt(fabs(h));
            for(j=k+1;j<n;j++)
            {
                h=a[k][j];
                if(k!=1)
                {
                    for(i=1;i<k-1;i++)
                    {
                        h=h-d[i]*s[i][k]*s[i][j];
                    }
                }
                s[k][j]=h/(s[k][k]*d[k]);
            }
    }
                y[1]=b[1]/(s[1][1]*b[1]);
                for(i=2;i<n;i++)
                {
                    h=b[i];
                        for(k=1;k<i-1;k++)
                        {
                            h=h-d[k]*y[k]*s[k][i];
                        }
                        y[i]=h/(s[i][i]*d[i]);
                }
                x[n-1]=y[n-1]/s[n-1][n-1];
                for(i=n-1;i>1;i--)
                {
                    h=y[i];
                for(k=i+1;k<n;k++)
                {
                    h=h-x[k]*s[i][k];
                }
                x[i]=h/s[i][i];
                cout<<"koren yravneniya";
                cout<<endl;
                cout<<x[i];
                }
    system("pause");
    return(0);
}
Вложения
Тип файла: docx Блок схема и массивы d и s.docx (40.7 Кб, 65 просмотров)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 04:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru