当前位置: 首页 > 工具软件 > JAMA > 使用案例 >

Swift Jama Matrix线性代数矩阵运算库

申屠泉
2023-12-01

由于之前写一个软件同时开发安卓和iOS平台需要用到线性代数运算,安卓Java找到了一个比较合适的库Jama,但是在iOS平台上没有找到很合适的Swift库,尽管iOS自带有Accelerate计算库,但是只能实现最基本的矩阵运算,因此在看过Jama的源代码后发现其都是运用原生Java编写,可以轻松实现翻译成Swift语言版本,因此我花了两天时间翻译并调试,最终完成了Swift版Jama,具体代码可以到我的Github上下载:https://github.com/CalvinXu17/JamaSwift.git

所有类和方法均与Jama一致,可以直接搜索Jama查看使用方法

感谢Jama团队的源代码,Swift版如有错误,请大家指正

贴一个Demo:

let aa:[[Double]] = [[10.0,20.0,30.0],[12.0,24.0,46.0],[34.0,58.0,12.0]]
do {
    let mat = try Matrix(paramArrayOfDouble: aa)
    print("cond:  \(mat.cond())") 
    print("rank:  \(mat.rank())") // 秩
    print("chol:  \(mat.chol().getL().getArray())")
    print("trace: \(mat.trace())") // 迹
    print("transpose:\(mat.transpose().getArray())") // 转置
    let r = try mat.det() // 行列式的值
    print("det:   \(r)")
    let c = try mat.lu().det()
    let d = try mat.inverse().getArray() // 逆矩阵
    print("inverse: \(d)")
    print("特征值: \(mat.eig().getD().getArray())") // 特征值
    print("特征向量: \(mat.eig().getV().getArray())") // 特征向量
    // mat.times(Matrix) 矩阵乘法
    } catch {
    print(error)
}

 

 类似资料: