ssa
1package oss
2
3import "gonum.org/v1/gonum/mat"
4
5// минимальное значение элемента матрицы
6func MinDense(matr mat.Dense) float64 {
7var min float64 = matr.At(0, 0)
8r, c := matr.Dims()
9for i := 0; i < r; i++ {
10for j := 0; j < c; j++ {
11if min > matr.At(i, j) {
12min = matr.At(i, j)
13}
14}
15}
16return min
17}
18
19// максимальное значение элемента матрицы
20func MaxDense(matr mat.Dense) float64 {
21var max float64 = matr.At(0, 0)
22r, c := matr.Dims()
23for i := 0; i < r; i++ {
24for j := 0; j < c; j++ {
25if max < matr.At(i, j) {
26max = matr.At(i, j)
27}
28}
29}
30return max
31}
32
33// Makes a dense matrix of size r*c and fills it with a user-defined function.
34func MakeMatrix(r int, c int, value func(i, j int) float64) *mat.Dense {
35data := make([]float64, r*c)
36for i := 0; i < r; i++ {
37for j := 0; j < c; j++ {
38data[c*i+j] = value(i, j)
39}
40}
41return mat.NewDense(r, c, data)
42}
43
44// Поиск максимального значения массива и его индекс
45func MaxArrFloat64(array []float64) (valueMax float64, indexMax int) {
46valueMax = array[0]
47for ind, val := range array {
48if val >= valueMax {
49valueMax = val
50indexMax = ind
51}
52}
53return valueMax, indexMax
54}
55