Посчитать матрицу по формуле - 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 по вот такой формуле требуется вычислить матрицу(получившаяся матрица симметричная)
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;
 
    }
    }
если все сделано правильно на диагонали будут числа 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

Решение задачи: «Посчитать матрицу по формуле»

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]);
}
 
}

Объяснение кода листинга программы

В данном коде производится вычисление матрицы по формуле.

  1. В первой строке кода подключается заголовочный файл stdio.h, который содержит функции для ввода и вывода данных.
  2. Далее, с помощью директивы #define, определяется размерность матрицы N.
  3. Функция main() является точкой входа в программу.
  4. Внутри функции main() определяются две переменные k и l, которые будут использоваться в циклах.
  5. Затем, определяется матрица A с помощью двойного массива. Каждый элемент матрицы A[i][j] имеет тип double и содержит значение элемента матрицы.
  6. Также, определяется матрица B с помощью одного массива. Каждый элемент матрицы B[i] имеет тип double и содержит значение элемента вектора.
  7. Для хранения результатов вычислений, определяется матрица R[i][j] типа double.
  8. Далее, с помощью двух вложенных циклов, происходит вычисление элементов матрицы R по формуле ((A[k][l] - B[k])*(A[k][l] - B[l]))/13.
  9. После вычислений, с помощью цикла for и функции printf(), выводятся элементы главной диагонали матрицы R.
  10. В конце функции main(), завершающий символ . сообщает компилятору, что программа закончила работу.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.375 из 5
Похожие ответы