文档详情

jacobi迭代法线性方程组求解.doc

发布:2017-10-12约4.04千字共13页下载文档
文本预览下载声明
《MATLAB课程设计实践》课程考核 编程实现以下科学计算算法,并举一例应用之。 (参考书籍《精通MATLAB科学计算》,王正林等著,电子工业出版社,2009年) “jacobi迭代法线性方程组求解” 算法说明: 如果系数矩阵的主对角元全不为0,在上节A的分解中取 Q=D C=D-A 其中D是由A的主对角元素组成的对角阵,则有,迭代公式为: 这种迭代方法称为Jacobi迭代法。 在MATLAB中编程实现的Jacobi迭代法函数为:jacobi。 功能:用Jacobi迭代法求线性方程组Ax=b的解 调用格式:〔x,n〕=jacobi(A,b,x0,eps,varargin) 其中,A为线性方程组的系数矩阵; b为线性方程组中常数向量; x0为迭代初始向量; eps为解的精度控制(此参数可选); varargin为迭代步数控制(此参数可选); x为线性方程组的解; n为求出所需精度的解实际的迭代步数。 流程图: Jacobi迭代法的MATLAB程序代码: function[x,n]=jacobi(A,b,x0,eps,varargin) %采用Jacobi迭代法求线性方程组Ax=b的解 %线性方程组的系数矩阵:A %线性方程组的常数向量:b %迭代初始向量:x0 %解的精度控制:eps %迭代步数控制:varargin %线性方程组的解:x %求出所需精度的解实际的迭代步数:n if nargin==3 eps=1.0e-6; M=200; elseif nargin3 return elseif nargin==5 M=varargin{1}; end D=diag(diag(A)): %求A的对角矩阵 L=-tril(A,-1); %求A的下三角阵 U=-triu(A,1); %求A的上三角阵 B=D\(L+U); f=D\b; x=B*x0+f; n=1; %迭代次数 %迭代过程 while norm(x-x0)=eps x0=x; x=B*x0+f; n=n+1; if(n=M) disp(‘warning:迭代次数太多,可能不收敛!’); return; end end 例题: Jacobi迭代法求解线性方程组实例。用Jacobi迭代法求解以下线性方程组, 解:用jacobi迭代法求解,在MATLAB命令窗口中输入求解程序: A=[0.9889 -0.0005 -0.0002; -0.0046 0.9946 0.0077; -0.0002 0.0092 0.9941]; b=[1 0 1]’; x0=ones(3,1); [x,n]=jacobi(A,b,x0) 输出的计算结果为: x= 1.0114 -0,0031 1.0062 输出的迭代次数为: n= 4 可见,经过4步迭代,Jacobi法求出了方程组的解为: []=[1.0114,-0.0031,1.0062] 2、编程解决以下科学计算问题。 如图所示电路,已知。 流程图: 源代码: w=[eps,1,2]; %按输入信号的频率将信号分类 us=[10,10,0]; Is=[5,0,5]; z1=1./(0.5*w*j); %电容在不同频率的输入信号下产生的对应抗阻 z2=[2,2,2]; %电阻2在不同频率的输入信号下产生的对应抗阻 z3=[2,2,2]; %电阻3在不同频率的输入信号下产生的对应抗阻 z4=1*w*j; %电感在不同频率的输入信号下产生的对应抗阻 uoc=(z2./(z1+z2)-z4./(z3+z4)).*us; %电压源在bd点产生的等效电压 Zeq=z3.*z4./(z3+z4)+z1.*z2./(z1+z2); %求等效电阻 u=Is.*Zeq+uoc; %bd两点间的电压值 disp(w um phi) %显示各分量的值 disp([w,abs(u),angle(u)*180/pi]) 结果如图所示 则 已知,
显示全部
相似文档