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 и просто обработайте данные.
Оптимизация опыта, которую можно рассмотреть:
- Сделайте командную строку интерактивным способом, чтобы сохранить громоздкий ввод каждой ячейки, операцию копирования
- Используйте правила грамматики для быстрого создания часто используемых матриц, таких как 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
Клиентские побочные эффекты сложения\умножения дополнительной матрицы