摘要: 在设计算法时,必须充分注意舍入误差对计算结果的影响。对于同一个计算问题,不同的算法,由于舍入误差的积累不同,其计算结果可能大不相同,即使一个非常良态的问题,由于使用的方法不当,也可使计算结果完全失真,而变得毫无用处。【例】考虑线性方程组Ax=b,其中 A=[1e-11 1;1+1e-11 1];b=[1 2]容易验证这是一个十分良态的矩阵计算问题 现在假设我们是在十位十进制浮点数下求解这一方程组。若按自然顺序有第二个方程减去第一个方程两边乘以1e11消去x1来求解,则得x1=0,x2=1;而若用第一个方程减去第二个方程消去x2来求解,则得x1=1,x2=1,这个与方程的精确解x1=1,x2=. 阅读全文
posted @ 2012-12-20 17:21 liang_l 阅读(2917) 评论(0) 推荐(0) 编辑
摘要: 参考文献:MATLAB函数库查询辞典 徐东艳 孟晓刚编著[函数描述]X=gmres(A,b)视图求解线性方程组A*x=b的解x。nXn的稀疏矩阵A必须是方程且应是大型稀疏矩阵。列向量b的长度必须为n。参数A可以是一个函数afun以使得afun(x)返回A*x,对于这一语法格式,gmres并不重新启动,迭代的最大次数为min(n,10)。 如果gmres收敛,则显示这一结果的信息。如果gmres在最大迭代步后没有收敛或者由于某种原因而停止,则打印警告信息,显示相对残差范数norm(b-A*x)/norm(b)并且显示该方法停止或者失效时的迭代步数。Gmres(A,b,restart)在每一次重新 阅读全文
posted @ 2012-12-11 16:40 liang_l 阅读(11262) 评论(0) 推荐(0) 编辑
摘要: 为了方便数据处理 通常需要将数据提取用别的软件处理 这就涉及到将程序运行过程中产生的数据存取出来,以下是C++实现其过程View Code #include<iostream>#include <fstream>using namespace std;int main(){ std::ofstream out1; out1.open("F:\\fluid\\test_for_CVIBM\\test1.txt"); std::ofstream out; out.open("F:\\fluid\\test_for_CVIBM\\test2.tx 阅读全文
posted @ 2012-11-05 11:04 liang_l 阅读(280) 评论(0) 推荐(0) 编辑
摘要: 总体的目标:求解线性方程组Ax=b求解的方法为 GMRES参考文献:C++和面向对象数值计算 杨道奇著 王晓鸽等译 到作者主页上下载代码 找出GMRES的代码由于作者采用Linux下编译,先改编成能在windows下可使用的包含三个文件 分别为 matvec.h matvec.cpp matvecmain.cppmatvec.h的代码如下:View Code /******************** matvec.h *************************** * This is a template library header file for manipulating an 阅读全文
posted @ 2012-11-02 10:46 liang_l 阅读(892) 评论(0) 推荐(0) 编辑
摘要: 总体的目标:求解线性方程组Ax=b待解的问题:当矩阵的维数较大时,不能用常规的直接分解法或者是一般的迭代法采取的方法:广义极小残量法(GMRES)参考文献:Iterative Methods for Sparse linear systems(second edition) Yousef Saad P165 矩阵论简明教程(第二版)科学出版社 徐仲等编 P150 6.3.2节 A+在解线性方程组中的应用 (Moore-Penrose 逆的使用)相关链接:http://blog.sciencenet.cn/home.php?mod=space&uid=315774&do=blog 阅读全文
posted @ 2012-09-19 23:26 liang_l 阅读(3458) 评论(0) 推荐(0) 编辑
摘要: 对于一个线性系统Ax=b而言,残差向量b-Ax的处理。参考书籍:稀疏线性系统的迭代方法(科学出版社)P138~142 Iterative Methods for Sparse linear systems(second edition)Yousef Saad1. 最速下降法(Steepest Descent Method)前提条件:A是SPD(对称正定矩阵)其迭代过程如下:1 Computer r= b-Ax and p=Ar2 Until convergence, Do3 a←(r,r)/(p,r)4 x←x+ar5 r←r-ap6 Compute p:=Ar7 EndDo... 阅读全文
posted @ 2012-09-11 15:55 liang_l 阅读(943) 评论(0) 推荐(0) 编辑
摘要: Gram-Schmidt正交化方法参考文献:http://blog.sciencenet.cn/home.php?mod=space&uid=315774&do=blog&id=383334问题:设有向量组α1, α2, . . . , αk,求一组与之等价的规范正交向量组v1, v2, . . . , vk(称作原向量组的规范正交化向量组)将上述问题转换为下面三个问题来解释:(1)设v1为单位向量,alpha为v1线性尤关的任意向量.求与 v1正交的单位向量v2。(要求用v1和alpha线性表示v2)(2)设alpha1和alpha2是两个线性尤关的向量.求两个正交的 阅读全文
posted @ 2012-09-07 20:35 liang_l 阅读(17472) 评论(3) 推荐(0) 编辑
摘要: 转至于:http://www.cnblogs.com/xiongjiaji/archive/2011/04/28/2476563.html#2464638为了方便自己在下面的命令中更好的适应自己,故在原文中加以颜色标记。(颜色部分为自己添加或者着重)调试快捷键F6: 生成解决方案Ctrl+F6: 生成当前项目F7: 查看代码Shift+F7: 查看窗体设计器F5: 启动调试Ctrl+F5: 开始执行(不调试)Shift+F5: 停止调试Ctrl+Shift+F5: 重启调试F9: 切换断点Ctrl+F9: 启用/停止断点Ctrl+Shift+F9: 删除全部断点F10: 逐过程Ctrl+F10 阅读全文
posted @ 2012-09-05 16:16 liang_l 阅读(372) 评论(0) 推荐(0) 编辑
摘要: 利用VS系列,在调试c/c++中,有的时候会出现以下情况:dosomething;function();othersomething;在第一行处设置断点,按F10,跳到function处,在按F10,跳到othersomething,这样的你看不到function函数内部具体实现的过程。要想实现在每一步都可以实现去执行的细节,在外部函数开头处设置一个断点。其后就可以看到一步步执行的状态。 阅读全文
posted @ 2012-09-05 14:29 liang_l 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 在利用Matlab对大型稀疏矩阵的方程组的求解--实现的原理可以参考东北大学博士论文《大型线性方程组的迭代解法》(作者 邵新慧)P18,关于CGNR的描述其matlab的代码如下:%目标:求解Ax=b%采用的方法:CGNR---参考文献-大型线性方程组的迭代解法function y=CGNR(A,b)TOF=0.0001;for i=1:length(b) x(i,1)=1;end%x(:,1)=[1 2 5];k=1;r(:,1)=b-A*x(:,1);while(norm(r(:,k),2)>TOF) k=k+1; if(k==2) p(:,2)=A'*r(... 阅读全文
posted @ 2012-09-02 20:18 liang_l 阅读(3344) 评论(0) 推荐(0) 编辑