logo资料库

数值计算实验报告二.docx

第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
资料共8页,全文预览结束
实 验 报 告 实验人: 学号: 日期: 院(系): 专业(班级): 题目一: 5.0 5.0 5.0  5.0  5.0 5.0 5.0 5.0 设 A=,在 5.0 5.0  5.0 5.0  5.0 5.0  5.0  5.0 MALTAB 中实现基本的 QR 算法。 一、实验目的 对 QR 作进一步的了解,熟悉算法的步骤并理解其 二、实验原理 实数矩阵 A 的 QR 分解是把 A 分解为 这里的 Q 是正交矩阵(意味着 QTQ = I)而 R 是上三角矩阵。类似的,我们可 以定义 A 的 QL, RQ 和 LQ 分解。 更一般的说,我们可以因数分解复数 m×n 矩阵(有着 m ≥ n)为 m×n 酉 矩阵(在 Q∗ Q = I 的意义上)和 n×n 上三角矩阵的乘积。 如果 A 是非奇异的,则这个因数分解为是唯一,当我们要求 R 的对角是正数的 时候。 三、实验结果
四、实验代码 function [Q,R]=qrgv(A) % 参数说明 % A:需要进行 QR 分解的方阵 % Q:分解得到的正交矩阵 % R:分解得到的上三角阵 % [Q,R]=qr(A) % 调用 MATLAB 自带的 QR 分解函数进行验证 % [q,r]=qrgv(A) % 调用本函数进行 QR 分解 % q*r-A % 验证 A=QR % q'*q % 验证 q 的正交性 % norm(q) % 验证 q 的标准化,即二范数等于 1 n=size(A,1); R=A; Q=eye(n); for i=1:n-1 for j=2:n-i+1 x=R(i:n,i);
rt=givens(x,1,j); r=blkdiag(eye(i-1),rt); Q=Q*r'; R=r*R; end End 题目二: 采用带原点位移的 QR 算法计算 A= 敛情况,上一题的实验结果作比较 一、实验目的 5.0 5.0 5.0 5.0 5.0 5.0 5.0  5.0  5.0 5.0  5.0 5.0  5.0 5.0  5.0  5.0 的特征值,观察迭代过程的收 熟悉 MATLAB 的用法,并了解带原点位移的 QR 算法的原理和使用方法。 二、实验原理 一般情况下,QR 分解的收敛速度比较慢,因此可通过仿乘幂法将原矩阵先进 行一定长度的位移,可显著加速 QR 算法所得矩阵序列 kA 的收敛。0A=A(A 是原 始矩阵的拟上三角矩阵) (1) 分解 k-1-1k-1k-1A-uI=RkQ,其中-1uk 即位移量,一般取 A 的某一特 征值的近似值; 实际计算通常取为 k-1A 的右下角元素(k-1)n,na,或取为右下角 22 矩阵特征之中接近(k-1)n,na 者。 (2) 计算 kk-1k-1-1A=+RuIkQ。 (3) 重复过程(1)(2)直到 kA 变为近似舒尔矩阵,对角线元素即为 A 的 近似特征值 三、实验结果
四、结果分析 运行结果看出带位移的 QR 算法与一般的 QR 算法相比具有更好的收敛效 果, 极大地减少了运算量。 五、实验代码 function A=dp_qrfenjie(a) n=length(a); A=a; for i=1:100 A=a-a(n,n)*eye(n); theta(n-1)=0;
c(n-1)=0; s(n-1)=0; Q=1; for j=1:n-1 theta(j)=atan(A(j+1,j)/A(j,j)); c(j)=cos(theta(j)); s(j)=sin(theta(j)); P=eye(n); P(j,j)=c(j); P(j+1,j)=-s(j); P(j,j+1)=s(j); P(j+1,j+1)=c(j); invP=eye(n); invP(j,j)=c(j); invP(j+1,j)=s(j); invP(j,j+1)=-s(j); invP(j+1,j+1)=c(j); Q=Q*invP; R=P*A; A=R; end A=R*Q+a(n,n)*eye(n); tor=max(abs(diag(A)-diag(a))); if tor>5*10^-5 a=A; break; else end end i,Ak=A;lanmda=diag(A)'
题目三: 编程实现算法 6.3,可利用现成的 QR 分解算法。 一、实验目的 熟悉算法:利用矩阵的 QR 分解求解曲线拟合的最小二乘法。 二、实验原理 对给定数据点{(Xi,Yi)}(i=0,1,…,m),在取定的函数类Φ 中,求 p(x)∈Φ,使误差的平方和 E^2 最小,E^2=∑[p(Xi)-Yi]^2。从几何意义上讲, 就是寻求与给定点 {(Xi,Yi)}(i=0,1,…,m)的距离平方和为最小的曲线 y=p(x)。函数 p(x)称为拟合函数或最小二乘解,求拟合函数 p(x)的方法称为曲 线拟合的最小二乘法。 最小二乘的矩阵形式:Ax=b,其中 A 为 nxk 的矩阵,x 为 kx1 的列向量,b 为 nx1 的列向量。 正常来看,这个方程是没有解的,但在数值计算领域,我们通常是计算 min ||Ax-b||,解出其中的 x。比较直观的做法是求解 A'Ax=A'b,但通常比较低效。 其中一种常见的解法是对 A 进行 QR 分解(A=QR),其中 Q 是 nxk 正交矩阵 (Orthonormal Matrix),R 是 kxk 上三角矩阵(Upper Triangular Matrix), 然后 min ||Ax-b|| = min ||QRx-b|| = min ||Rx-Q'b||,用 MATLAB 命令 x=R\(Q'*b)可解得 x。 三、实验代码 function [c,R2,rout] = fitqr(x,y,basefun) % fitqr Least-squares fit via solution of overdetermined system with QR % % % % % % Synopsis: c % % % % Input: % % % % Output: c = vector of coefficients obtained from the fit x,y basefun = (string) name of user-supplied m-file that computes matrix A. The columns of A are the values of the basis functions evaluated at the x data points. = fitqr(x,y,basefun) [c,R2] = fitqr(x,y,basefun) [c,R2,r] = fitqr(x,y,basefun) Given ordered pairs of data, (x_i,y_i), i=1,...,m, fitqr returns the vector of coefficients, c_1,...,c_n, such that F(x) = c_1*f_1(x) + c_2*f_2(x) + ... + c_n*f_n(x) minimizes the L2 norm of y_i - F(x_i). = vectors of data to be fit
% <= 1 % x % R2 = (optional) adjusted coefficient of determination; 0 <= R2 R2 close to 1 indicates a strong relationship between y and r = (optional) residuals of the fit if length(y)~= length(x); error('x and y are not compatible'); end A = feval(basefun,x(:)); % Coefficient matrix of overdetermined system c = A\y(:); % Solve overdetermined system with QR factorization if nargout>1 r = y - A*c; [m,n] = size(A); R2 = 1 - (m-1)/(m-n-1)*(norm(r)/norm(y-mean(y)))^2; if nargout>2, rout = r; end % Residuals at data points used to obtain the fit end
分享到:
收藏