#include <stdio.h>
#include <locale.h>
#include <conio.h>
void slau_3(double [][3], double *, unsigned);
double determinant(double [][3]);
int main () {
double matrix[3][3], vector[3];
unsigned n, k;
setlocale(LC_CTYPE, "Russian_Russia.1251");
for (n = 0; n < 3; n++) {
k = n + 1;
printf("Введите через пробел: a%d%dx1 + a%d%dx2 + a%d%dx3 = b%d : ", k, k, k, k + 1, k, k + 2, k);
scanf_s("%Lf%Lf%Lf%Lf", &matrix[n][0], &matrix[n][1], &matrix[n][2], &vector[n]);
}
slau_3(matrix, vector, 3);
_getch();
return 0;
}
void slau_3(double a[][3], double * b, unsigned n) {
double det[4], temp[3][3], x1, x2, x3;
unsigned k, r, c;
for (k = 0; k <= n; k++) {
if (!k)
for (r = 0; r < n; r++)
for (c = 0; c < n; c++)
temp[r][c] = a[r][c];
else
for (c = 0; c < n; c++)
for (r = 0; r < n; r++)
if (k - 1 == c) temp[r][c] = b[r];
else temp[r][c] = a[r][c];
det[k] = determinant(temp);
}
if (det[0]) {
x1 = det[1] / det[0];
x2 = det[2] / det[0];
x3 = det[3] / det[0];
printf("\nx1 = %Lf\nx2 = %Lf\nx3 = %Lf\n", x1, x2, x3);
} else printf("\n\aСистема уравнений либо имеет бесконечное множество корней, \nлибо несоместная! ");
}
double determinant(double a[][3]) {
return a[0][0] * a[1][1] * a[2][2] +
a[0][1] * a[1][2] * a[2][0] +
a[1][0] * a[2][1] * a[0][2] -
a[0][2] * a[1][1] * a[2][0] -
a[0][1] * a[1][0] * a[2][2] -
a[1][2] * a[2][1] * a[0][0];
}
Другие языки программирования и технологии
/ Каким кодом на C++ можно реализoвать следующую задачу? помогите написать программку !!!
двигаете дополнительный столбец, получаете 4 матрицы
вот этим методом находите детерминанты
Один из более быстрых методов заключается в простой модификации метода Гаусса. Следуя методу Гаусса, произвольную матрицу A можно привести к ступенчатому виду (Верхнетреугольная матрица) , используя лишь две следующие операции над матрицей — перестановку двух строк и добавление к одной из строк матрицы другой строки, умноженной на произвольное число. Из свойств определителя следует, что вторая операция не изменяет определителя матрицы, а первая лишь меняет его знак на противоположный. детерминант равен произведению элементов главной диагонали
потом делите каждый из детеринантов матриц с замененым столбцом. на детерминант основной матрицы
если в процессе преоброзования одна из строк любой из матриц станет 0, то такая матрица не имеет детерминанта, а значет решение осутствует
вот этим методом находите детерминанты
Один из более быстрых методов заключается в простой модификации метода Гаусса. Следуя методу Гаусса, произвольную матрицу A можно привести к ступенчатому виду (Верхнетреугольная матрица) , используя лишь две следующие операции над матрицей — перестановку двух строк и добавление к одной из строк матрицы другой строки, умноженной на произвольное число. Из свойств определителя следует, что вторая операция не изменяет определителя матрицы, а первая лишь меняет его знак на противоположный. детерминант равен произведению элементов главной диагонали
потом делите каждый из детеринантов матриц с замененым столбцом. на детерминант основной матрицы
если в процессе преоброзования одна из строк любой из матриц станет 0, то такая матрица не имеет детерминанта, а значет решение осутствует
Похожие вопросы
- !!! Каким кодом на C++ можно реализовать следующую задачу? помогите написать программку !!!
- Помогите написать программку в Паскале...
- Срочно!!! Помогите написать программку Pascal!!!Очень надо!!!
- помогите написать программку которая определяет среднее арифметическое непарных элементов массива.
- Прошу помощи с заданиями по С++, помогите написать программки.
- Помогите написать программку на паскале по строкам
- Программисты! Помогите пожалуйста! Нужно на паскале написать код к следующей задаче: Даны натуральные числа a, b, c
- Помогите написать код на C++
- Помогите написать код на C++
- Помогите написать код на C++