Сложение и умножение матриц с использованием языка go

алгоритм

1 Происхождение

Ожидается, что понимание алгоритма не останавливается на уровне API Python, а язык go используется для углубления понимания, избегания сложных операций с указателями и избегания избыточного синтаксиса C++.

Кроме того, низкое потребление аппаратных ресурсов языка go легко перенести на более дешевые чипы для снижения затрат, и ожидается, что распределенные характеристики go будут использоваться для реализации крупномасштабной обработки матричных операций (например, задач на собственные значения).

В то же время использование библиотеки алгоритмов go более удобно для облачных вызовов и более удобно для компиляции в клиентские программы (например, объединение h5 для реализации научных калькуляторов).

2 идеи

Преимущество использования срезов для представления матриц в том, что нет необходимости записывать ширину и высоту матрицы до смерти, когда функция определена

Ключевым моментом является создание 1D среза

3 Реализация

3.1 Реализация сложения и умножения матриц


/**
   矩阵加法
   a b均为m行n列
 */
func addMatrix(a [][]int, b [][]int, m int, n int) [][]int {
   res := make([][]int, m)

   for i := 0; i < m; i++ {
      resI := make([]int, n)
      for j := 0; j < n; j++ {
         resI[j] = a[i][j] + b[i][j]
      }
      res[i] = resI
   }

   return res
}

/**
   矩阵乘法
   a为m行k列, b为k行n列
*/
func mulMatrix(a [][]int, b [][]int, m int, n int, k int) [][]int {
   res := make([][]int, m)
   for i := 0; i < m; i++ {
      resI := make([]int, k)
      for j := 0; j < n; j++ {
         for kk := 0; kk < k; kk++ {
            resI[kk] += a[i][j] * b[j][kk]
         }
      }
      res[i] = resI
   }
   return res
}

3.2 Используйте lorca для создания клиентской программы

Lorca может комбинировать go и h5 для создания клиентской программы, по сути, она повторно использует программу chrome, а затем вы можете использовать js для вызова функции go

Здесь для демонстрации используется только vue, а библиотека компонентов \echarts\canvas и т.п. будет рассмотрена позже.

Учитывая производительность, js используется только для обработки и отображения данных, а вычислительные задачи передаются для обработки.

Излишне говорить, что на основе официальной демонстрации измените формат синтаксиса vue и просто обработайте данные.

2.gifОптимизация опыта, которую можно рассмотреть:

  • Сделайте командную строку интерактивным способом, чтобы сохранить громоздкий ввод каждой ячейки, операцию копирования
  • Используйте правила грамматики для быстрого создания часто используемых матриц, таких как 0 матрица\единичная матрица и т. д.

4 Внешний вид

  • научный калькулятор
  • Матричная декомпозиция, распределенное планирование задач для достижения ускорения вычислений
  • Перепишите библиотеки Python, такие как pandas numpy sklearn
  • Портирован на чипы типа stm32
  • перейти на облачную версию Matlab

5 Сетевые ресурсы

Вы можете ссылаться на его инкапсуляцию структур и разделение модулей и т. д.

Что такое матричные библиотеки GO?cloud.Tencent.com/developer/ ах…

умножение матрицы Голанга, определитель, обратная матрицаблог woo woo woo.cn на.com/zheng123/afraid/…

записи обновления

======================

2021-10-15 11:00

Удалите часть тестового кода, чтобы выделить ключевые моменты

Схема реализации для дополнения существующих сетевых ресурсов

======================

2021-10-17 23:00

Клиентские побочные эффекты сложения\умножения дополнительной матрицы