鱼C论坛

 找回密码
 立即注册
查看: 766|回复: 11

[作品展示] 使用140行代码实现C++矩阵

[复制链接]
发表于 2023-12-16 13:20:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 KeyError 于 2023-12-16 15:13 编辑



C++矩阵1.0


灰常的好用

游客,如果您要查看本帖隐藏内容请回复

[/hide]

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-16 13:21:16 | 显示全部楼层
这段代码实现了一个简单的矩阵库,其中有一些函数用来创建矩阵、输入矩阵、输出矩阵、矩阵相加、矩阵相减、矩阵乘法、标量乘法、矩阵自乘、矩阵求幂、矩阵转置等。以下是对这些函数的详细解释。

- Create函数:用来创建一个指定大小的矩阵。参数num是一个指向指针的指针,x和y分别表示矩阵的宽度和高度。

- Input函数:用来输入矩阵的元素值。

- Print函数:用来输出矩阵的元素值。

- Setting函数:用来设置矩阵a的值为矩阵b的值。

- Add函数:用来计算两个矩阵的和,并将结果保存在矩阵c中。

- Minus函数:用来计算两个矩阵的差,并将结果保存在矩阵c中。

- Product函数:用来计算两个矩阵的乘积,并将结果保存在矩阵c中。

- DProduct函数:用来计算一个矩阵与一个标量的乘积,并将结果保存在矩阵c中。

- DProduct函数:用来计算两个矩阵的点积,并将结果保存在矩阵c中。

- Power函数:用来计算一个矩阵的幂,并将结果保存在矩阵c中。

- T函数:用来计算矩阵的转置,并将结果保存在指定的矩阵指针b中。

这段代码的使用示例如下:
#include "matrix.h"using namespace mat;int main(){    Matrix *a, *b, *c;    Create(&a, 3, 3); // 创建一个3x3的矩阵a    Create(&b, 3, 3); // 创建一个3x3的矩阵b    Create(&c, 3, 3); // 创建一个3x3的矩阵c        Input(a); // 输入矩阵a的元素值    Input(b); // 输入矩阵b的元素值        Add(a, b, c); // 计算矩阵a和矩阵b的和,结果保存在矩阵c中    Print(c); // 输出矩阵c的元素值        Minus(a, b, c); // 计算矩阵a和矩阵b的差,结果保存在矩阵c中    Print(c); // 输出矩阵c的元素值        Product(a, b, c); // 计算矩阵a和矩阵b的乘积,结果保存在矩阵c中    Print(c); // 输出矩阵c的元素值        DProduct(a, 2, c); // 计算矩阵a与标量2的乘积,结果保存在矩阵c中    Print(c); // 输出矩阵c的元素值        DProduct(a, b, c); // 计算矩阵a和矩阵b的点积,结果保存在矩阵c中    Print(c); // 输出矩阵c的元素值        Power(a, 2, c); // 计算矩阵a的平方,结果保存在矩阵c中    Print(c); // 输出矩阵c的元素值        T(a, &b); // 计算矩阵a的转置,结果保存在矩阵b中    Print(b); // 输出矩阵b的元素值    return 0;}
这段代码定义了一个名为mat的命名空间,并在该命名空间中定义了矩阵的各种操作函数。在main函数中,我们先使用Create函数创建了三个3x3的矩阵a、b和c,然后分别进行了输入、输出、加法、减法、乘法、标量乘法、点积、求幂和转置等操作,并通过Print函数输出结果。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-19 14:54:55 | 显示全部楼层
竞赛中没啥用,因为竞赛中我们都是自己直接过程实现的。

点评

我很赞同!: 5.0
我很赞同!: 5
我造  发表于 2023-12-19 16:35
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-24 17:45:14 | 显示全部楼层
呦吼
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-24 22:37:00 | 显示全部楼层
求逆能来吗不过实际情况下稍微大一点的数据求逆就是禁忌
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-24 22:44:15 | 显示全部楼层
zhangjinxuan 发表于 2023-12-19 14:54
竞赛中没啥用,因为竞赛中我们都是自己直接过程实现的。

话说你们竞赛对于矩阵,会讲代数方面的东西吗?应该不会吧,估计就是基本的应用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-25 08:05:17 | 显示全部楼层
yinda_peng 发表于 2023-12-24 22:44
话说你们竞赛对于矩阵,会讲代数方面的东西吗?应该不会吧,估计就是基本的应用

矩阵乘法,例如斐波那契数列,可以用矩阵乘法做到 O(k^3 log n),这里 k = 2。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-25 09:54:55 | 显示全部楼层
zhangjinxuan 发表于 2023-12-25 08:05
矩阵乘法,例如斐波那契数列,可以用矩阵乘法做到 O(k^3 log n),这里 k = 2。

嗯,我想也是,就是一些简单应用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-27 13:32:36 | 显示全部楼层
想看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-2-15 23:38:28 | 显示全部楼层
欢迎来到
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-2-16 22:31:46 | 显示全部楼层
mark......甲鱼哥哥
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-7-6 02:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表