【求助】用matlab进行麦夸特算法的运算代码解释,图中红色部分求Jacobi矩阵运算法则的地方不理解

计算方法上上机实习报告_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
计算方法上上机实习报告
上传于||暂无简介
阅读已结束,如果下载本文需要使用2下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩17页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢查看: 2034|回复: 6|关注: 0
matlab简单的迭代法程序运行时显示错误,矩阵维度必须一致
<h1 style="color:# 麦片财富积分
新手, 积分 5, 距离下一级还需 45 积分
本帖最后由 lilythepooh 于
16:08 编辑
如下。。。只是个Jacobi迭代,其它迭代也是一样的死法。。。新人求指教,谢谢!
function[y,res,istep,A,g]=Jacobi(m,n,eps)
eps=input('eps='); %eps的值留给输入,以便按题目要求改变eps值。
g=zeros(1,99); %利用零向量先定义g的长度
for i=1:99
& & g(i)=1/(2*99*99); %再对g的每一位进行赋值
end %定义g
n=length(g);
A=zeros(n); %利用零矩阵确定A的阶数
A(i,i)=-(2*eps+1/n);
for i=1:n-1
A(i,i+1)=eps+1/n;
end %再对A中的非零项进行赋值
for istep=1:1000
& & yold=y;
& & for i=1:n
& && &&&y(i)=yold(i)+(g(i)-A(i,:)*yold)/A(i,i);
& & res=A*y-g;
& & if(norm(res)&m)
& && &&&y=y;
& && &&&return
运行后会有
在赋值 A(I)=B 中,B 和 I 中的元素数目必须相同。
出错 Jacobi (line 23)
& && &&&y(i)=yold(i)+(g(i)-A(i,:)*yold)/A(i,i);
错误使用&&*
内部矩阵维度必须一致。
Matlab菜鸟新人反复检查实在不知道 问题出在哪。。。求教!
(另外就是想试试这样写迭代法所以没有写常规的那种:)
<h1 style="color:#84 麦片财富积分
关注者: 209
y(i)=yold(i)+(g(i)-A(i,:).*yold)/A(i,i);
你右侧是一个向量吧,左边却是一个数占得位置,所以会出错
还有就是矩阵除法./ 乘法要保证两个矩阵大小符合矩阵乘法的规律
<h1 style="color:# 麦片财富积分
y(i)=yold(i)+(g(i)-A(i,.*yold)/A(i,i);
你右侧是一个向量吧,左边却是一个数占得位置,所以会出错
右侧也是数啊。。。yold(i)、g(i)、A(i,:)*yold、A(i,i)不都是数吗。。。一个行向量乘一个列向量不是得到数吗。。。
<h1 style="color:#84 麦片财富积分
关注者: 209
A(i,:).*yold如果你用.*结果还是一个向量,而不是一个数值
<h1 style="color:# 麦片财富积分
A(i,.*yold如果你用.*结果还是一个向量,而不是一个数值
谢谢!我刚刚也发现了,但是把.*改成*结果依然是这样。。。其实我刚开始是写的*因为运行错误又改成了.*& &&&
请问是否还有其他问题呢?
错误使用&&*
内部矩阵维度必须一致。
出错 Jacobi (line 23)
& && &&&y(i)=yold(i)+(g(i)-A(i,:)*yold)/A(i,i);
<h1 style="color:#84 麦片财富积分
关注者: 209
我只能建议你y(i)=yold(i)+(g(i)-A(i,:)*yold)/A(i,i);
这一句之前分别输出
A(i,:)& &yold
A(i,:)*yold
这三个部分,看看都是多大的数组或矩阵。
<h1 style="color:# 麦片财富积分
我只能建议你y(i)=yold(i)+(g(i)-A(i,*yold)/A(i,i);
这一句之前分别输出
A(i,& &yold
是g的定义错了。。。 定义成了行向量,还是谢谢您了:)
站长推荐 /2
Powered bymatlab中的矩阵的基本运算命令
矩阵的表示
1.矩阵对角线元素的抽取
X = diag(v,k)
%以向量v的元素作为矩阵X的第k条对角线元素,当k=0时,v为X的主对角线;当k&0时,v为上方第k条对角线;当k&0时,v为下方第k条对角线。
X = diag(v)
%以v为主对角线元素,其余元素为0构成X。
v = diag(X,k)
%抽取X的第k条对角线元素构成向量v。k=0:抽取主对角线元素;k&0:抽取上方第k条对角线元素;k&0抽取下方第k条对角线元素。
v = diag(X)
%抽取主对角线元素构成向量v。
2.上三角阵和下三角阵的抽取
%取下三角部分
L = tril(X)
%抽取X的主对角线的下三角部分构成矩阵L
L = tril(X,k)
%抽取X的第k条对角线的下三角部分;k=0为主对角线;k&0为主对角线以上;k&0为主对角线以下。
%取上三角部分
U = triu(X)
%抽取X的主对角线的上三角部分构成矩阵U
U = triu(X,k)
%抽取X的第k条对角线的上三角部分;k=0为主对角线;k&0为主对角线以上;k&0为主对角线以下。
3.矩阵的变维
矩阵的变维有两种方法,即用“:”和函数“reshape”,前者主要针对2个已知维数矩阵之间的变维操作;而后者是对于一个矩阵的操作。
(1)“:”变维
(2)Reshape函数变维
B = reshape(A,m,n)
%返回以矩阵A的元素构成的m&n矩阵B
B = reshape(A,m,n,p,…)
%将矩阵A变维为m&n&p&…
B = reshape(A,[m n p…])
B = reshape(A,siz)
%由siz决定变维的大小,元素个数与A中元素个数
(5)复制和平铺矩阵
B = repmat(A,m,n)
%将矩阵A复制m&n块,即B由m&n块A平铺而成。
B = repmat(A,[m n])
%与上面一致
B = repmat(A,[m n p…])
%B由m&n&p&…个A块平铺而成
repmat(A,m,n)
%当A是一个数a时,该命令产生一个全由a组成的m&n矩阵。
Cholesky分解
R = chol(X)
%如果X为n阶对称正定矩阵,则存在一个实的非奇异上三角阵R,满足R'*R = X;若X非正定,则产生错误信息。
[R,p] = chol(X)
%不产生任何错误信息,若X为正定阵,则p=0,R与上相同;若X非正定,则p为正整数,R是有序的上三角阵。
矩阵的三角分解又称LU分解,它的目的是将一个矩阵分解成一个下三角矩阵L和一个上三角矩阵U的乘积,即A=LU。
[L,U] = lu(X)
%U为上三角阵,L为下三角阵或其变换形式,满足LU=X。
[L,U,P] = lu(X)
%U为上三角阵,L为下三角阵,P为单位矩阵的行变换矩阵,满足LU=PX。
将矩阵A分解成一个正交矩阵与一个上三角矩阵的乘积。
[Q,R] = qr(A)
%求得正交矩阵Q和上三角阵R,Q和R满足A=QR。
[Q,R,E] = qr(A)
%求得正交矩阵Q和上三角阵R,E为单位矩阵的变换形式,R的对角线元素按大小降序排列,满足AE=QR。
[Q,R] = qr(A,0)
%产生矩阵A的“经济大小”分解
[Q,R,E] = qr(A,0)
%E的作用是使得R的对角线元素降序,且Q*R=A(:, E)。
%稀疏矩阵A的分解,只产生一个上三角阵R,满足R'*R = A'*A,这种方法计算A'*A时减少了内在数字信息的损耗。
[C,R] = qr(A,b)
%用于稀疏最小二乘问题:minimize||Ax-b||的两步解:[C,R] = qr(A,b),x = R\c。
R = qr(A,0)
%针对稀疏矩阵A的经济型分解
[C,R] = qr(A,b,0)
%针对稀疏最小二乘问题的经济型分解
[Q,R] = qrdelete(Q,R,j)
%返回将矩阵A的第j列移去后的新矩阵的qr分解
[Q,R] = qrinsert(Q,R,j,x)
%在矩阵A中第j列插入向量x后的新矩阵进行qr分解。若j大于A的列数,表示在A的最后插入列x。
特征值分解
d = eig(A)
%求矩阵A的特征值d,以向量形式存放d。
d = eig(A,B)
%A、B为方阵,求广义特征值d,以向量形式存放d。
[V,D] = eig(A)
%计算A的特征值对角阵D和特征向量V,使AV=VD成立。
[V,D] = eig(A,'nobalance')
%当矩阵A中有与截断误差数量级相差不远的值时,该指令可能更精确。'nobalance'起误差调节作用。
[V,D] = eig(A,B)
%计算广义特征值向量阵V和广义特征值阵D,满足AV=BVD。
[V,D] = eig(A,B,flag)
% 由flag指定算法计算特征值D和特征向量V,flag的可能值为:'chol' 表示对B使用Cholesky分解算法,这里A为对称Hermitian矩阵,B为正定阵。'qz' 表示使用QZ算法,这里A、B为非对称或非Hermitian矩阵。
一般特征值问题是求解方程: 解的问题。广义特征值问题是求方程: 解的问题。
奇异值分解
s = svd (X)
%返回矩阵X的奇异值向量
[U,S,V] = svd (X)
%返回一个与X同大小的对角矩阵S,两个酉矩阵U和V,且满足= U*S*V'。若A为m&n阵,则U为m&m阵,V为n&n阵。奇异值在S的对角线上,非负且按降序排列。
[U,S,V] = svd (X,0)
%得到一个“有效大小”的分解,只计算出矩阵U的前n列,矩阵S的大小为n&n。
线性方程的组的求解
我们将线性方程的求解分为两类:一类是方程组求唯一解或求特解,另一类是方程组求无穷解即通解。可以通过系数矩阵的秩来判断:
若系数矩阵的秩r=n(n为方程组中未知变量的个数),则有唯一解;
若系数矩阵的秩r
线性方程组的无穷解 = 对应齐次方程组的通解+非齐次方程组的一个特解;其特解的求法属于解的第一类问题,通解部分属第二类问题。
求线性方程组的唯一解或特解(第一类问题)
这类问题的求法分为两类:一类主要用于解低阶稠密矩阵 —— 直接法;另一类是解大型稀疏矩阵 —— 迭代法。
1.利用矩阵除法求线性方程组的特解(或一个解)
方程:AX=b
解法:X=A\b
2.利用矩阵的LU、QR和cholesky分解求方程组的解
(1)LU分解:
LU分解又称Gauss消去分解,可把任意方阵分解为下三角矩阵的基本变换形式(行交换)和上三角矩阵的乘积。即A=LU,L为下三角阵,U为上三角阵。
变成L*U*X=b
所以X=U\(L\b)
这样可以大大提高运算速度。
[L,U]=lu (A)
(2)Cholesky分解
若A为对称正定矩阵,则Cholesky分解可将矩阵A分解成上三角矩阵和其转置的乘积,即:
其中R为上三角阵。
(3)QR分解
对于任何长方矩阵A,都可以进行QR分解,其中Q为正交矩阵,R为上三角矩阵的初等变换形式,即:A=QR
求线性齐次方程组的通解
在Matlab中,函数null用来求解零空间,即满足A&X=0的解空间,实际上是求出解空间的一组基(基础解系)。
% z的列向量为方程组的正交规范基,满足 。
% z的列向量是方程AX=0的有理基
求非齐次线性方程组的通解
非齐次线性方程组需要先判断方程组是否有解,若有解,再去求通解。
因此,步骤为:
第一步:判断AX=b是否有解,若有解则进行第二步
第二步:求AX=b的一个特解
第三步:求AX=0的通解
第四步:AX=b的通解= AX=0的通解+AX=b的一个特解。
秩与线性相关性
矩阵和向量组的秩以及向量组的线性相关性
矩阵A的秩是矩阵A中最高阶非零子式的阶数;向量组的秩通常由该向量组构成的矩阵来计算。
k = rank(A)
%返回矩阵A的行(或列)向量中线性无关个数
k = rank(A,tol)
%tol为给定误差
求行阶梯矩阵及向量组的基
行阶梯使用初等行变换,矩阵的初等行变换有三条:
1.交换两行
(第i、第j两行交换)
2.第i行的K倍
3.第i行的K倍加到第j行上去
通过这三条变换可以将矩阵化成行最简形,从而找出列向量组的一个最大无关组,Matlab将矩阵化成行最简形的命令是rref或rrefmovie。
rref或rrefmovie
R = rref(A)
%用高斯—约当消元法和行主元法求A的行最简行矩阵R
[R,jb] = rref(A)
%jb是一个向量,其含义为:r = length(jb)为A的秩;A(:, jb)为A的列向量基;jb中元素表示基向量所在的列。
[R,jb] = rref(A,tol)
%tol为指定的精度
rrefmovie(A)
%给出每一步化简的过程
稀疏矩阵技术
稀疏矩阵的创建
S = sparse(A)
%将矩阵A转化为稀疏矩阵形式,即由A的非零元素和下标构成稀疏矩阵S。若A本身为稀疏矩阵,则返回A本身。
S = sparse(m,n)
%生成一个m&n的所有元素都是0的稀疏矩阵
S = sparse(i,j,s)
%生成一个由长度相同的向量i,j和s定义的稀疏矩阵S,其中i,j是整数向量,定义稀疏矩阵的元素位置(i,j),s是一个标量或与i,j长度相同的向量,表示在(i,j)位置上的元素。
S = sparse(i,j,s,m,n)
%生成一个m&n的稀疏矩阵,(i,j)对应位置元素为si,m = max(i)且n =max(j)。
S = sparse(i,j,s,m,n,nzmax)
%生成一个m&n的含有nzmax个非零元素的稀疏矩阵S,nzmax的值必须大于或者等于向量i和j的长度。
将稀疏矩阵转化为满矩阵
%S为稀疏矩阵,A为满矩阵。
稀疏矩阵非零元素的索引
k = find(x)
%按行检索X中非零元素的点,若没有非零元素,将返回空矩阵。
[i,j] = find(X)
%检索X中非零元素的行标i和列标j
[i,j,v] = find(X)
%检索X中非零元素的行标i和列标j以及对应的元素值v
外部数据转化为稀疏矩阵
S=spconvert(D)
%D是只有3列或4列的矩阵
说明:先运用load函数把外部数据(.mat文件或.dat文件)装载于MATLAB内存空间中的变量T;T数组的行维为nnz或nnz+1,列维为3(对实数而言)或列维为4(对复数而言);T数组的每一行(以[i,j,Sre,Sim]形式)指定一个稀疏矩阵元素。
基本稀疏矩阵
1.带状(对角)稀疏矩阵
[B,d] = spdiags(A)
%从矩阵A中提取所有非零对角元素,这些元素保存在矩阵B中,向量d表示非零元素的对角线位置。
B = spdiags(A,d)
%从A中提取由d指定的对角线元素,并存放在B中。
A = spdiags(B,d,A)
%用B中的列替换A中由d指定的对角线元素,输出稀疏矩阵。
A = spdiags(B,d,m,n)
%产生一个m&n稀疏矩阵A,其元素是B中的列元素放
在由d指定的对角线位置上。
2.单位稀疏矩阵
S = speye(m,n)
%生成m&n的单位稀疏矩阵
S = speye(n)
%生成n&n的单位稀疏矩阵
3.稀疏均匀分布随机矩阵
R = sprand(S)
%生成与S具有相同稀疏结构的均匀分布随机矩阵
R = sprand(m,n,density)
%生成一个m&n的服从均匀分布的随机稀疏矩阵,非零元素的分布密度是density。
R = sprand(m,n,density,rc)
%生成一个近似的条件数为1/rc、大小为m&n的均匀分布的随机稀疏矩阵。
4.稀疏正态分布随机矩阵
R = sprandn(S)
%生成与S具有相同稀疏结构的正态分布随机矩阵。
R = sprandn(m,n,density)
%生成一个m&n的服从正态分布的随机稀疏矩阵,非零元素的分布密度是density。
R = sprandn(m,n,density,rc)
%生成一个近似的条件数为1/rc、大小为m&n的均匀分布的随机稀疏矩阵。
5.稀疏对称随机矩阵
R = sprandsym(S)
%生成稀疏对称随机矩阵,其下三角和对角线与S具有相同的结构,其元素服从均值为0、方差为1的标准正态分布。
R = sprandsym(n,density)
%生成n&n的稀疏对称随机矩阵,矩阵元素服从正态分布,分布密度为density。
R = sprandsym(n,density,rc)
%生成近似条件数为1/rc的稀疏对称随机矩阵
R = sprandsym(n,density,rc,kind)
%生成一个正定矩阵,参数kind取值为kind=1表示矩阵由一正定对角矩阵经随机Jacobi旋转得到,其条件数正好为1/rc;kind=2表示矩阵为外积的换位和,其条件数近似等于1/rc;kind=3表示生成一个与矩阵S结构相同的稀疏随机矩阵,条件数近似为1/rc ,density被忽略。
稀疏矩阵的运算
1.稀疏矩阵非零元素的个数
n = nnz(X)
%返回矩阵X中非零元素的个数
2.稀疏矩阵的非零元素
s = nonzeros(A)
%返回矩阵A中非零元素按列顺序构成的列向量
3.稀疏矩阵非零元素的内存分配
n = nzmax(S)
%返回非零元素分配的内存总数n
4.稀疏矩阵的存贮空间
S = spalloc(m,n,nzmax)
%产生一个m&n阶只有nzmax个非零元素的稀疏矩阵,这样可以有效减少存贮空间和提高运算速度。
5.稀疏矩阵的非零元素应用
f = spfun('function',S)
%用S中非零元素对函数'function'求值,如果'function'不是对稀疏矩阵定义的,同样可以求值。
6.把稀疏矩阵的非零元素全换为1
R = spones(S)
%将稀疏矩阵S中的非零元素全换为1
画稀疏矩阵非零元素的分布图形
%画出稀疏矩阵S中非零元素的分布图形。S也可以是满矩阵。
spy(S,markersize)
% markersize为整数,指定点阵大小。
spy(S,'LineSpec')
%'LineSpec'指定绘图标记和颜色
spy(S,'LineSpec',markersize)
%参数与上面相同
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。2014数值分析MATLAB上机实验_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
2014数值分析MATLAB上机实验
上传于||文档简介
&&拉&#8203;格&#8203;朗&#8203;日&#8203;插&#8203;值&#8203;、&#8203;牛&#8203;顿&#8203;插&#8203;值&#8203;、&#8203;三&#8203;次&#8203;样&#8203;条&#8203;插&#8203;值&#8203;、&#8203;最&#8203;佳&#8203;平&#8203;方&#8203;逼&#8203;近&#8203;、&#8203;雅&#8203;格&#8203;比&#8203;迭&#8203;代&#8203;、&#8203;高&#8203;斯&#8203;-&#8203;赛&#8203;德&#8203;尔&#8203;迭&#8203;代
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩17页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢

我要回帖

更多关于 jacobi迭代矩阵 的文章

 

随机推荐