gomatrix/exmaples/example.go

93 lines
2.2 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package main
import (
"fmt"
"git.kingecg.top/kingecg/gomatrix"
)
// 示例程序演示矩阵功能
func Example() {
fmt.Println("创建矩阵示例:")
// 创建一个2x3的矩阵
data1 := []float64{1, 2, 3, 4, 5, 6}
mat1, err := gomatrix.NewMatrix(data1, []int{2, 3})
if err != nil {
fmt.Printf("创建矩阵失败: %v\n", err)
return
}
fmt.Printf("矩阵1:\n%s\n", mat1.String())
// 创建另一个2x3的矩阵
data2 := []float64{7, 8, 9, 10, 11, 12}
mat2, err := gomatrix.NewMatrix(data2, []int{2, 3})
if err != nil {
fmt.Printf("创建矩阵失败: %v\n", err)
return
}
fmt.Printf("矩阵2:\n%s\n", mat2.String())
// 矩阵加法
sum, err := mat1.Add(mat2)
if err != nil {
fmt.Printf("矩阵加法失败: %v\n", err)
return
}
fmt.Printf("矩阵1 + 矩阵2:\n%s\n", sum.String())
// 创建一个3x2的矩阵用于矩阵乘法
data3 := []float64{1, 2, 3, 4, 5, 6}
mat3, err := gomatrix.NewMatrix(data3, []int{3, 2})
if err != nil {
fmt.Printf("创建矩阵失败: %v\n", err)
return
}
fmt.Printf("矩阵3 (3x2):\n%s\n", mat3.String())
// 创建一个2x2的矩阵用于矩阵乘法
data4 := []float64{1, 2, 3, 4}
mat4, err := gomatrix.NewMatrix(data4, []int{2, 2})
if err != nil {
fmt.Printf("创建矩阵失败: %v\n", err)
return
}
fmt.Printf("矩阵4 (2x2):\n%s\n", mat4.String())
// 矩阵乘法
product, err := mat3.MatMul(mat4)
if err != nil {
fmt.Printf("矩阵乘法失败: %v\n", err)
return
}
fmt.Printf("矩阵3 × 矩阵4:\n%s\n", product.String())
// 矩阵转置
transposed, err := mat1.Transpose()
if err != nil {
fmt.Printf("矩阵转置失败: %v\n", err)
return
}
fmt.Printf("矩阵1的转置:\n%s\n", transposed.String())
// 矩阵数乘
scaled := mat1.Scale(2.0)
fmt.Printf("矩阵1 × 2:\n%s\n", scaled.String())
// 创建零矩阵
zeros, err := gomatrix.NewZeros([]int{2, 2})
if err != nil {
fmt.Printf("创建零矩阵失败: %v\n", err)
return
}
fmt.Printf("2x2零矩阵:\n%s\n", zeros.String())
// 创建单位矩阵
identity, err := gomatrix.NewIdentity(3)
if err != nil {
fmt.Printf("创建单位矩阵失败: %v\n", err)
return
}
fmt.Printf("3x3单位矩阵:\n%s\n", identity.String())
}