Посчитать матрицу по формуле - C (СИ)
Формулировка задачи:
Это матрица А =
37.7, 20.4, 18.2, 41.0, 42.7, 36.6, 50.1, 33.2, 27.2, 26.1, 33.4, 46.6, 40.7, 36.0,
42.8, 36.8, 33.0, 54.2, 47.7, 39.1, 51.9, 20.7, 31.6, 50.8, 49.2, 40.8, 37.1, 28.6,
37.1, 39.8, 40.1, 24.1, 29.7, 31.6, 35.4, 27.8, 42.6, 36.1, 53.2, 49.2, 47.1, 44.4,
42.6, 34.4, 39.4, 47.2, 54.0, 41.7, 41.9, 30.2, 37.2, 53.0, 29.5, 42.2, 44.0, 31.7,
27.4, 26.0, 29.5, 42.7, 42.7, 30.1, 39.5, 37.0, 29.6, 26.7, 39.2, 43.3, 49.6, 43.2,
40.1, 43.2, 45.0, 49.4, 24.0, 36.4, 42.7, 26.2, 29.8, 42.0, 50.1, 33.1, 37.2, 40.4,
24.8, 36.8, 41.1, 44.3, 33.2, 37.6, 40.1, 27.2, 31.6, 37.2, 29.7, 38.7, 32.4, 31.2,
42.7, 50.0, 41.8, 47.9, 52.1, 54.9, 30.8, 21.7, 20.4, 26.2, 24.1, 28.7, 36.2, 41.6,
29.5, 37.1, 31.7, 47.9, 53.8, 42.9, 40.4, 41.2, 42.3, 31.3, 27.2, 36.4, 52.0, 27.9,
33.7, 39.8, 42.5, 40.5, 28.3, 20.7, 41.1, 33.3, 37.0, 24.3, 24.4, 44.9, 45.3, 45.4,
37.3, 50.1, 49.4, 48.6, 46.1, 41.2, 36.1, 40.2, 27.8, 37.2, 44.3, 26.6, 31.2, 38.2,
52.7, 44.8, 42.0, 41.9, 50.0, 42.9, 29.9, 37.2, 36.6, 44.7, 51.0, 39.1, 37.2, 21.3,
49.4, 53.0, 44.1, 29.6, 24.9, 39.2, 33.5, 42.1, 43.7, 51.2, 47.8, 32.7, 22.1, 38.9,
31.6, 21.9, 42.5, 28.8, 30.2, 41.6, 35.8, 42.7, 30.6, 37.2, 51.8, 47.8, 37.6, 29.5
и матрица В =
37.81428571, 38.15, 38.59285714, 42.00714286, 39.95714286, 38.32142857, 39.22857143, 32.90714286, 33.42857143, 37.42857143, 39.63571429, 39.29285714, 39.26428571, 35.59285714
по вот такой формуле требуется вычислить матрицу(получившаяся матрица симметричная)
если все сделано правильно на диагонали будут числа
64,3043956 101,8826923 63,62686813 77,02071429 124,0903297 59,92796703 40,82527473 55,64379121 45,23758242 97,38835165 124,5501648 49,69456044 63,34401099 53,28071429
for (k = 1;k < N;k++){ for (l = 1;l < N;l++){ R[k][l] = ((A[k][l] - B[k])*(A[k][l] - B[l]))/13; } }
Решение задачи: «Посчитать матрицу по формуле»
textual
Листинг программы
#include <stdio.h> #define N 14 main() { int k,l; double A[N][N]={{37.7, 20.4, 18.2, 41.0, 42.7, 36.6, 50.1, 33.2, 27.2, 26.1, 33.4, 46.6, 40.7, 36.0}, {42.8, 36.8, 33.0, 54.2, 47.7, 39.1, 51.9, 20.7, 31.6, 50.8, 49.2, 40.8, 37.1, 28.6}, {37.1, 39.8, 40.1, 24.1, 29.7, 31.6, 35.4, 27.8, 42.6, 36.1, 53.2, 49.2, 47.1, 44.4}, {42.6, 34.4, 39.4, 47.2, 54.0, 41.7, 41.9, 30.2, 37.2, 53.0, 29.5, 42.2, 44.0, 31.7}, {27.4, 26.0, 29.5, 42.7, 42.7, 30.1, 39.5, 37.0, 29.6, 26.7, 39.2, 43.3, 49.6, 43.2}, {40.1, 43.2, 45.0, 49.4, 24.0, 36.4, 42.7, 26.2, 29.8, 42.0, 50.1, 33.1, 37.2, 40.4}, {24.8, 36.8, 41.1, 44.3, 33.2, 37.6, 40.1, 27.2, 31.6, 37.2, 29.7, 38.7, 32.4, 31.2}, {42.7, 50.0, 41.8, 47.9, 52.1, 54.9, 30.8, 21.7, 20.4, 26.2, 24.1, 28.7, 36.2, 41.6}, {29.5, 37.1, 31.7, 47.9, 53.8, 42.9, 40.4, 41.2, 42.3, 31.3, 27.2, 36.4, 52.0, 27.9}, {33.7, 39.8, 42.5, 40.5, 28.3, 20.7, 41.1, 33.3, 37.0, 24.3, 24.4, 44.9, 45.3, 45.4}, {37.3, 50.1, 49.4, 48.6, 46.1, 41.2, 36.1, 40.2, 27.8, 37.2, 44.3, 26.6, 31.2, 38.2}, {52.7, 44.8, 42.0, 41.9, 50.0, 42.9, 29.9, 37.2, 36.6, 44.7, 51.0, 39.1, 37.2, 21.3}, {49.4, 53.0, 44.1, 29.6, 24.9, 39.2, 33.5, 42.1, 43.7, 51.2, 47.8, 32.7, 22.1, 38.9}, {31.6, 21.9, 42.5, 28.8, 30.2, 41.6, 35.8, 42.7, 30.6, 37.2, 51.8, 47.8, 37.6, 29.5}}; double B[N]={37.81428571, 38.15, 38.59285714, 42.00714286, 39.95714286, 38.32142857, 39.22857143, 32.90714286, 33.42857143, 37.42857143, 39.63571429, 39.29285714, 39.26428571, 35.59285714}; double R[N][N]; for (k = 1;k < N;k++) //формула { for (l = 1;l < N;l++) { R[k][l] = ((A[k][l] - B[k])*(A[k][l] - B[l]))/13; } } //печатаем главную диагональ for(k=0;k<N;k++) { printf("%.8f ",R[k][k]); } }
Объяснение кода листинга программы
В данном коде производится вычисление матрицы по формуле.
- В первой строке кода подключается заголовочный файл stdio.h, который содержит функции для ввода и вывода данных.
- Далее, с помощью директивы #define, определяется размерность матрицы N.
- Функция main() является точкой входа в программу.
- Внутри функции main() определяются две переменные k и l, которые будут использоваться в циклах.
- Затем, определяется матрица A с помощью двойного массива. Каждый элемент матрицы A[i][j] имеет тип double и содержит значение элемента матрицы.
- Также, определяется матрица B с помощью одного массива. Каждый элемент матрицы B[i] имеет тип double и содержит значение элемента вектора.
- Для хранения результатов вычислений, определяется матрица R[i][j] типа double.
- Далее, с помощью двух вложенных циклов, происходит вычисление элементов матрицы R по формуле ((A[k][l] - B[k])*(A[k][l] - B[l]))/13.
- После вычислений, с помощью цикла for и функции printf(), выводятся элементы главной диагонали матрицы R.
- В конце функции main(), завершающий символ
.
сообщает компилятору, что программа закончила работу.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д