Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
6 / 4 / 2
Регистрация: 14.10.2022
Сообщений: 43

Метод Гаусса (Java -> C++)

20.11.2022, 15:45. Показов 378. Ответов 0
Метки java (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, может кто помочь перевести данный код в с++
Java Скопировано
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
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
import java.util.Scanner;
import java.lang.Math.*;
public class Main {
    public static void printArr(float[][] arr,int n){
        for (int i=0;i<n;i++){
            for (int j=0;j<n;j++){
                System.out.printf("%f\t",arr[i][j]);
            }
            System.out.println();
        }
    }
    public static void printArrV(float[] arr, int n){
        for (int i=0;i<n;i++){
            System.out.printf("%f\t",arr[i]);
            if ((i%n==4)) System.out.print("\n");
        }
    }
    public static float[][] zapA(int n){
        float[][] a;
        a=new float[n][n];
        a[0][0]=a[1][1]=a[3][3]=a[4][4]=24;
        a[0][1]=a[0][2]=a[0][3]=a[0][4]=a[1][4]=a[2][0]=a[3][0]=a[3][1]=a[3][2]=2;
        a[1][0]=a[1][2]=a[2][1]=a[2][3]=a[4][1]=a[4][2]=a[4][3]=1;
        a[2][2]=32;
        a[1][3]=a[2][4]=a[3][4]=a[4][0]=3;
        return a;
    }
    public static float[] zapX(int n){
        float[] x;
        x=new float[n];
        for (int i=0;i<n;i++){
            x[i]=0;
        }
        return x;
    }
    public static float[] zapY(int n){
        float[] y;
        y=new float[n];
        y[0]=30;
        y[1]=55;
        y[2]=-28;
        y[3]=73;
        y[4]=-17;
        return y;
    }
    public static float[] zapY1(int n, int c){
        float[] y;
        y=new float[n];
        for (int i=0;i<n;i++){
            y[i]=0;
        }
        y[c]=1;
        return y;
    }
    public static float[] gauss(float[][]a, float[] x,float[] y, int n){
        float c;
        for (int k=0;k<n;k++){
            for (int i=k+1;i<n;i++){
                c=a[i][k]/a[k][k];
                for (int j=k;j<n;j++){
                    a[i][j]=a[i][j]-c*a[k][j];
                }
                y[i]=y[i]-c*y[k];
               
            }
        }
        x[n-1]=y[n-1]/a[n-1][n-1];
        for (int i=n-1;i>=0;i--){
            c=0;
            for (int j=i+1;j<n;j++){
                c=c+a[i][j]*x[j];
            }
            x[i]=(y[i]-c)/a[i][i];
        }
        return x;
    }
    public static float[] prIt(float[][]a, float[] x, float[] y, int n, float e){
        float aMax=a[0][0];
        float aMin=a[0][0];
        float b;
        for (int i=1;i<n;i++){
            if (a[i][i]>aMax){
                aMax=a[i][i];
            }
            if (a[i][i]<aMin){
                aMin=a[i][i];
            }
        }
        b=2/(aMin+aMax);
        float[] x1,x2;
        float sum1,sum2;
        int count=0;
        x2=new float[n];
        do {
            sum1=0;
            sum2=0;
            x1=zapX(n);
            for (int i=0;i<n;i++){
                x2[i]=x[i];
                for (int j=0;j<n;j++){
                    x1[i]=x1[i]+a[i][j]*x[j];
                }
                x1[i]=x1[i]-y[i];
                x[i]=x[i]-b*x1[i];
            }
            count++;
            for (int i=0;i<n;i++){
                sum1=sum1+x[i];
                sum2=sum2+x2[i];
            }
        }while (Math.abs(sum1-sum2)/5>e);
        System.out.printf("Метод простой итерации завершился за %d итераций\n",count);
        return x;
    }
    public static float[] zeid(float[][]a, float[] x, float[] y, int n, float e){
        float[] x1,x2;
        int count=0;
        float sum1,sum2,s;
        x2=new float[n];
        x1=zapX(n);
       do{
            sum1=0;
            sum2=0;
            for (int i=0;i<n;i++){
                s=0;
                for (int j=0;j<n;j++){
                    if ((j==i)&&(j<n-1)) j++;
                    if ((j==i)&&(j==n-1)) break;
                    s=s+a[i][j]/a[i][i]*x[j];
                }
                x[i]=y[i]/a[i][i]-s;
                x2[i]=x1[i];
                x1[i]=x[i];
            }
            count++;
            for (int i=0;i<n;i++){
                sum1=sum1+x[i];
                sum2=sum2+x2[i];
            }
        } while (Math.abs(sum1-sum2)/5>e);
        System.out.printf("Метод Зейделя завершился за %d итераций\n",count);
        return x;
    }
    public static void main(String[] args) {
        float[] y,x;
        float[][] a,x1;
        int n=5;
        x1=new float[n][n];
        a=zapA(n);
        y=zapY(n);
        x=zapX(n);
        System.out.print("Исходный массив А:\n");
        printArr(a,n);
        System.out.print("Исходный вектор y:\n");
        printArrV(y,n);
        gauss(a, x, y, n);
        System.out.print("Вектор x(по gauss):\n");
        printArrV(x,n);
        System.out.printf("Проверка корней:\n");
        y=zapY(n);
        a=zapA(n);
        float[] x2;
        x2=new float[n];
        for (int i=0;i<n;i++){
            x2[i]=0;
            for (int j=0;j<n;j++){
                x2[i]=x2[i]+a[i][j]*x[j];
            }
        }
        printArrV(x2,n);
        printArrV(y,n);
        for (int i=0;i<n;i++){
            y=zapY1(n,i);
            a=zapA(n);
            x=zapX(n);
            x1[i]=gauss(a,x,y,n);
        }
        System.out.print("Обратная матрица(транспонированная)(по gauss):\n");
        printArr(x1,n);
        a=zapA(n);
    
        float[][] c;
        c=new float[n][n];
        for (int i=0;i<n;i++){
            for (int j=0;j<n;j++){
                c[i][j]=0;
            }
        }
        for (int i=0;i<n;i++){
            for (int j=0;j<n;j++){
                for (int k=0;k<n;k++){
                    c[i][j]=c[i][j]+a[i][k]*x1[j][k];
                }
            }
        }
        System.out.printf("Произведение матриц:\n");
        printArr(c,n);
        System.out.print("Введите точность для метода простой итерации и Зейделя:\n");
        float e;
        Scanner scan = new Scanner(System.in);
        e=scan.nextFloat();
        a=zapA(n);
        y=zapY(n);
        x=zapX(n);
        x=prIt(a,x,y,n,e);
        System.out.print("Вектор х(по простой итерации):\n");
        printArrV(x,n);
        a=zapA(n);
        y=zapY(n);
        x=zapX(n);
        x=zeid(a,x,y,n,e);
        System.out.print("Вектор х(по Зейделю):\n");
        printArrV(x,n);
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.11.2022, 15:45
Ответы с готовыми решениями:

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

Метод Гаусса
Здравствуйте, у меня такая проблема. Мне нужно написать программу, которая решает СЛАУ методом Гаусса. Программа у меня работает,но когда...

Метод Гаусса в С++
Подскажите please, как запустить эту программу, через C++??? Решение системы линейных уравнений методом Гаусса. ...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.11.2022, 15:45
Помогаю со студенческими работами здесь

метод Гаусса
Помогите пожалуйста написать программу на С++ Задана система линейного уравнения:MA*X=B. Для решения уравнения использовать метод Гаусса

метод Гаусса
Знаю что тема поднималась много раз но все же, можете продемонстрировать решение хотя бы 3 уравнений (желательно 4) но без считывания и...

Метод Гаусса
Всем привет. Ребят, что скажите по поводу такой реализации метода Гаусса: #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; ...

Метод Гаусса
Метод Гаусса объясните, пожалуйста, как работают строки: float **A = new float *; for (i = 0; i &lt; n; i++){ A =...

Метод Гаусса!!!
Всем привет! )) У меня вот такая проблемка! Нужно решить СЛАУ методом Гаусса с выбором главного элемента по столбцу!! Теоретически знаю, а...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
На любовном киберфронте
Alexander-7 01.04.2025
Недавно на одном малоизвестном сайте знакомств мною заинтересовалась девушка: «Текст немного странный. Но, судя по адресу почты, иностранка», – подумал я. Поколебавшись пару суток, я ответил ей:. . .
Как работает Node.js изнутри
run.dev 29.03.2025
Node. js изменил подход к разработке веб-приложений, позволив использовать JavaScript не только на стороне клиента, но и на сервере. Созданный в 2009 году Райаном Далем, этот открытый,. . .
Моки в Python: Mock Object Library
py-thonny 29.03.2025
Тестирование кода требует особого подхода, когда речь идёт о компонентах, взаимодействующих с внешним миром. Мы часто сталкиваемся с непредсказуемостью HTTP-запросов, чтением данных из базы или. . .
JavaScript: Управление памятью и улучшение производительности
run.dev 29.03.2025
В отличие от низкоуровневых языков программирования, JavaScript не требует ручного выделения и освобождения памяти. Здесь работает автоматический сборщик мусора, который определяет, какие объекты. . .
Мультитенантная архитектура со SpringBoot и PostgreSQL
ArchitectMsa 29.03.2025
SaaS-приложения редко обслуживают одного клиента и обычно они должны поддерживать множество организаций, каждая из которых работает в своём изолированном пространстве. Мультитенантная архитектура. . .
std::span в C++: Производительность и лучшие практики
NullReferenced 28.03.2025
std::span — одно из самых недооценённых нововведений стандарта C++20, которое радикально меняет подход к работе с непрерывными последовательностями данных. По сути, это невладеющее представление. . .
Многопоточность в C#: Threadpool
UnmanagedCoder 28.03.2025
Пул потоков в C# — это коллекция заранее созданных и готовых к использованию потоков, которые находятся в распоряжении приложения. Вместо того чтобы создавать и уничтожать потоки для каждой небольшой. . .
Вопросы на собеседованиях по микросервисам
ArchitectMsa 27.03.2025
Работодатели ищут не просто разработчиков, знающих базовые концепции, а специалистов, разбирающихся в тонкостях масштабирования, отказоустойчивости и производительности. Сейчас на первый план выходят. . .
Взаимодействие Python с REST API
py-thonny 27.03.2025
REST API - это архитектурный стиль взаимодействия компонентов распределённого приложения в сети. Python располагает функциональным набором инструментов для работы с REST API и основная библиотека для. . .
sshd restrictions, ssh access limitations
jigi33 26.03.2025
sshd restrictions | ssh access limitations рестрикции доступа на сервер sshd статья: https:/ / www. golinuxcloud. com/ restrict-allow-ssh-certain-users-groups-rhel подробные расшифровки по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер