93 lines
2.2 KiB
Go
93 lines
2.2 KiB
Go
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())
|
||
}
|