精华内容
下载资源
问答
  • Matlab实现乘幂法
    2021-05-30 08:20:51
    function [u,r,res]=myPM(A,u)
    res=1;
    while (res>1e-6)
        y=A*u;  
        [a,b]=max(abs(y));
        r=y(b,1);
        u=y/a;
        res=norm(A*u-r*u);
    end
    
    更多相关内容
  • Matlab实现 乘幂法&&反幂法

    千次阅读 2019-09-03 23:16:51
    乘幂法 function [a,k,er]=Power(A) %定义乘幂法函数文件 %a:表示该方法下矩阵A的最大特征值 %k:表示停机时实际的迭代次数 %er:表示停机时实际的绝对误差 tol=1e-6;%绝对误差限 [n,m]=size(A); if n~=m %...

    以下伪码来自某《数值线性代数》教科书,非原创在这里插入图片描述

    乘幂法

    function [a,k,er]=Power(A)
    %定义乘幂法函数文件
    %a:表示该方法下矩阵A的最大特征值
    %k:表示停机时实际的迭代次数
    %er:表示停机时实际的绝对误差
    tol=1e-6;%绝对误差限
    [n,m]=size(A);
    if n~=m %判断输入的合法性
        error('Wrong  Input');
    end
    u=ones(n,1);q=max(abs(u));
    k=0;
    while true
        y=A*u;
        q0=q;
        q=max(abs(y));
        if abs(q-q0)<tol|k>1e4 %设置停机条件
            break;
        end
        u=y/q;
        k=k+1;
    end
    er=abs(q0-q);
    a=q;
    
    

    反幂法

    function [a,k,er]=InversePower(A)
    %定义反幂法函数文件
    %a:表示该方法下矩阵A的最小特征值
    %k:表示停机时实际的迭代次数
    %er:表示停机时实际的绝对误差
    tol=1e-6;%绝对误差限
    [n,m]=size(A);
    if n~=m %判断输入的合法性
        error('Wrong  Input');
    end
    u=ones(n,1);q=max(abs(u));
    k=0;
    while true
        y=A\u;%解出y
        q0=q;
        q=max(abs(y));
        if abs(q-q0)<tol|k>1e4 %设置停机条件
            break;
        end
        u=y/q;
        k=k+1;
    end
    er=abs(q0-q);
    a=1/q;
    
    

    注:反幂法在计算量较大的情况下,貌似计算不出结果,考考你,找出问题,请留言。个人猜测:y=A\u处会出问题,考虑到矩阵A的奇异情况。

    展开全文
  • 摘 要根据现代控制理论课程的特点, 提出并利用MATLAB 设计了现代控制理论课程的实验, 给出了设计的每个实验的主要内容及使用到的MATLAB 函数, 并对其中的一个实验作了详细说明。通过这些实验, 将有助于学生理解理论...

    摘 要

    根据现代控制理论课程的特点, 提出并利用MATLAB 设计了现代控制理论课程的实验, 给出了设计的每个实验的主要内容及使用到的MATLAB 函数, 并对其中的一个实验作了详细说明。通过这些实验, 将有助于学生理解理论知识, 学习利用MATLAB 解决现代控制理论问题。 关键词:现代控制理论、MATLAB 、仿真。

    1设计目的、内容及要求

    1.1设计目的

    本课程设计以自动控制理论、现代控制理论、MATLAB 及应用等知识为基础,求连续系统对应的离散化的系统,并用计算系数阵按模最大的特征根法判别离散系统的稳定性,目的是使学生在现有的控制理论的基础上,学会用MATLAB 语言编写控制系统设计与分析的程序,通过上机实习加深对课堂所学知识的理解,掌握一种能方便地对系统进行离散化的实现和分析系统的稳定性的设计的工具。

    1.2设计内容及要求

    1 在理论上对连续系统离散化推导出算法和计算公式

    2 画出计算机实现算法的框图

    3 编写程序并调试和运行

    4 以下面的系统为例,进行计算

    ??????????----=041020122A ,??

    ??

    ?

    ?????=100B ,[]111-=c 5 分析运算结果

    展开全文
  • 本文通过Matlab解决实际例子来验证乘幂法的正确性. 2.方法介绍 设实矩阵A的特征值为 λ1,λ2,......,λn\lambda_1,\lambda_2,......,\lambda_nλ1​,λ2​,......,λn​,相应特征向量 x1,x2,......,xnx_1,x_2,........

    1.前言

    乘幂法主要用于求实矩阵按模最大的特征值(主特征值)和相应特征向量.本文通过Matlab解决实际例子来验证乘幂法的正确性.

    2.方法介绍

    设实矩阵A的特征值为 λ 1 , λ 2 , . . . . . . , λ n \lambda_1,\lambda_2,......,\lambda_n λ1,λ2,......,λn,相应特征向量 x 1 , x 2 , . . . . . . , x n x_1,x_2,......,x_n x1,x2,......,xn线性无关.假设矩阵 A A A的特征值按模排序为 ∣ λ 1 ∣ ≥ ∣ λ 2 ∣ ≥ . . . ≥ ∣ λ n ∣ |\lambda_1|≥|\lambda_2|≥...≥|\lambda_n| λ1λ2...λn,于是对任一非零向量 V ( 0 ) ∈ R n V^{(0)}∈R^n V(0)Rn可得到
    在这里插入图片描述(1)

    在这里插入图片描述(2)
    可得向量序列:

    在这里插入图片描述 (3)
    下面仅讨论 ∣ λ 1 ∣ > ∣ λ j ∣ , j = 2 , 3 , . . . , n . |\lambda_1|>|\lambda_j|,j=2,3,...,n. λ1>λj,j=2,3,...,n.的情况:
    由式(2)(3)知
    在这里插入图片描述(4)
    a ≠ 0 , a≠0, a=0则当 k k k充分大时有
    在这里插入图片描述(5)
    显然当 k k k充分大时,由 ∣ λ j λ 1 ∣ k → 0 |\frac{\lambda_j}{\lambda_1}|^k→0 λ1λjk0 ϵ k → 0 \epsilon_k→0 ϵk0.由于特征向量可以相差一个倍数,故式(5)表明 V ( k ) V^{(k)} V(k)就是相应于 λ 1 \lambda_1 λ1的近似特征向量.而对 λ 1 \lambda_1 λ1,由(5)可看出,若 V 1 ( k ) V_1^{(k)} V1(k)用表示的第1个分量,则
    在这里插入图片描述(6)
    具体计算时 V ( 0 ) V^{(0)} V(0)的选取很难保证一定有 a 1 ≠ 0 a_1≠0 a1=0.但由于舍入误差的影响,只要迭代次数足够多就会有 a 1 ′ ≠ 0 a_1'≠0 a1=0,因而最后的结论成立.
    以上讨论说明了乘幂法的基本原理.当 λ 1 \lambda_1 λ1过大或过小时都会导致 ∣ ∣ V ( k ) ∣ ∣ ||V^{(k)}|| V(k)过大或过小,以致运算无法继续.因此实际计算时需作规范化运算:
    任取 V ( 0 ) ∈ R n , V ( 0 ) ≠ 0 V^{(0)}∈R^n,V^{(0)}≠0 V(0)Rn,V(0)=0,令 U ( 0 ) = V ( 0 ) U^{(0)}=V^{(0)} U(0)=V(0),按下列公式反复计算:
    在这里插入图片描述(7)
    这里 m a x ( V ) max(V) maxV表示向量 V V V的按模最大的分量对于规范化乘幂法,有如下收敛性定理.
    定理:设 A A A n × n n×n n×n实矩阵,其特征值满足 ∣ λ 1 ∣ ≥ ∣ λ 2 ∣ ≥ . . . ≥ ∣ λ n ∣ |\lambda_1|≥|\lambda_2|≥...≥|\lambda_n| λ1λ2...λn,向量序列 ( U ( k ) , V ( k ) ) ({U^{(k)},V^{(k)}}) (U(k),V(k))由式(7)确定,则 m a x ( V ( k ) ) → λ 1 , U ( k ) → x 1 / m a x ( x 1 ) ( k → ∞ ) max(V^{(k)})→\lambda_1,U^{(k)}→x_1/max(x_1) (k→∞) max(V(k))λ1,U(k)x1/max(x1)(k).
    定理证明从略.

    3.算法步骤

    先判断矩阵主特征值是否可用乘幂法计算,判断思路见代码注释.
    给定误差限 ϵ \epsilon ϵ和最大迭代次数 m m m,任取 V ( 0 ) ∈ R n , V ( 0 ) ≠ 0 V^{(0)}∈R^n,V^{(0)}≠0 V(0)Rn,V(0)=0,令 U ( 0 ) = V ( 0 ) U^{(0)}=V^{(0)} U(0)=V(0),按下列公式反复计算:
    在这里插入图片描述(8)
    这里 m a x ( V ) max(V) maxV表示向量 V V V的按模最大的分量对于规范化乘幂法. 最终有在这里插入图片描述
    当达到 ∣ m a x ( V ( k + 1 ) ) − m a x ( V ( k ) ) ∣ |max(V^{(k+1)})-max(V^{(k)})| max(V(k+1))max(V(k)) k = m k=m k=m时停止迭代, m a x ( V ( k ) ) max(V^{(k)}) max(V(k))即为主特征值 λ 1 \lambda_1 λ1的近似值, ( U ( k ) ) T (U^{(k)})^T (U(k))T即为对应的特征向量.

    注意:取V的按模最大分量而非最大分量,否则运算结果出错.

    4.数值实验

    下面通过一道例题验证上述求解矩阵特征值问题方法的正确性和可行性.

    例:求矩阵
    在这里插入图片描述
    的特征值和特征向量,并对照标准答案.
    标准答案: A A A的特征值 λ 1 , λ 2 , λ 3 \lambda_1,\lambda_2,\lambda_3 λ1,λ2,λ3分别为 -13.220179976292638 ,1.391318328272217 ,7.828861648020419,对应的特征向量 x 1 , x 2 , x 3 x_1,x_2,x_3 x1,x2,x3分别为在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    解:乘幂法求主特征值和特征向量.
    V ( 0 ) = U ( 0 ) = ( 1 , 1 , 1 ) T V^{(0)}=U^{(0)}=(1 ,1 ,1)^T V(0)=U(0)=(1,1,1)T,计算结果见下表,收敛标准为 ∣ m a x ( V ( k + 1 ) ) − m a x ( V ( k ) ) ∣ < ϵ = 1 0 6 |max(V^{(k+1)})-max(V^{(k)})|<\epsilon=10^6 max(V(k+1))max(V(k))<ϵ=106.

    k k k ( V ( k ) ) T (V^{(k)})^T (V(k))T ( U ( K ) ) T (U^{(K)})^T (U(K))T m a x ( V ( k ) ) max(V^{(k)}) max(V(k))
    0[1 1 1][1 1 1]1
    1[ -6.0, 2.0, 8.0][ -0.75, 0.25, 1.0]8.00000000
    2[ 12.75, -4.0, 4.25][ 1.0, -0.31372549, 0.333333333]12.75000000
    3[ -11.9411765, 2.01960784, 5.96078431][ 1.0, -0.169129721, -0.499178982]-11.94117647
    31[ -13.2201794, 3.10813636, 2.26886445][ 1.0, -0.235105459, -0.171621305]-13.22017944
    32[ -13.2201803, 3.10813715, 2.26886178][ 1.0, -0.235105504, -0.171621092]-13.22018029

    所以主特征值近似值为-13.22018029,对应特征向量为 [ 1.0 , − 0.235105504 , − 0.171621092 ] T [1.0,-0.235105504,-0.171621092]^T [1.0,0.235105504,0.171621092]T.

    5.总结

    从以上数值结果来看,对照问题的真实解可以看出,乘幂法能在较少的步数内很好地求解其适用范围内的矩阵特征值问题.通过这次数值实验,我们验证乘幂法是正确的,对于求解一定的矩阵特征值问题是有效的.

    6.Matlab代码

    1.判读是否可用乘幂法的函数

    function [lambdaa,beta]=power_method_judge_HYH(A)
    %功能:此函数用于A能否使用乘幂法   
    %其中lambdaa,beta是实际的特征值及其对应的特征向量
    %A是待求矩阵,times,x0,ep分别为最大迭代次数,初始向量,误差
    %原理:若特征值非单根,主特征值为重根,此时对应于主特征值的特征向量子空间可能不是一维的...
    %...这样不同的初始向量可能得到线性无关的特征向量
    
    format long;
    b=eig(A);             %A中的全部特征值存到向量b中
    c=size(b);            %b的元素个数存到c中
    d=c(1)*c(2);          %特征值的总个数
    e=length(unique(b));  %不考虑重复的特征值个数
    if(d==e)
       fprintf('特征值互异,矩阵可对角\n');
       fprintf('请选择使用的方法\n');
    else
       error('特征值有重复,矩阵不可对角化\n');
    end
    

    2.乘幂法

    function[lambda,x]=power_method_cal_HYH(A,times,x0,e)
    %乘幂法   
    %其中lambda,x是得出的特征值及其对应的特征向量
    %A是待求矩阵,times,x0,e分别为最大迭代次数,初始向量,误差
    clc;
    digits(9);
    k=1;
    u=0;       %u用来记录上一次循环得到的alpha
    [m,n]=size(x0);
    y=zeros(m,n);
    y=x0;       %y为初始向量
    
    while k<=times
        x=A*y;
        z=abs(x);       %z存储x各元素的绝对值
        [m,p]=max(z);   %找出z大值及位置
        lambda=x(p);  %求x中按模最大的元素
        y=x./lambda;    %y最终趋于x/max(x)
        fprintf('第%d次迭代\n',k);  
        fprintf('lambda=%.8f\n',lambda);
        disp(vpa(x'));
        disp(vpa(y'));
        if abs(lambda-u)<e
            break
        else
            k=k+1;
            u=lambda;
        end
    end
    
    展开全文
  • 用原点平移的乘幂法

    2011-12-02 19:40:52
    该方法是数值分析中用matlab法的原点乘幂法求解方程组方法
  • 程序引自杂志《实验室研究与探索》2005年12月的“Matlab 在验证PN结伏安特性实验中的应用”,作者冯颖。作者解决了我们这些对曲线拟合与回归不了解或者已经遗忘的人的痛苦,但是里面有N处错误,乘幂回归的公式有错,...
  • 在实际间题中, 有时并不需要求出矩阵的全部特征值, 而仅需求出其部分或个别的特征值(模最大的几个或最小的几个), 此时常采用乘幂法、反幂法及其相近的一些迭代方法.乘幂法虽然简单, 但收敛速度慢, 特别是当出现两个...
  • 首先,我们要求A-λI,可得: 然后求det(A-λI),即该矩阵的行列式: 令(4)式为0,解得λ为: 之后,我们把λ代入(2)式,就能求出向量v了(这里省略求解过程,用高斯消元即可求得)。 说了这么多,那任何一个矩阵都...
  • 1改进乘幂法 function [t,y]=eigIPower(A,v0,ep) [tv,ti]=max(abs(v0)); lam0=v0(ti); u0=v0/lam0; err=ep*10; %为第一步循环做准备,此处不考虑0次循环的情况 while(err>ep) v1=A*u0; [tv,ti]=max(abs(v1));...
  • 乘幂法求特征值matlab代码1-光谱聚类 该软件包包含使用逆幂方法 (IPM)来解决非线性特征问题的1 谱聚类的 Matlab 实现。 给定一个带有权重矩阵 W 的图,目标是找到图的分区,使给定的最优性标准最小化。 当前支持的...
  • 使用幂求计算矩阵的主特征值及主特征向量,用反幂求计算矩阵的按模最小特征值及特征向量。
  • 对于有些问题,只要给出矩阵的主特征值(指按模最大的特征值)及其所对应的特征向量就可以了。乘幂法正是求矩阵主特征值及其相应特征向量的一种方法。
  • 数值分析课程设计+幂法与反幂法MATLAB 1一、问题的描述及算法设计(一)问题的描述本次课程设计我所要做的课题是对称矩阵的条件数的求解设计1、求矩阵 A 的二条件数问题 A 2102、设计内容1)采用幂法求出 A 的 .2)采用...
  • MATLAB入门学习-#7-幂&amp;amp;幂的加速&amp;amp;反幂编程练习1.幂(power method)2.幂的加速——原点平移3.幂的加速——埃特肯(Aitken)4.反幂(inverse power method) 这几种求特征值和...
  • ?2? MR ∵A2∪∩ ? ∧ ∨ ?,? ?An ∵ A2 ∪∩ ? ∧ ∨ ?,? ?An 关系的概念 定义: A?B的子集R叫做A到B的一个2元关系; A1???An的子集R叫做A1??...An上的一个n元关系....R,则称x与y有关系R,并记为xRy.......
  • matlab】 幂 求解最大特征值

    千次阅读 2018-05-04 10:00:00
    一. 算法: 1.输入矩阵A,初始向量x误差限ep,最大迭代次数N 2.置 k = 1, m1 = 0; 3.求Xr-> norm(x) abs(Xr)=max[Xi] 1<=i<=n ...5. 若m1-m 小于误差限 输出结果,停止 否则 to6 ...二....A...
  • matlab位移反幂

    2021-04-24 01:10:00
    和反幂Matlab 程序很好的解决了手算时所会遇到的......类似幂和反幂可以写出按模最小特征值算法,此处不再赘述。文案大全 实用标准文档 3.matlab 程序代码 function [r,y]=aitken(A,x0,eps,n) % r按模...
  • import numpy as np z0 = np.mat([1, 1, 1]) z0 = z0.T err = 1 A = np.mat([[-1, 2, 1], [2, -4, 1], ...print('乘幂法:') while err > 0.00000000001: y = A * z0 y1 = y.copy() y1 = abs(y1)
  • clear;clc; all long; A = [1 1 0.5; 1 1 0.25; 0.5 0.25 2]; e = 10; u(:,1) = [1 1 1]'; v(:,1) = u(:,1); i = 1; while e>1e-10 v(:,i+1) = A*u(:,i); u(:,i+1) = v(:,i+1)/max(v(:,i+1));...
  • matlab中的一些数学运算

    千次阅读 2020-01-11 20:13:42
    1、加减法 两数或两同阶矩阵相加减; 2、乘法与点乘运算 对于两标量之间运算没有差别; 对于矩阵来说,乘法就是矩阵乘法,要求第一个矩阵的列数等于第二个矩阵的行数;...3、除与点除运算 ...
  • 数值计算解矩阵的按模最大最小特征值及对应的特征向量一.幂1. 幂简介:当矩阵A满足一定条件时,在工程中可用幂计算其主特征值(按模最大)及其特征...2 算法实现3 matlab程序代码function [t,y]=lpowerA,x0,eps...
  • Greeting!特征值与特征向量是大学线性代数与统计学课程里的内容,当年强背了过去,并没有真正理解过这个问题。为了以后学习统计学习方法更方便,在此记录下学习文章以加深理解。(个人观点,如有错漏请提出)抽象...
  • CM_matlab_

    2021-10-02 13:17:35
    乘幂法实现code
  • >> A.*B ans = 1 4 9 16 除运算 1.左除运算A\B 此时A的行数必须与B的行数一致,解相当于A*X=B方程组的解 >> A=[1,-1;1,1]; B=[1;3]; >> A\B ans = 2 1 >> A.\B ans = 1 -1 3 3 注意到“.\‘符号代表的是对应元素...
  • 例如.* 点乘.^ 点乘幂.\ 点左除./ 点右除解释:点运算是对相同维数的矩阵的对应元素进行相应的运算。矩阵的点积,就是加点的情况就是矩阵各个对应元素相乘, 这个时候要求两个矩阵必须同样大小矩阵的乘法,就是不加点...
  • 数值计算方法中几个经典方法基于MATLAB的实际应用实验
  • 简介:当矩阵A 满足一定条件时,在工程中可用幂计算其主特征值(按模最大)及其特征向量。矩阵A 需要满足的条件为: (1) 的特征值为A i n λλλλ,0||...||||21≥≥≥>(2) 存在n 个线性无关的特征向量,设...
  • #include//用反幂计算矩阵的最小模特征值及相应的特征向量#include#include#define m 3#define q 1.2679//平移量void L_U(double aa[m][m],double LL[m][m],double UU[m][m]){double (*a)[m],(*L)[m],(*U)[m];...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 149
精华内容 59
关键字:

乘幂法matlab

matlab 订阅