西交计算方法A上机大作业(共11页).docx
精选优质文档-倾情为你奉上 计算方法A上机大作业1. 共轭梯度法求解线性方程组算法原理:由定理3.4.1可知系数矩阵A是对称正定矩阵的线性方程组Ax=b的解与求解二次函数 极小点具有等价性,所以可以利用共轭梯度法求解的极小点来达到求解Ax=b的目的。共轭梯度法在形式上具有迭代法的特征,在给定初始值情况下,根据迭代公式:产生的迭代序列 在无舍入误差假定下,最多经过n次迭代,就可求得 的最小值,也就是方程Ax=b的解。首先导出最佳步长的计算式。假设迭代点和搜索方向已经给定,便可以通过 的极小化来求得,根据多元复合函数的求导法则得:令,得到: ,其中然后确定搜索方向。给定初始向量后,由于负梯度方向是函数下降最快的方向,故第一次迭代取搜索方向 。令其中。第二次迭代时,从 出发的搜索方向不再取,而是选取,使得与是关于矩阵A的共轭向量,由此可求得参数:然后从出发,沿进行搜索得到设已经求出,计算。令,选取,使得和是关于A的共轭向量,可得:具体编程计算过程如下:(1) 给定初始近似向量 以及精度 ;(2) 计算,取;(3) For k=0 to n-1 do(i);(ii);(iii);(iv)若,则输出近似解 ,停止;否则,转(v); (v) ;(vi);End do程序框图:程序使用说明:本共轭梯度法求解线性方程的程序直接打开matlab运行,在求解线性方程组Ax=b(A是对称正定矩阵)的时候,直接运行程序Gongetidufa,输入A,b的值,虽然该函数是通用的,但是对于矩阵A和向量b的输入,需要使用者根据A和b的特点自行输入。算例3.4.2计算结果:对99页例题3.4.2,运行程序Gongetidufa将矩阵A,b读入系统程序如下:clear allclcA=input('请输入A的值'); %输入n阶正定矩阵A的值b=input('请输入b的值:'); %输入b的值n=size(A,1); %求出矩阵A的行数x=zeros(n,1); %给定x的初始值e=10(-12); %给出精度r=b-A*x;d=r;for(i=1:n) a=norm(r,2)2/(d'*A*d); %求最佳步长 x=x+a*d; j=r; r=b-A*x; if(norm(r)<=e|i=n) break; else B=norm(r,2)2/norm(j,2)2; d=r+B*d; end endx %输出最终的x的结果计算结果:x=1;1;12.三次样条差值算法原理(三次样条插值函数的导出):(i).导出在子区间 上的S(x)的表达式由于S(x)的二阶导数连续,设S(x)再节点处的二阶导数值S(xi)=Mi,其中Mi为未知的待定参数。由S(x)是分段的三次多项式知,S(x)是分段线性函数,S(x)在子区间上可表示为其中hi=xi-x(i-1),对上式两次积分得到由插值条件 得到将 代入 可得(ii).建立参数 的方程组对 S(x)求导可得上式中令 得S(x)在xi处的左导数 ,令得到右导数,因为S(x)在内节点xi处一阶导数连续,所以,进一步推导可得 其中,上式为三弯矩方程组,因为三弯矩方程组只有n-1个方程,不能确定n+1个未知量Mi,所以需要再增加两个方程,由边界条件确定。第一种边界条件:此时已知 .不妨取,这时三弯矩方程组化为:以上方程组系数矩阵式严格三对角占优矩阵,可用追赶法求解。求出 后,代入S(x)可得三次样条插值函数的数学表达式。第二种边界条件:已知。记,则有所以:即其中所以得到第二种边界条件下的三弯矩方程组:该方程组系数矩阵是严格三对角占优矩阵,可用追赶法求解,具体追赶法的求解过程见数值分析教材。第三种边界条件:周期型边界条件.已知 是以 为周期的周期函数,则由周期性可知, ,这时,可以将点 看成内点,则方程组对i=n也成立,既有 ,也即,其中于是三弯矩方程组化为该方程组可用matlab直接解出。 程序框图如下:程序使用说明:本程序是求解137页例题4.6.1的运行结果,通过程序便可求得M,然后根据便可得到,在 上的三次样条插值函数,进而得到整个区间上的三次样条差值函数。算例计算结果:137页例题4.6.1的计算实习1、打开matlab运行Sanciyangtiao程序2、自行输入x和y的节点值3、得出计算结果3.龙贝格积分法对于复化梯形求积公式,取积分近似值对复化辛普森求积公式因为,所以上述两式相除得所以,同理,对,和分析可得龙贝格积分算法如下:如果 则取,否则,继续计算直到满足条件。程序框图:程序使用说明:运行本程序的时候,直接按照提示输入所求积分的原函数 (比如 ),然后按提示依次输入积分下限 ,积分上限和积分精度 ,然后程序便可计算出原函数在 之间的积分数值。算例计算结果:209页题6.2第一小题计算实习结果 4.四阶龙格-库塔法求解常微分方程的初值问题算法原理:用标准4级4阶R-K法求解一阶常微分方程的算法公式为:程序框图:开始定义变量x,y;输入f(x,y)的函数表达式输入积分区间、步长h、初始值y0、计算循环次数nFor循环计算yii<=n 是 否结束,输出yi程序使用说明:运行该程序,该程序是以求解277页例题9.1.2目的编写出来的,考虑到通用性,我们可以根据需要,自行修改代码中的f=inline('-0.9*y/(1+2*x)','x','y');其中inline中第一个函数表达式。程序需要自行输入积分区间、步长、和初始值。算例计算结果:例题9.1.2的计算实习结果y = 1.0, 0., 0., 0., 0.,0.专心-专注-专业