matlab上机作业报告(计算初等反射阵-用Householder变换法对矩阵A作正交分解-连续函数最佳平方逼近等)

合集下载

householder海森伯格矩阵matlab

householder海森伯格矩阵matlab

亲爱的读者:今天我将带你深入探讨一下"householder海森伯格矩阵matlab"这一主题。

在文章中,我将以从简到繁、由浅入深的方式,帮助你更深入地理解这个主题。

在文章的结尾,我还会共享一些个人观点和理解,希望能够给你带来一些启发。

1. householder海森伯格矩阵的概念在深入探讨householder海森伯格矩阵之前,我们先来了解一下它的基本概念。

海森伯格矩阵是数学中的一个重要概念,主要用于矩阵的相似对角化以及特征值计算。

而Householder变换则是一种重要的线性代数变换,它可以通过反射矢量来实现。

在Matlab中,我们可以利用这两个概念来进行矩阵运算和计算,从而解决实际问题。

2. 如何在Matlab中实现海森伯格矩阵在Matlab中,我们可以利用一些内置函数来实现海森伯格矩阵的计算和操作。

我们需要定义一个矩阵,然后利用Householder变换来对矩阵进行相似对角化。

通过Matlab提供的函数和工具,我们可以轻松地完成这一过程,并得到我们想要的结果。

3. 如何利用海森伯格矩阵解决实际问题除了理论上的应用,海森伯格矩阵在实际问题中也有着重要的应用价值。

比如在信号处理、图像处理以及数据分析中,海森伯格矩阵都可以发挥重要作用。

通过在Matlab中应用海森伯格矩阵,我们可以更快、更准确地解决这些实际问题,从而提高工作效率和处理能力。

总结回顾通过本文的介绍,相信您对"householder海森伯格矩阵matlab"这一主题有了更深入的理解。

在Matlab中,海森伯格矩阵和Householder变换的应用为我们提供了处理复杂问题的利器,可以帮助我们更好地应对实际工作中的挑战。

我们也应该不断学习和探索,发现更多关于海森伯格矩阵的应用,从而不断提高自己的能力和水平。

个人观点和理解在我看来,海森伯格矩阵在Matlab中的应用具有重要的意义。

它不仅可以帮助我们更好地理解和处理矩阵运算,同时也可以为我们的工作和研究提供更多的可能性。

Matlab实验报告

Matlab实验报告

实验一:Matlab操作环境熟悉一、实验目的1.初步了解Matlab操作环境。

2.学习使用图形函数计算器命令funtool及其环境。

二、实验内容熟悉Matlab操作环境,认识命令窗口、内存工作区窗口、历史命令窗口;学会使用format命令调整命令窗口的数据显示格式;学会使用变量和矩阵的输入,并进行简单的计算;学会使用who和whos命令查看内存变量信息;学会使用图形函数计算器funtool,并进行下列计算:1.单函数运算操作。

求下列函数的符号导数(1)y=sin(x); (2) y=(1+x)^3*(2-x);求下列函数的符号积分(1)y=cos(x);(2)y=1/(1+x^2);(3)y=1/sqrt(1-x^2);(4)y=(x1)/(x+1)/(x+2)求反函数(1)y=(x-1)/(2*x+3); (2) y=exp(x); (3) y=log(x+sqrt(1+x^2));代数式的化简(1)(x+1)*(x-1)*(x-2)/(x-3)/(x-4);(2)sin(x)^2+cos(x)^2;(3)x+sin(x)+2*x-3*cos(x)+4*x*sin(x);2.函数与参数的运算操作。

从y=x^2通过参数的选择去观察下列函数的图形变化(1)y1=(x+1)^2(2) y2=(x+2)^2(3) y3=2*x^2 (4) y4=x^2+2 (5) y5=x^4 (6)y6=x^2/23.两个函数之间的操作求和(1)sin(x)+cos(x) (2) 1+x+x^2+x^3+x^4+x^5乘积(1)exp(-x)*sin(x) (2) sin(x)*x商(1)sin(x)/cos(x); (2) x/(1+x^2); (3) 1/(x-1)/(x-2);求复合函数(1)y=exp(u) u=sin(x) (2) y=sqrt(u) u=1+exp(x^2)(3) y=sin(u) u=asin(x) (4) y=sinh(u) u=-x实验二:MATLAB基本操作与用法一、实验目的1.掌握用MATLAB命令窗口进行简单数学运算。

实验二Matlab矩阵的初等运算及其答案

实验二Matlab矩阵的初等运算及其答案

实验二 Matlab矩阵的初等运算实验目的:掌握Matlab的运算方法实验内容:2.1 在Matlab命令窗口输入:H1=ones(3,2) H2=zeros(2,3) H3=eye(4)观察以上各输入结果,并在每式的后面标注其含义。

>> format compact>> H1=ones(3,2),disp('3行2列的全1矩阵') H1 =1 11 11 13行2列的全1矩阵>> H2=zeros(2,3),disp('2行3列的全零矩阵') H2 =0 0 00 0 02行3列的全零矩阵>> H3=eye(4),disp('4阶的单位矩阵') H3 =1 0 0 00 1 0 00 0 1 00 0 0 14阶的单位矩阵2.2 已知123456⎡⎤=⎢⎥⎣⎦Q,[]789=P,1⎡⎤=⎢⎥⎣⎦R,3=S,试把这四个矩阵组合为一个大矩阵,看看有几种组合方式?8>> format compact>> Q=[1 2 3;4 5 6];P=[7 8 9];R=[1;0]; S=3; >> [Q,R;P,S]ans =1 2 3 14 5 6 07 8 9 3>> [R,Q;P,S]ans =1 12 30 4 5 67 8 9 3>> [Q,R;S,P]ans =1 2 3 14 5 6 03 7 8 9>> [R,Q;S,P]ans =1 12 30 4 5 63 7 8 9 >> [S,P;R,Q]ans =3 7 8 91 12 30 4 5 6 >> [S,P;Q,R]ans =3 7 8 91 2 3 14 5 6 0 >> [P,S;R,Q]ans =7 8 9 31 12 30 4 5 6 >> [P,S;Q,R]ans =7 8 9 31 2 3 14 5 6 02.4 建立一个字符串向量,删除其中的大写字母。

MATLAB上机实验1答案

MATLAB上机实验1答案

实验1 Matlab 初步一、问题已知矩阵A 、B 、b 如下:⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎣⎡-------------=031948118763812654286174116470561091143A ⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎣⎡------=503642237253619129113281510551201187851697236421B []1187531=b应用Matlab 软件进行矩阵输入及各种基本运算。

二、实验目的学会使用Matlab 软件构作已知矩阵对应的行(列)向量组、子矩阵及扩展矩阵,实施矩阵的初等变换及线性无关向量组的正交规范化,确定线性相关相关向量组的一个极大线性无关向量组,且将其余向量用极大线性无关向量组线性表示,并能编辑M 文件来完成所有的实验目的。

三、预备知识1、 线性代数中的矩阵及其初等变换、向量组的线性相关性等知识。

2、 Matlab 软件的相关命令提示如下;(1) 选择A 的第i 行做一个行向量:ai=A(i,:);(2) 选择A 的第j 行做一个列向量:ai=A(j,:);(3) 选择A 的某几行、某几列上的交叉元素做A 的子矩阵:A([行号],[列号]);(4) n 阶单位阵:eye(n);n 阶零矩阵:zeros(n);(5) 做一个n 维以0或1为元素的索引向量L ,然后取A(:,L),L 中值为1的对应的列将被取到。

(6) 将非奇异矩阵A 正交规范化,orth(A) ;验证矩阵A 是否为正交阵,只需做A*A'看是否得到单位阵E 。

(7) 两个行向量a1和a2的内积:a1*a2'。

(8) 让A 的第i 行与第j 列互换可用赋值语句:A([i,j],:)=A([j,i],:);(9)让K乘以A的第i行可用赋值语句:A(i,:)=K*A(i,:);(10)让A的第i行加上第j行的K倍可用赋值语句:A(i,:)=A(i,:)+K*A(j,:);(11)求列向量组的A的一个极大线性无关向量组可用命令:rref(A)将A化成阶梯形行的最简形式,其中单位向量对应的列向量即为极大线性无关向量组所含的向量,其它列向量的坐标即为其对应向量用极大线性无关组线性表示的系数。

matlab上机实验报告

matlab上机实验报告

《MATLAB 语言及其应用实验》上机实验报告1姓名: 学号:请各位同学将命令和结果由MATLAB 中复制(或截屏)后保存至word 文档中。

1. 计算矩阵 与 的和、乘积、各元素的乘积以及Kronecker 积。

2.对于B AX =,如果⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=753467294A ,⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=282637B ,求解X 。

3.对矩阵912563827⎡⎤⎢⎥⎢⎥⎢⎥⎣⎦进行特征值分解,给出特征值与特征向量。

4.已知向量[4+5i, 6, 7-1.5j, 5+9j],以其为对角线元素生成对角矩阵。

5. 生成含有8个元素的高斯向量a,要求元素的均值、方差分别为5、4,再生成含有7个元素的随机向量,要求元素服从上的均匀分布。

求两者的卷积。

6. 求解多项式x3-7x2+2x+40的根。

7. 计算多项式乘法(x2+2x+2)(x2+5x+4)。

8. 对下式进行部分分式展开:9. 已知y=sin(x),x从0到2 ,间隔 x=0.02 ,求y的最大值、最小值、均值和标准差。

10. 用符号函数法求解方程at2+b*t+c=0。

11. 用符号计算验证三角等式:sin( 1)cos( 2)-cos( 1)sin( 2) =sin( 1- 2)12. 因式分解:13. ⎥⎥⎦⎤⎢⎢⎣⎡=)sin()log(12x x e x x a f ax ,用符号微分求df/dx ,并用符号定积分来验证。

14. 求解非线性方程组1211223sin 2cos x x x x x x -=⎧⎨+=⎩。

>> syms x1 x2>> [x1,x2]=solve(x1-3*x2-sin(x1),2*x1+x2-cos(x2))x1 =0.49662797440907460178544085171994x2 =0.0067214622395756734146654770697884。

Householder变换与矩阵的正交分解.

Householder变换与矩阵的正交分解.

L
2w1w2 1 2w22
L
L L L
2wnw1 2wnw2 L
2w1 2w2
wn wn
L
1
2wn2
数值分析
数值分析
(3)镜映射 几何意义
平面 方程 W T x 0 x
若 x , Hx (I 2WW T )x x 2WW T x x
若 y , Hy H( x kW ) x k(I 2WW T )W
即:任给定x ( x1 , x2 ,L , xn )T 0, 构造Hk Rnn , 使
Hk x ( x1, x2 ,L , xk1, k , 0,L , 0)T
推导:x ( x1 , x2 ,L , xn )T 0
y ( x1 ,L , xk1 , k , 0,L , 0)T
n
1
k sign( xk )( xi2 )2 ,
变换阵.
H
1 2w12 2w2w1
L
2w1w2 1 2w22
L
L L L
2wnw1 2wnw2 L
2w1wn 2w2wn
L
1
2wn2
数值分析
数值分析
例:W
1 2
0
T
1 2
R3 ,||W ||2 1
1
H I 2WW T I 2
2 0 1
1 2
0
1 2
x kW 2kWW TW x kW y
W y x kW
x
y x kW
数值分析
数值分析
H阵的作用:
定理 设两个不相等的n维向量x, y Rn , x y,
但 x y ,则存在householder阵
2
2
UU T

householder 变换对矩阵三对角化matlab -回复

householder 变换对矩阵三对角化matlab -回复

householder 变换对矩阵三对角化matlab -回复“Householder变换对矩阵三对角化Matlab”矩阵的三对角化是线性代数中一个重要且有用的概念和计算方法。

三对角矩阵具有简洁的结构,其在解决线性方程组、计算特征值和特征向量等问题中有着广泛的应用。

而Householder变换则是将一个向量通过一次变换,使其只有一个非零元素的特殊线性代数方法。

通过组合使用这两个工具,我们可以将一个任意大小的矩阵转化为一个三对角矩阵,从而简化相关计算。

本文将以Matlab为工具,一步一步回答如何使用Householder变换来实现矩阵的三对角化。

首先,我们需要明确三对角化和Householder变换的定义。

三对角矩阵是一个只有主对角线和两条相邻的对角线(上下对角线)上有非零元素的矩阵。

对于一个n ×n的矩阵A,我们希望通过矩阵相似变换找到一个n ×n的三对角矩阵T,使得A和T具有相同的特征值。

这样做的好处在于,我们可以通过T更简单地计算特征值、特征向量和解线性方程组等。

而Householder变换是一种将向量映射到与坐标轴上轴向正相关的特殊线性变换。

对于一个向量x,我们可以通过一个Householder变换P,将它变换为一个只有第一维元素非零的向量。

Householder变换是通过一个矩阵P实现的,其定义为P = I - 2uuT / (uTu),其中I为单位矩阵,u为归一化的向量。

接下来,我们将详细介绍如何使用Householder变换对矩阵进行三对角化。

首先,我们需要生成一个任意大小的矩阵A。

在Matlab中,可以使用rand 函数生成一个随机矩阵。

例如,我们生成一个5 ×5的矩阵A:matlabA = rand(5);接下来,我们定义一个循环,逐步对矩阵A进行三对角化。

循环从第一列开始,对每一列应用Householder变换,使得A的下三角元素为零。

通过逐步迭代,我们最终可以将A转化为一个三对角矩阵。

Matlab上机作业部分参考答案

Matlab上机作业部分参考答案

参考答案
2. 求方程组的根
解: >> a=[1 4 -3;2 5 -1;1 6 1]; >> b=[2;11;12]; >> x=a\b 2x1+5x2-x3=11 x1+6x2+x3=12
3. 解方程组:
2 9 0 13 3 4 11 x 6 2 2 6 6
[答案] >> a=[2 9 0;3 4 11;2 2 6]; >> b=[13 6 6]'; >> x=a\b x= 7.4000 -0.2000 -1.4000
4. 试判定下面的线性代数方程是否有解。
3 13 16 2 1 5 11 10 8 3 X 9 4 7 6 12 4 14 15 1 7
【求解】可以将方程写成矩阵形式,得出的两列向量为方程 的基础解系。 >> A=[6,1,4,-7,-3; -2,-7,-8,6,0; -4,5,1,-6,8; -34,36,9,-21,49; -26,-12,-27,27,17]; A=sym(A); rank(A) ans = 3 >> null(A) ans = [ 191/34, 95/17] [ 0, 1] [ 1, 0] [ 109/34, 103/34] [ 173/34, 151/34]
A=[1 2 4 6 -3 2;2 4 -4 5 1 -5;3 6 2 0 5 -9;2 3 0 4 0 1;0 -4 -5 2 1 4 ;5 5 -3 6 6 -4 ]; b=[4 3 -1 8 -5 2]'; B=[A b]; C=rref(B) A=[1 2 4 6 -3 2;2 4 -4 5 1 -5;3 6 2 0 5 -9;2 3 0 4 0 1;0 -4 -5 2 1 4 ;5 5 -3 6 6 -4 ]; b=[4 3 -1 8 -5 2]'; B=[A b]; n=6; R_A=rank(A) R_B=rank(B) format rat if R_A==R_B&R_A==n X=A\b elseif R_A==R_B&R_A<n X=A\b C=null(A,'r') else X='equation has no solves' end syms k1 k2 X=k1*C+X pretty(X)

MATLAB上机实验(答案)

MATLAB上机实验(答案)

MATLAB工具软件实验(1)(1)生成一个4×4的随机矩阵,求该矩阵的特征值和特征向量。

程序:A=rand(4)[L,D]=eig(A)结果:A =0.9501 0.8913 0.8214 0.92180.2311 0.7621 0.4447 0.73820.6068 0.4565 0.6154 0.17630.4860 0.0185 0.7919 0.4057L =-0.7412 -0.2729 - 0.1338i -0.2729 + 0.1338i -0.5413 -0.3955 -0.2609 - 0.4421i -0.2609 + 0.4421i 0.5416 -0.4062 -0.0833 + 0.4672i -0.0833 - 0.4672i 0.4276 -0.3595 0.6472 0.6472 -0.4804 D =2.3230 0 0 0 0 0.0914 + 0.4586i 0 0 0 0 0.0914 - 0.4586i 0 0 0 0 0.2275(2)给出一系列的a值,采用函数2222125x ya a+=-画一组椭圆。

程序:a=0.5:0.5:4.5; % a的绝对值不能大于5t=[0:pi/50:2*pi]'; % 用参数t表示椭圆方程X=cos(t)*a;Y=sin(t)*sqrt(25-a.^2);plot(X,Y)结果:(3)X=[9,2,-3,-6,7,-2,1,7,4,-6,8,4,0,-2], (a)写出计算其负元素个数的程序。

程序:X=[9,2,-3,-6,7,-2,1,7,4,-6,8,4,0,-2];L=X<0;A=sum(L)结果:A =5(b ) 写出一段程序,使其能够找出向量x 中的最大、最小元素。

(不能使用min 和max 命令)程序:X=[9,2,-3,-6,7,-2,1,7,4,-6,8,4,0,-2];xmin=999;xmax=-999;for i=1:length(X)if xmin>X(i)xmin=X(i);endif xmax<X(i)xmax=X(i);endend[xmin,xmax]结果:ans =-6 9(4) 方波函数为f(t)=]0,[],0[11ππ-∉∈⎩⎨⎧-t t , 利用0sin(21)()21n n t f t n ∞=+=+∑,用MATLAB 编程和绘图说明方波是奇次谐波的叠加。

matlab上机作业报告(计算初等反射阵-用Householder变换法对矩阵A作正交分解-连续函数最佳平方逼近等)

matlab上机作业报告(计算初等反射阵-用Householder变换法对矩阵A作正交分解-连续函数最佳平方逼近等)
k,jj,ii-循环变量;
t1-计算上三角阵R的系数tj;
t2-计算正交矩阵Q的系数ti;
4.程序代码:
function [Q,A]=qrhh(A)
%QRHH用Householder变换法对n阶矩阵A作正交分解A=QR;
%程序功能:函数qrhh用Householder变换法对矩阵A作正交分解A=QR;
if M==0%如果x=0,提示出错,程序终止;
disp('Error:M=0');
return;
else
x=x/M;%规范化
end;
s=norm(x);%求x的二范数
if x(1)<0%首项为负,s值要变号
s=-s;
end
u=x;%除首项外,其余各项x,u相同
u(1)=s+x(1);%计算u的首项
p=s*u(1);%计算p
if n==1 u=0; end%若x是1×1维向量,则u=0
(2)
function H=holderk(x,k)
%HOLDERK给定向量x≠0,数k,计算初等反射阵Hk,使HkX=Y,其中Y的第k+1项到最后项全为零;
%程序功能:函数holderk给定向量x≠0,数k,计算初等反射阵Hk,使HkX=Y,%程序功能:函数holder2给定向量x≠0,计算Householder初等变换阵的p,u;
一、给定向量x≠0,计算初等反射阵Hk。
1.程序功能:
给定向量x≠0,计算初等反射阵Hk。
2.基本原理:
若 的分量不全为零,则由
确定的镜面反射阵H使得 ;当 时,由

算法:
(1)输入x,若x为零向量,则报错
(2)将x规范化,

用matlab实现对矩阵的householder变换 -回复

用matlab实现对矩阵的householder变换 -回复

用matlab实现对矩阵的householder变换-回复如何使用Matlab实现对矩阵的Householder变换。

第一部分:背景介绍Householder变换是一种常用的数值线性代数方法,通常用于矩阵的QR 分解、最小二乘解法和特征值计算等问题。

它通过一系列的Householder 矩阵的乘积,将一个矩阵转化为Hessenberg或者上三角的形式。

本文将介绍如何使用Matlab实现对矩阵的Householder变换,并给出相应的代码示例。

第二部分:Householder变换的原理Householder变换通过反射变换将向量x映射到一个与标准单位向量e_1=[1,0,0,\cdots,0]平行的向量。

设v=x-\alpha e_1,其中\alpha=\pm x _2,则通过Householder矩阵的乘积可以得到如下形式:H=I-2\frac{vv^T}{v^Tv}其中I是单位矩阵,v是一个向量。

对于一个m\times n的矩阵A,可以通过进行m-1次Householder变换将其转化为如下形式:H_mH_{m-1}\cdots H_2H_1A=R其中H_i是第i次Householder变换对应的矩阵,R是一个上三角矩阵。

第三部分:Matlab编程实现下面将介绍如何使用Matlab实现对矩阵的Householder变换。

假设已有一个m\times n的矩阵A。

1. 首先,我们需要确定Householder变换的次数,即确定需要多少次Householder矩阵的乘积才能转化A为上三角形式。

通常情况下,我们可以选择m-1或n中的较小值作为变换次数。

2. 接下来,我们需要编写一个函数来计算Householder变换对应的矩阵H_i。

下面是代码示例:matlabfunction H = householder(v)v = v(:);alpha = -sign(v(1))*norm(v);e1 = zeros(size(v));e1(1) = 1;u = v - alpha*e1;H = eye(length(v)) - 2*(u*u')/(u'*u);end以上代码中,`v`是一个向量,`alpha`为前面提到的\alpha值,`e1`为标准单位向量。

用matlab实现对矩阵的householder变换 -回复

用matlab实现对矩阵的householder变换 -回复

用matlab实现对矩阵的householder变换-回复Matlab是一种功能强大且广泛使用的数值计算软件,它提供了许多用于矩阵操作和线性代数的内置函数和工具。

在本文中,我们将讨论如何使用Matlab实现矩阵的Householder变换。

Householder变换是一种线性代数中常用的方法,它用于将一个向量或矩阵通过正交变换转化为上三角形或下三角形的形式。

它可以用于许多数值计算问题,如矩阵的QR分解、矩阵的奇异值分解等。

在Matlab中,可以使用内置函数`hess` 或`hessqr` 实现矩阵的Householder变换。

`hess` 函数将给定矩阵转化为上Hessenberg形式,而`hessqr` 函数将给定矩阵转化为上三角形形式。

下面是一步一步实现矩阵的Householder变换的详细步骤:1. 创建一个需要进行Householder变换的矩阵。

可以使用`rand` 或`eye` 函数创建一个随机矩阵或单位阵。

matlabA = rand(5, 5); 创建一个5x5的随机矩阵B = eye(5); 创建一个5x5的单位阵2. 使用`hess` 或`hessqr` 函数对矩阵进行变换。

matlabH = hess(A); 将矩阵A转化为上Hessenberg形式R = hessqr(A); 将矩阵A转化为上三角形形式注意,`hess` 函数将矩阵转化为上Hessenberg形式,即除了第一列的其它元素都为零,而`hessqr` 函数将矩阵转化为上三角形形式,即除了对角线及其以上的元素都为零。

3. 检查转换后的矩阵。

可以使用`triu` 函数提取矩阵的上三角部分,并使用`tril` 函数提取矩阵的下三角部分。

matlabT = triu(H); 提取上三角部分L = tril(H); 提取下三角部分请注意,上Hessenberg形式的矩阵只有上三角部分和第一列非零,其它部分都为零。

4. 可选:检查转换后的矩阵的性质。

用matlab实现对矩阵的householder变换

用matlab实现对矩阵的householder变换

用matlab实现对矩阵的householder变换1. 引言1.1 概述在现代科学和工程领域中,矩阵计算是非常重要和常见的任务。

对于大规模的线性方程组求解、特征值计算、奇异值分解等问题,矩阵变换是一种常用的数值方法之一。

而Householder变换作为一种重要的矩阵变换技术,在很多数值计算领域广泛应用。

Householder变换最初由Alston S. Householder在20世纪50年代首次提出,并得到了广泛的研究和发展。

它通过对称正交变换将矩阵转化为上/下Hessenberg形式或者三对角形式,从而简化复杂问题的求解过程,并且可以降低计算量。

本文旨在介绍Matlab中实现矩阵的Householder变换的方法,并深入探讨其在数值计算中的应用以及相关的数值分析和优化策略。

1.2 文章结构本文共分为5个部分,具体结构如下:第一部分为引言部分,主要包括概述、文章结构以及目的等内容。

第二部分为Householder变换简介,包括定义、在矩阵计算中的应用以及相关的研究和应用领域。

第三部分介绍了Matlab中实现Householder变换的方法,包括Matlab中的相关函数介绍、算法步骤解析以及具体实例演示。

第四部分为数值计算分析与讨论,主要涉及Householder变换对矩阵计算精度的影响分析、计算复杂度分析和优化策略探讨,以及实际案例应用和结果评估与比较等内容。

最后一部分为结论与展望,总结全文所述,并探讨未来工作可能的方向和发展趋势。

1.3 目的本文旨在详细介绍在Matlab中实现对矩阵进行Householder变换的方法,并深入探讨其在数值计算中的应用。

通过对Householder变换在矩阵计算中精度影响、计算复杂度以及优化策略等方面进行其他比较全面和深入的分析,希望读者能够更好地理解并掌握该技术。

最后,在结论部分将总结本文内容并给出未来工作展望和发展方向说明。

2. Householder变换简介2.1 Householder变换的定义Householder变换,又称为反射变换,是一种线性代数中常用的矩阵变换方法。

householder 变换对矩阵三对角化matlab

householder 变换对矩阵三对角化matlab

householder 变换对矩阵三对角化matlab如何使用Householder变换对矩阵进行三对角化的问题。

Householder 变换是一种重要的矩阵变换技术,用于将矩阵转化为三对角矩阵的形式。

在本文中,我将详细解释Householder变换的原理和应用,以及如何使用Matlab进行相关计算。

首先,让我们先介绍一下Householder变换的原理。

Householder变换是一种反射变换,通过选择合适的反射超平面来使得矩阵的大部分元素变为零。

具体地说,对于一个m×n的矩阵A,我们可以通过构造一个单位向量v和一个标量β,从而得到一个Householder变换矩阵H,使得HAv=[d,0,0,...,0],其中d是一个实数。

Householder变换的具体构造如下:1. 选择一个列向量x,使得x ₂= A(:,1) ₂,并计算标量β=sign(A(1,1))* A(:,1) ₂。

2. 构造单位向量v=A(:,1)+βe₁,其中e₁是标准单位向量。

3. 计算Householder变换矩阵H=I-2vvᵀ/ v ₂²。

4. 计算新的矩阵B=HA,其中H是之前步骤中计算得到的Householder变换矩阵。

重复以上步骤,直到矩阵B变为上三角矩阵。

接下来,我们将使用Matlab来演示如何使用Householder变换对矩阵进行三对角化。

假设我们有一个5×5的矩阵A。

首先,我们需要定义矩阵A。

MatlabA = [1 2 3 4 5; 6 7 8 9 10; 11 12 13 14 15; 16 17 18 19 20; 21 22 23 2425];接下来,我们将在一个循环中使用Householder变换来依次将矩阵A的每一列变为三对角矩阵。

Matlab[m, n] = size(A);for i = 1:n-2x = A(i:m, i);beta = sign(A(i,i))*norm(x);v = x;v(1) = x(1) + beta;v = v/norm(v);H = eye(m-i+1) - 2*v*v';A(i:m, i:n) = H*A(i:m, i:n);A(1:m, i+1:n) = A(1:m, i+1:n) - 2*v*(v'*A(1:m, i+1:n)); end最后,我们得到的矩阵A就是一个三对角矩阵。

householder 变换对矩阵三对角化matlab -回复

householder 变换对矩阵三对角化matlab -回复

householder 变换对矩阵三对角化matlab -回复电压比较器是一种常见的电子元件,用于比较输入信号的电压与设定阈值电压,根据比较结果产生高低电平输出。

它具有高精度、高稳定性和快速响应的特点,广泛应用于各种领域和电子设备中。

一、应用场景之一:模拟信号处理电压比较器在模拟信号处理中有许多应用场景。

例如,它可以用于电压级联检测,以确定两个电压信号中的较高或较低电平。

这在模拟信号处理中是很常见的,比如音频信号处理、温度传感器、光传感器等。

以温度传感器为例,当传感器输出的电压高于或低于设定的温度阈值电压时,比较器将输出相应的高或低电平信号,从而触发相应的控制动作,如通知警报、调节温度等。

二、应用场景之二:电源管理电压比较器在电源管理中也起到重要的作用。

电源管理是指对电源进行有效的控制和监测,以确保电子设备的正常运行。

电源管理需要对电压进行监测,并对电压波动进行调整和控制。

电压比较器可以将不同的电压信号与设定的参考电压进行比较,一旦检测到电压异常(如过高或过低),就会触发相应的保护机制,如断电、发送警报等,以保护电子设备的安全运行。

三、应用场景之三:自动控制系统电压比较器在自动控制系统中也被广泛应用于信号处理和逻辑判断。

自动控制系统通常包括传感器、执行器、控制器等组件。

传感器负责采集环境信号,控制器负责对传感器采集到的信号进行处理和判断,根据预设条件来触发相应的动作。

电压比较器在自动控制系统中扮演着信号处理的角色,通过与设定的阈值电压进行比较,判断输入信号的高低电平,并根据比较结果来决定执行器的状态,从而实现自动控制的功能。

四、应用场景之四:触发器和计数器电压比较器还常用于触发器和计数器等数字电路中。

触发器是一种用于存储和控制信号的器件,常用于数字系统中的时序控制。

计数器是一种用于计数和存储信号的器件,常用于序列生成和计数应用中。

电压比较器通过将输入信号与参考电压进行比较,可以作为触发器和计数器中的比较器部分,实现器件的工作稳定性和可靠性。

Householder变换

Householder变换

Householder变换整理⾃:《数值线性代数(徐树⽅)》Householder变换是⼀种能将n维向量x变换到任⼀n维向量y的正交变换,由于从⼏何上看Householder变换通过x和y之间的垂直平分⾯将x“反射”到y,因此Householder变换⼜叫镜⾯变换;Householder的主要应⽤在于它能够将x变换成任意⼀个等长的若⼲个分量为0的向量(这种向量具有某些良好的性质,尤其是在的应⽤),只需要对变换后的向量再进⾏⼀次Householder变换,就能变回x;本篇先介绍Householder变换的定义及其性质,再推导⼀种⽤于求Householder变换的数值化⽅法⼀、Householder变换及其性质定义:Householder变换:设ω∈R n, ||ω||2=1,定义:H=I-2ωωT(H∈R n×n) 公式1称H为Householder变换(矩阵)性质:1.对称性:H T=H2.正交性:H T H=I3.对合性:HH=I4.反射性:对任意x∈R n,Hx是x关于ω的垂直超平⾯(即span{ω⊥})的镜⾯反射。

性质1,2,3不难证,这⾥仅证性质4:设x∈R n,则可以将x表⽰为x=u+αω,其中u∈span{ω⊥}(即ω的正交补空间),α∈R n,即有:Hx=H(u+αω)=(I-2ωωT)u+(I-2ωωT)αω=u-αω,得证。

从以上证明过程可以看出,H将x沿ω的分量映射到超平⾯的反⽅向,⽽没有改变垂直ω(即沿超平⾯⽅向)的分量⽅向,因此导致x经过H 变换以后变为了关于ω的垂直超平⾯的镜⾯反射,实际上,以上证明的本质可以概括为H的以下两个性质,即:Hu=u,Hω=-ω。

(由于Householder变换的反射性,Householder变换⼜被称为初等反射矩阵或镜像变换)定理1:给定任何两个向量x和y(x,y∈R n且||x||2=||y||2),都可以找到⼀个Householder变换H,使得y=Hx。

MATLAB中关于矩阵初等变换实验报告

MATLAB中关于矩阵初等变换实验报告

实验一一、实验目的熟悉MATLAB中关于矩阵初等变换的方法及矩阵运算的各种命令二、实验内容1、启动与退出2、数、数组、矩阵的输入>> a=5a =5>> b=2-5ib =2.0000 - 5.0000i>> a=5,a =5>> b=[1,2,3,4]b =1 2 3 4>> c=1:2:11c =1 3 5 7 9 11>> d=linspace(1,11,6)d =1 3 5 7 9 11>> A=[2,3,5;1,3,5;6,9,4]A =2 3 51 3 56 9 43.矩阵大小和定位:>> A=[3,5,6;2,5,8;3,5,9;3,7,9]; >> d=numel(A)d =12>> [n,m]=size(A)n =4m =3>> [i,j]=find(A>3)i =12341234j =222233334.矩阵的块操作>> A(2,:);>> A([1,3],:);>> A(2:3,1:2)ans =2 53 5>> A=[3,5,6;2,5,8;3,5,9;3,7,9]; >> A([1,3],:)=A([3,1],:)A =3 5 92 5 83 5 63 7 9>> A(2,:)=4;>> A(find(A==3))=-3;>> A(2,:)=[]A =-3 5 6-3 5 9-3 7 9>> A=[3,5,6;2,5,8;3,5,9;3,7,9]A =3 5 62 5 83 5 93 7 9>> diag(A,1)ans =58>> tril(A,1)ans =3 5 02 5 83 5 93 7 9>> triu(A,1)ans =0 5 60 0 80 0 00 0 05.矩阵的翻转操作>> A=[3,5,6;2,5,8;3,5,9;3,7,9]; >> flipud(A)ans =3 7 93 5 92 5 83 5 6>> fliplr(A)ans =6 5 38 5 29 5 39 7 3>> rot90(A)ans =6 8 9 95 5 5 73 2 3 36.特殊矩阵的产生>> a=eye(3)a =1 0 00 1 00 0 1>> b=ones(2,3)b =1 1 11 1 1>> c=zeros(3,4)c =0 0 0 00 0 0 00 0 0 0>> d=rand(2,3)d =0.9501 0.6068 0.89130.2311 0.4860 0.7621 >> magic(4)ans =16 2 3 135 11 10 89 7 6 124 14 15 17.数的运算>> 4+2ans =6>> 4*2ans =8>> 4/2ans =2 >> 4\2ans =0.5000>> 4^3ans =64>> sqrt(9)ans =3>> exp(3)ans =20.0855>> log(4)ans =1.3863>> log2(4)ans =28.矩阵的运算>> a=[1,2,3;4,5,6;7,8,9]a =1 2 34 5 67 8 9>> a'ans =1 4 72 5 83 6 9>> det(a)ans =>> rank(a)ans =2>> inv(a)Warning: Matrix is close to singular or badly scaled.Results may be inaccurate. RCOND = 1.541976e-018. ans =1.0e+016 *-0.4504 0.9007 -0.45040.9007 -1.8014 0.9007-0.4504 0.9007 -0.4504 >> eig(a)ans =16.1168-1.1168-0.0000>> [X,D]=eig(a)X =-0.2320 -0.7858 0.4082-0.5253 -0.0868 -0.8165-0.8187 0.6123 0.4082D =16.1168 0 00 -1.1168 00 0 -0.0000 >> trace(a)ans =15>> 3*aans =3 6 912 15 1821 24 27>> b=[2 3 4;4 5 6;6 7 8]b =2 3 44 5 66 7 8>> a+bans =3 5 78 10 1213 15 17>> a-bans =-1 -1 -10 0 01 1 1>> a*bans =28 34 4064 79 94100 124 148>> a/bWarning: Matrix is singular to working precision.ans =NaN NaN NaNNaN NaN NaNNaN NaN NaN>> a\bWarning: Matrix is close to singular or badly scaled.Results may be inaccurate. RCOND = 1.541976e-018. ans =-0.6667 -5.6667 -6.66671.3333 10.3333 11.33330 -4.0000 -4.0000>> a^2ans =30 36 4266 81 96102 126 150>> a.*bans =2 6 1216 25 3642 56 729.变量的存储和调用>> a=2,b=3,c=5;a =2b =3>> save data a b c>> load data10.列出工作空间所有变量>> whosName Size Bytes Classa 1x1 8 double arrayb 1x1 8 double arrayc 1x1 8 double arrayGrand total is 3 elements using 24 bytes11.联机求助>> help sqrtSQRT Square root.SQRT(X) is the square root of the elements of X. Complexresults are produced if X is not positive.See also sqrtm, realsqrt, hypot.Overloaded functions or methods (ones with the same name in other directories) help sym/sqrt.mReference page in Help browserdoc sqrt12.多维数组建立>> a1=[1 2 3;4 5 6;7 8 9];a2=a1',a3=a1-a2a2 =1 4 72 5 83 6 9a3 =0 -2 -42 0 -24 2 0>> a4=cat(3,a1,a2,a3)a4(:,:,1) =1 2 34 5 67 8 9a4(:,:,2) =1 4 72 5 83 6 9a4(:,:,3) =0 -2 -42 0 -24 2 013.弥量积>> a=[2 3;4 6;7 9];b=[2 4;6 8]; >> c=kron(a,b)%ac =4 8 6 1212 16 18 248 16 12 2424 32 36 4814 28 18 3642 56 54 72 14.矩阵的范数>> a=[2 3;4 6;7 9];>> n=norm(a)n =13.9560>> n=norm(a,1)n =18>> n=norm(a,2)n =13.9560>> n=norm(a,inf)n =16>> n=norm(a,'fro')13.964215.LU分解>> a=[1 2 3;4 5 6;7 8 90;]a =1 2 34 5 67 8 90>> [L,U]=lu(a)L =0.1429 1.0000 00.5714 0.5000 1.00001.0000 0 0 U =7.0000 8.0000 90.00000 0.8571 -9.85710 0 -40.5000 >> [L,U,P]=lu(a)L =1.0000 0 00.1429 1.0000 00.5714 0.5000 1.0000 U =7.0000 8.0000 90.00000 0.8571 -9.85710 0 -40.5000P =0 0 11 0 00 1 016.QR分解>> a=[1 2 3;4 5 6;7 8 9;10 11 12];>> [Q,R]= QR(a)??? Undefined command/function 'QR'.>> [Q,R]=qr(a)Q =-0.0776 -0.8331 0.5405 -0.0885 -0.3105 -0.4512 -0.6547 0.5209 -0.5433 -0.0694 -0.3121 -0.7763-0.7762 0.3124 0.4263 0.3439 R =-12.8841 -14.5916 -16.29920 -1.0413 -2.08260 0 -0.00000 0 0。

计算方法上机实验报告-MATLAB

计算方法上机实验报告-MATLAB

《计算方法》实验报告指导教师:学院:班级:团队成员:一、题目例2.7应用Newton 迭代法求方程210x x --=在1x =附近的数值解k x ,并使其满足8110k k x x ---<原理:在方程()0f x =解的隔离区间[],a b 上选取合适的迭代初值0x ,过曲线()y f x =的点()()00x f x ,引切线()()()1000:'l y f x f x x x =+-其与x 轴相交于点:()()0100 'f x x x f x =-,进一步,过曲线()y f x =的点()()11x f x , 引切线()()()2111: 'l y f x f x x x =+-其与x 轴相交于点:()()1211 'f x x x f x =-如此循环往复,可得一列逼近方程()0f x =精确解*x 的点01k x x x ,,,,,其一般表达式为:()()111 'k k k k f x x x f x ---=-该公式所表述的求解方法称为Newton 迭代法或切线法。

程序:function y=f(x)%定义原函数y=x^3-x-1;endfunction y1=f1(x0)%求导函数在x0点的值syms x;t=diff(f(x),x);y1=subs(t,x,x0);endfunction newton_iteration(x0,tol)%输入初始迭代点x0及精度tol x1=x0-f(x0)/f1(x0);k=1;%调用f函数和f1函数while abs(x1-x0)>=tolx0=x1;x1=x0-f(x0)/f1(x0);k=k+1;endfprintf('满足精度要求的数值为x(%d)=%1.16g\n',k,x1);fprintf('迭代次数为k=%d\n',k);end结果:二、题目例3.7试利用Jacobi 迭代公式求解方程组1234451111101112115181111034x x x x ----⎛⎫⎛⎫⎛⎫ ⎪ ⎪ ⎪--- ⎪ ⎪ ⎪= ⎪ ⎪ ⎪--- ⎪ ⎪ ⎪---⎝⎭⎝⎭⎝⎭ 要求数值解()k X 满足()4210k --≤X X ,其中T (1,2,3,4)=X 为方程组的精确解。

8.3 Householder变换与矩阵的正交分解

8.3  Householder变换与矩阵的正交分解


k 2, 构造H 2
2 2
2 sign( x2 )( x x ) 5
U
( 2)
1 2 2 3
(0, 2 x2 , x3 ) (0, 2 5,1)
T
T
2 2 ( x2 2 ) 5 2 5 T T 于是 H 2 x ( x1 , 2 , 0) (2, 5, 0)
故取K 3 3 于是y 3e3 Ke3 (0, 0, 3, 0)T ,
U x y (2,0,5,1) , 3 ( 3 x3 ) 3(3 2) 15
T
11 0 1 1 T H I UU 15 10 2
8.3 Householder变换与矩阵的正交分解
一、初等反射阵(Householder变换阵)
定义 设非零向量W R n ,W ( w1 , w2 , 且满足条件 W 2 1, 形如
, wn )T ,
H I 2WW T 的n阶方阵称为初等反射阵, 或称为Householder 变换阵. 2 1 2w1 2w1 w2 2w1 wn 2 2w2 w1 1 2w2 2w2 wn H 2 1 2 wn 2wn w1 2wn w2
若 y , Hy H ( x kW ) x k ( I 2WW T )W x kW 2kWW W x kW y
T
W
y x kW
x

y x kW
H阵的作用:
定理 设两个不相等的n维向量x , y R n , x y , 但 x 2 y 2 , 则存在householder阵 UU T H I 2 2 U 2 使Hx y,其中U x y。 W x

householder变换矩阵例子

householder变换矩阵例子

householder变换矩阵例子Householder变换矩阵是一种用于线性代数和数值计算中的矩阵变换方法,它可以通过基本的矩阵运算实现向量的正交投影和反射。

在本文中,我们将列举10个Householder变换矩阵的例子,并解释它们的应用和性质。

1. Householder变换矩阵的定义Householder变换矩阵是一个n×n的实对称矩阵,它的主对角线上的元素都是1,其余元素均为0。

2. 二维空间中的Householder变换在二维空间中,Householder变换矩阵可以通过一个向量w来定义,其中w是一个单位向量。

对于任意一个向量x,它的Householder变换可以表示为Hx = x - 2ww^Tx。

3. Householder变换的几何意义Householder变换可以将一个向量x映射到它的镜像向量Hx,镜像向量位于向量w的反方向,并且与向量x关于向量w所在的超平面对称。

4. Householder QR分解Householder变换在QR分解中起着重要的作用。

通过一系列的Householder变换,可以将一个矩阵A转化为上三角矩阵R,并得到一个正交矩阵Q,即A = QR。

5. Householder变换的算法复杂度Householder变换的算法复杂度为O(n^3),其中n是矩阵的维数。

这使得Householder变换在大规模矩阵计算中具有较高的效率。

6. Householder变换的稳定性Householder变换是一种数值稳定的矩阵运算方法,它可以有效地避免误差的累积和扩散,从而提高计算的精度和稳定性。

7. Householder变换的应用Householder变换广泛应用于线性代数和数值计算中的各种算法,如线性方程组求解、特征值计算、奇异值分解等。

8. Householder变换与Givens旋转的关系Householder变换和Givens旋转都是常用的正交变换方法,它们在形式上有所不同,但在性质和应用上具有相似之处。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、给定向量x ≠0,计算初等反射阵H k 。

1.程序功能:给定向量x ≠0,计算初等反射阵H k 。

2.基本原理: 若()xx x R x ∈=,,, 的分量不全为零,则由12112212122()x (,,,)1()22n T T sign x e x x x x σσσρσσρ-⎧=⎪=+=+⎪⎪⎪==+⎨⎪⎪=-=-⎪⎪⎩u x u uu H I I uuu 确定的镜面反射阵H 使得y eHx =-=σ;当(1)k n ≤<时,由21/2k ()T 1()()()k 1()()()(())(0,,0,,,,)1()()=()2()nk i i kk nk k k n k T k k Tk k k kk k T k k sign x x x x x x σσρσσσρ=+-⎧=⎪⎪⎪=+∈⎨⎪==+⎪⎪=-⎩∑u R u u u H I u u 有T 121(,,,,,0,,0)n k k k x x x σ-=-∈H x R算法:(1)输入x ,若x 为零向量,则报错 (2)将x 规范化,{}x x x M ,,,m ax =如果M =0,则报错同时转出停机 否则n i M x x i i ,,2,1, =←(3)计算2x =σ,如果0<1x ,则σσ-= (4))(1x +=σσρ (5)计算1,(1)x σ==+u x u (6)1Tρ-=-H I uu (7)(M ,0,,0)σ=-y(8)按要求输出,结束3.变量说明:x -输入的n维向量;n -n维向量x的维数;M -M是向量x的无穷范数,即x中绝对值最大的一项的绝对值;p -Householder初等变换阵的系数ρ;u -Householder初等变换阵的向量Us -向量x的二范数;x -输入的n维向量;n -n维向量x的维数;p -Householder初等变换阵的系数ρ;u -Householder初等变换阵的向量Uk -数k,H*x=y,使得y的第k+1项到最后项全为零;4.程序代码:(1)function [p,u]=holder2(x)%HOLDER2 给定向量x≠0,计算Householder初等变换阵的p,u%程序功能:函数holder2给定向量x≠0,计算Householder初等变换阵的p,u;%输入:n维向量x;%输出:[p,u]。

p是Householder初等变换阵的系数ρ,% u是Householder初等变换阵的向量U。

n=length(x); % 得到n维向量x的维数;p=1;u=0; % 初始化p,u;M=max(abs(x)); % 得到向量x的无穷范数,即x中绝对值最大的一项的绝对值;if M==0 % 如果x=0,提示出错,程序终止;disp('Error: M=0');return;elsex=x/M; % 规范化end;s=norm(x); % 求x的二范数if x(1)<0 % 首项为负,s值要变号s=-s;endu=x; % 除首项外,其余各项x,u相同u(1)=s+x(1); % 计算u的首项p=s*u(1); % 计算pif n==1 u=0; end % 若x是1×1维向量,则u=0(2)function H=holderk(x,k)%HOLDERK 给定向量x≠0,数k,计算初等反射阵Hk,使HkX=Y,其中Y的第k+1项到最后项全为零;%程序功能:函数holderk给定向量x≠0,数k,计算初等反射阵Hk,使HkX=Y,%程序功能:函数holder2给定向量x≠0,计算Householder初等变换阵的p,u;%输入:n维向量x,数k;%输出:H。

H是Householder初等变换阵,H*x=y,使得y的第k+1项到最后项全为零;%引用函数:holder2;n=length(x); % 得到n维向量x的维数;if k>n %如果k值溢出,报错;disp('Error: k>n');endH=eye(n); % 初始化H,并使H(1:k,1:k)=I;[p,u]=holder2(x(k:n)); % 得到计算Householde初等变换阵的系数ρ、向量U;H(k:n,k:n)=eye(n-k+1)-p\u*u'; % 计算H(k:n,k:n)=I-p\u*u';5.使用示例:情形1:X为零向量>> x=[0,0,0,0]';>> H=holderk(x,1)Error: M=0H =1 0 0 00 1 0 00 0 1 00 0 0 1情形2:K值溢出:>> x=[1,2,3,4]';>> H=holderk(x,5)Error: k>n情形3:K值为1:>> x=[2,3,4,5]';>> H=holderk(x,1)H =检验:>> det(H)>> H*xans =情形4:(1)K值为3:>> x=[4,3,2,1]';>> H=holderk(x,3)H =0 0 0 0 0 0 0 00 0检验:>> det(H)ans =-1>> H*xans =(2)K值为2:>> x=[4,3,2,1]';>> H=holderk(x,2)0 0 0 0 0 0>> det(H)ans =>> H*xans =二、设A 为n 阶矩阵,编写用Householder 变换法对矩阵A 作正交分解的程序。

1.程序功能:给定n 阶矩阵A ,通过本程序用Householder 变换法对矩阵A 作正交分解,得出A =QR 2.基本原理:任一实列满秩的m ×n 矩阵A ,可以分解成两个矩阵的乘积,即A =QR ,其中Q 是具有法正交列向量的m ×n 矩阵,R 是非奇异的n 阶上三角阵。

算法:(1)输入n 阶矩阵A(2)对():,A k n k ,求Househoulder 初等反射阵的)(,k k u ρ。

1,,2,1-=n k(3)计算上三角阵R ,仍然存储在A)1()(+→k k k A A Hn k k j ,,1, +=()()k i j k ij k ij n k i k ij k i k j u t a a a u t -=⎪⎭⎫ ⎝⎛=+=∑)()1()(1ρ (4)计算正交阵Q)1()()1(+→=k k k QH Q I Qn i ,,2,1 =()()k j i k ij k ij nkj k j k ijki u t q q nk k j u qt -=+==+=∑)()1()(,,1,1ρ(5)按要求输出,结束3.变量说明:A - 输入的n 阶矩阵,同时用于存储上三角阵R ; n - 矩(方)阵A 的阶数;Q - Q 是具有法正交列向量的n 阶矩阵; p,u - 向量A (k:n,k ),对应初等反射阵的ρ,u k ,jj ,ii - 循环变量;t1 - 计算上三角阵R 的系数tj ; t2 - 计算正交矩阵Q 的系数ti ; 4.程序代码:function [Q,A]=qrhh(A)%QRHH 用Householder 变换法对n 阶矩阵A 作正交分解A=QR ;%程序功能:函数qrhh 用Householder 变换法对矩阵A 作正交分解A=QR ; %输入:n 阶矩阵A ;%输出:[Q,A]。

Q 是具有法正交列向量的n 阶矩阵,% A (即R )是非奇异的n 阶上三角阵,仍用输入的矩阵A 存储。

%引用函数:% holder2;示例 [p,u]=holder2(x); [n,n]=size(A); %求矩(方)阵A 的阶数; Q=eye(n); %构造正交矩阵Q(1)=I ; for k=1:n-1[p,u]=holder2(A(k:n,k)); %向量A (k:n,k ),对应初等反射阵的ρ,ufor jj=k:n %计算上三角阵R (仍存贮于A ) t1=dot(u,A(k:n,jj))/p; %利用向量内积求和 A(k:n,jj)=A(k:n,jj)-t1*u; endfor ii=1:n %计算正交矩阵Qt2=dot(u,Q(ii,k:n))/p; %利用向量内积求和 Q(ii,k:n)=Q(ii,k:n)-t2*u'; end end5.使用示例: (1)A 为3阶矩阵:>> A=[1 2 3; 2 3 0; 3 4 5]A =1 2 32 3 03 4 5>> [q,r]=qrhh(A)q =r =检验:>> q*rans =(2)A为4阶矩阵:>> A=[1 2 3 4; 2 3 0 1; 3 4 5 6;1 6 8 0]A =1 2 3 42 3 0 13 4 5 61 6 8 0>> [q,r]=qrhh(A)q =r =0 00 0 检验: >> q*rans =数值求解正方形域上的Poisson 方程边值问题2222(,),0,1(0,)(1,)(,0)(,1)1u u f x y xy x y x y u y u y u x u x ⎧⎛⎫∂∂-+==<<⎪ ⎪∂∂⎨⎝⎭⎪====⎩用MATLAB 语言编写求解此辺值问题的算法程序,采用下列三种方法,并比较三种方法的计算速度。

1、用SOR 迭代法求解线性方程组Au=f,用试算法确定最佳松弛因子;2、用块 Gauss-Sediel 迭代法求解线性方程组Au=f ;3、(预条件)共轭斜量法。

用差分代替微分,对Poisson 方程进行离散化,得到五点格式的线性方程组2,1,1,,1,11,1,,1,142,11,1i j i j i j i j i j ij j N ji i N u u u u u h f i j N u u u u i j N -+-+++----=≤≤====≤≤+,写成矩阵形式Au=f 。

其中一 用SOR 迭代法求解线性方程组Au=f,用试算法确定最佳松弛因子。

1. 基本原理:Gauss-Seidel 迭代法计算简单,但是在实际计算中,其迭代矩阵的谱半径常接近1,因此收敛很慢。

为了克服这个缺点,引进一个加速因子(又称松弛因子)对Gauss-Seidel2233N N v b v b u f v b ⎛⎫⎛⎫⎪ ⎪ ⎪⎪== ⎪ ⎪ ⎪ ⎪⎝⎭⎝⎭4114114ii A -⎛⎫ ⎪- ⎪= ⎪- ⎪-⎝⎭22,23,2,232,33,3,32,3,,222,23,2,22,11,23,1,11,2232,33,3,31,31,3(,,...,),(,,...,),......,(,,...,)(,,...,)(,,...,),(,,...,)(,0,...,),......,T T N N TN N N N N T T N N N T T N N N v u u u v u u u v u u u b h f f f u u u u u b h f f f u f b ++====+++=+=22,3,,2,11,3,1,11,,(,,...,)(,,...,)1,10,0.1,,2,3,...,T TN N N N N N N N N N N i j i j h f f f u u u u u h N h N f x y i j N+++++++=====取则212331,1N N A I I A A I IA ---⎛⎫ ⎪-⎪= ⎪- ⎪⎪-⎝⎭方法进行修正加速。

相关文档
最新文档