first commit

This commit is contained in:
kingecg 2025-12-30 21:24:10 +08:00
commit 6f07b38370
1 changed files with 109 additions and 0 deletions

109
README.md Normal file
View File

@ -0,0 +1,109 @@
# gomatrix
`gomatrix` 是一个用Go语言编写的矩阵运算库提供了创建和操作矩阵的功能支持多种矩阵运算操作。
## 功能特性
- 创建矩阵(从数组、零矩阵、单位矩阵等)
- 矩阵基本运算(加法、减法、乘法)
- 矩阵乘法(线性代数意义上的矩阵乘法)
- 矩阵转置
- 矩阵数乘
- 访问和修改矩阵元素
- 多维矩阵支持
## 安装
```bash
go get git.kingecg.top/kingecg/gomatrix
```
## 使用示例
```go
package main
import (
"fmt"
"git.kingecg.top/kingecg/gomatrix"
)
func main() {
// 创建一个2x3的矩阵
data := []float64{1, 2, 3, 4, 5, 6}
mat, err := gomatrix.NewMatrix(data, []int{2, 3})
if err != nil {
fmt.Printf("创建矩阵失败: %v\n", err)
return
}
fmt.Printf("矩阵:\n%s\n", mat.String())
// 创建另一个矩阵进行运算
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
}
// 矩阵加法
sum, err := mat.Add(mat2)
if err != nil {
fmt.Printf("矩阵加法失败: %v\n", err)
return
}
fmt.Printf("矩阵相加结果:\n%s\n", sum.String())
// 矩阵乘法
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
}
data4 := []float64{1, 2, 3, 4}
mat4, err := gomatrix.NewMatrix(data4, []int{2, 2})
if err != nil {
fmt.Printf("创建矩阵失败: %v\n", err)
return
}
product, err := mat3.MatMul(mat4)
if err != nil {
fmt.Printf("矩阵乘法失败: %v\n", err)
return
}
fmt.Printf("矩阵乘法结果:\n%s\n", product.String())
}
```
## API 文档
### 构造函数
- `NewMatrix(data []float64, shape []int)`: 从给定的数据和形状创建矩阵
- `NewZeros(shape []int)`: 创建指定形状的零矩阵
- `NewOnes(shape []int)`: 创建指定形状的全1矩阵
- `NewIdentity(size int)`: 创建指定大小的单位矩阵
### 矩阵运算
- `Add(other *Matrix)`: 矩阵加法
- `Subtract(other *Matrix)`: 矩阵减法
- `Multiply(other *Matrix)`: 矩阵元素对应相乘
- `MatMul(other *Matrix)`: 矩阵乘法(线性代数乘法)
- `Scale(factor float64)`: 矩阵数乘
- `Transpose()`: 矩阵转置
### 其他方法
- `Get(indices ...int)`: 获取指定位置的值
- `Set(value float64, indices ...int)`: 设置指定位置的值
- `String()`: 返回矩阵的字符串表示
- `Shape()`: 返回矩阵的形状
- `Size()`: 返回矩阵的大小
## 许可证
本项目采用 MIT 许可证 - 请参阅 [LICENSE](LICENSE) 文件了解详情。