一款矩阵求解器

这里下载:http://www.mwtee.com/forum-redirect-tid-614900-goto-lastpost.html#lastpost

一万未知数,VS2008下,求解时间13秒多一点,未使用omp

 

0

用于求解M s = b这样的线性方程组,row表示方阵M的阶数。数据类型双精度。矩阵可以ROW X ROW存储即多行多列存储,也可以1 X ROW^2也就是1行多列存储。

void Solvef ( float * * M, int row, float *b, float * & s );

//------------------------------------------------------------------------------------------------------------------------------

void Solved ( double * * M, int row,double * b, double * & s );

//------------------------------------------------------------------------------------------------------------------------------

void Solveld ( long double * * M, int row,long double * b, double * & s );

//------------------------------------------------------------------------------------------------------------------------------

void Solvedl ( double * M, int row,double * b, double * & s );

//----------------------------------------------------------------------------------------------------------------------------

1

工程文件需要包含:#include "windows.h",然后把MatrixSolve.dll文件复制到你的工程文件夹下。在需要使用求解器的地方写上:


typedef void ( *TSolve) ( double*, int, double*, double *& );


HINSTANCE handle;


FARPROC lpFarProc;


TSolve Solve;


handle= LoadLibrary( "MatrixSolve.dll");


if( handle == NULL )


{

FreeLibrary ( handle );

}

else

{

lpFarProc = GetProcAddress ( handle, "Solvedl" );

//使用Solvedl还是Solved或者其他的,看你的矩阵存储类型

Solve = TSolve ( lpFarProc );

// A X = B方阵A的阶数是ROWX是待求未知数

Solve( A, ROW, B, X );

FreeLibrary ( handle );

}

2

如果生成文件时提示fatal   error   LNK1107:…….
FAT32系统分区的问题,如果你的硬盘式用NTFS就没有问题。。。解决方法:项目à项目属性à配置属性à清单工具à使用FAT32解决方法为 

 

3

我一般使用多行多列存储系数矩阵,这里的例子使用1行多列存储,似乎二者并不影响求解时间。我感觉多行多列存储系数矩阵稍微快一点,但是有的人的说法与我恰好相反,不知道他们使用的是什么求解器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值