From 6f07b38370ffd24c0eca906d090d8986c68e2856 Mon Sep 17 00:00:00 2001 From: kingecg Date: Tue, 30 Dec 2025 21:24:10 +0800 Subject: [PATCH] first commit --- README.md | 109 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..96757ae --- /dev/null +++ b/README.md @@ -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) 文件了解详情。 \ No newline at end of file