《MATLAB实现最速下降法.doc》由会员分享,可在线阅读,更多相关《MATLAB实现最速下降法.doc(3页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、MATLAB实现最速下降法%最速下降法clear all;close all;clc;tic;format longe disp(请输入参数);K=input(维数K=);ticA=hilb(K);% A元素是0-100 for i=1:K% A(i,i)=sum(abs(A(i,:)+20rand(1); %对角占优的量为020% endb=zeros(K,1);for i=1:K; x=0; for r=1:K; x=x+A(i,r); end b(i,1)=x;end 产生b矩阵,b中的元素为A中对应行的和,目的是使方程解全为 1jd=input(控制精度jd=);x0=zeros(K,
2、1); %初始迭代矩阵r=bAx0; %剩余向量ak=dot(r,r)/dot(A*r,r); y1=x0+akr; %迭代公式s1=1; %迭代次数while norm(y1-x0)=jd x0=y1; r=bA*x0; %剩余向量 ak=(r*r)/(Ar)*r); y1=x0+ak*r; %迭代公式 s1=s1+1; %迭代次数+1ends1toc; x0=zeros(K,1); 初始迭代矩阵r=bA*x0;剩余向量p=r;ak=dot(r,r)/dot(p,A*p);y=x0+ak*p; %迭代公式r1=rakA*p;bk=dot(r1,r1)/dot(r,r);p1=r1+bkp;s=1; 迭代次数while norm(yx0)=jd; 迭代条件 x0=y; p=p1; r=r1; ak=dot(r,r)/dot(p,A*p); y=x0+ak*p; %迭代公式 r1=rakAp; bk=dot(r1,r1)/dot(r,r); p1=r1+bkp; s=s+1;endstoc;t=1:K;yy1=abs(y11)/1;yy2=abs(y1)/1;plot(t,yy1,r);hold onplot(t,yy2,b);hold ontitle(绝对误差图)legend(最速下降法,共轭梯度法)