Технологии
Можете помочь с написанием программы на с++ решение систем слау с библиотекой stdio - вопрос №3524006
Вот есть программа выполненная через iosterm
#include <iostream>
using namespace std;
// Выводсистемыуравнений
void sysout(double **a, double *y, int n)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
cout << a[i][j] << "*x" << j;
if (j < n — 1)
cout << " + ";
}
cout << " = " << y[i] << endl;
}
return;
}
double * gauss(double **a, double *y, int n)
{
double *x, max;
int k, index;
const double eps = 0.00001; // точность
x = new double[n];
k = 0;
while (k < n)
{
// Поиск строки с максимальным a[i][k]
max = abs(a[k][k]);
index = k;
for (int i = k + 1; i < n; i++)
{
if (abs(a[i][k]) > max)
{
max = abs(a[i][k]);
index = i;
}
}
// Перестановка строк
if (max < eps)
{
// нет ненулевых диагональных элементов
cout << «Решение получить невозможно из-за нулевого столбца »;
cout << index << " матрицы A" << endl;
return 0;
}
for (int j = 0; j < n; j++)
{
double temp = a[k][j];
a[k][j] = a[index][j];
a[index][j] = temp;
}
double temp = y[k];
y[k] = y[index];
y[index] = temp;
// Нормализацияуравнений
for (int i = k; i < n; i++)
{
double temp = a[i][k];
if (abs(temp) < eps) continue; // для нулевого коэффициента пропустить
for (int j = 0; j < n; j++)
a[i][j] = a[i][j] / temp;
y[i] = y[i] / temp;
if (i == k) continue; // уравнение не вычитать само из себя
for (int j = 0; j < n; j++)
a[i][j] = a[i][j] — a[k][j];
y[i] = y[i] — y[k];
}
k++;
}
// обратная подстановка
for (k = n — 1; k >= 0; k--)
{
x[k] = y[k];
for (int i = 0; i < k; i++)
y[i] = y[i] — a[i][k] * x[k];
}
return x;
}
int main()
{
double **a, *y, *x;
int n;
system(«chcp 1251»);
system(«cls»);
cout << «Введите количество уравнений: »;
cin >> n;
a = new double*[n];
y = new double[n];
for (int i = 0; i < n; i++)
{
a[i] = new double[n];
for (int j = 0; j < n; j++)
{
cout << «a[» << i << "][" << j << "]= ";
cin >> a[i][j];
}
}
for (int i = 0; i < n; i++)
{
cout << «y[» << i << "]= ";
cin >> y[i];
}
sysout(a, y, n);
x = gauss(a, y, n);
for (int i = 0; i < n; i++)
cout << «x[» << i << "]=" << x[i] << endl;
cin.
return 0;
}
ноябрь 19, 2019 г.
-
Всего ответов: 0
Похожие вопросы
На какой срок допускается просрочить очередную проверку знаний на группу допуска по электробезопасности? Какой порядок действий для восстановления действующей группы?
апрель 19, 2015 г.
Помогите. что делать?? Средство восстановления запуска не может автоматически восстановить этот компьютер. У меня с Windows 7 такая проблема. Включаю ноут, сначала вроде бы ничего, на экране
апрель 23, 2015 г.
Как исправить ошибку s_ da_sdmmc_write_failed 3149 при прошивке чрез SP_Flash_Tool На Lenovo
январь 6, 2016 г.