① 反幂法 matlab,请帮忙看下
如果给出矩阵的特征值有为负的情况话,结果不正确
如果给出矩阵的特征值全为正时,结果正确
这个反幂法本身就写的不对,你应该好好看看反幂法的使用范围。
反幂法求出的是绝对值最小的特征值。
幂法求出的是绝对值最大的特征值。
LZ 的错误可能是这方面原因。
请问你是要求出所有特征值
还是部分特征值
求全部特征值 对于大的矩阵 万介以上没有可行办法
部分特征值现在方法比较多
② 幂法和反幂法求特征值c语言举例..
我最怕高数了,ai!你还是网络一下吧。
③ C语言^(幂)运算符
^ 运算符是 按位异或
1、异或是一个数学运算符。他应用于逻辑运算。
2、例如:真异或假的结果是真,假异或真的结果也是真,真异或真的结果是假,假异或假的结果是假。就是说两个值不相同,则异或结果为真。反之,为假。
3、在计算机应用中,普遍运用,异或的逻辑符号 ^ (Shift + 6).形象表示为:
真^假=真
假^真=真
假^假=假
真^真=假
或者为:
True ^ False = True
False ^ True = True
False ^ False = False
True ^ True = False
部分计算机语言用1表示真,用0表示假,所以两个字节按位异或如下
00000000
异或
00000000
=
00000000
============我是分界线============
11111111
异或
00000000
=
11111111
=============我还是分界线=============
00000000
异或
11111111
=
11111111
===========又是我。。。================
11111111
异或
11111111
=
00000000
=============分界线=====================
00001111
异或
11111111
=
11110000
========================================
所以 按位异或 也常用于字节取反操作。
④ 你好,可不可以耽误你一点时间,帮我解决一个反幂法求特征值和特征向量的问题呢
你是想要答案还是方法
迭代两次λ取Mκ的负一记得
我居然忘得差不多了 擦
⑤ 帮我看看哪有问题吧~~ 想用反幂法输出特征值及特征向量~出现了unexpected end of file found
在倒数第二行的“while(k<6);”上面加一个反括号“}”。
P.S:lz最好去下一个visual assist插件,否则以后还容易掉括号的。
⑥ Ax=λx,求按模最小特征值的反幂法
http://sxyd.st.e.cn/shufenxi/wlkj/szfx042.htm
讲的不是太好 符号不清
我的笔记没在身边 我觉得我整理的比较清晰 容易掌握
实际就是两种思路:1、将A求逆,然后用乘幂法求A^(-1)的最大特征值和特征向量,则A的特征值就是A^(-1)的倒数,特征向量与之相同。2、把乘幂法迭代的次序颠倒,即每右乘一次迭代向量得到的是上一次的迭代向量,即变成了方程组的求解,此时需要将A进行三角分解。这种思路主要是为了避免对A求逆,以及在此过程中可能的对A稀疏性的破坏。
⑦ c语言编程中如何输入幂次方
1、头文件:#include
2、原型:
double pow(double x, double y);
pow() 函数用来求 x 的 y 次幂(次方)
pow()用来计算以x 为底的 y 次方值,然后将结果返回。设返回值为 ret,则 ret = xy。
3、举例如下:
double a = pow(4, 2); // 计算4的平方
4、可能导致错误的情况:
如果底数 x 为负数并且指数 y 不是整数,将会导致 domain error 错误。
如果底数 x 和指数 y 都是 0,可能会导致 domain error 错误,也可能没有;这跟库的实现有关。
如果底数 x 是 0,指数 y 是负数,可能会导致 domain error 或 pole error 错误,也可能没有;这跟库的实现有关。
如果返回值 ret 太大或者太小,将会导致 range error 错误。
错误代码:
如果发生 domain error 错误,那么全局变量 errno 将被设置为 EDOM;
如果发生 pole error 或 range error 错误,那么全局变量 errno 将被设置为 ERANGE。
注意:1、使用pow函数时,需要将头文件#include包 含进源文件中。
2、用pow(x,y)的话要用到math.h头文件。
(7)反幂法c语言编程扩展阅读:
1、 三角函数: double sin (double);正弦 double cos (double);余弦 double tan (double);正切
2 、反三角函数: double asin (double); 结果介于[-PI/2, PI/2] double acos (double); 结果介于[0, PI] double atan (double); 反正切(主值), 结果介于[-PI/2, PI/2] double atan2 (double, double); 反正切(整圆值), 结果介于[-PI/2, PI/2]
3 、双曲三角函数: double sinh (double); double cosh (double); double tanh (double);
4 、指数与对数: double exp (double); double sqrt (double);开平方 double log (double); 以e为底的对数 double log10 (double);以10为底的对数 double pow(double x, double y);计算以x为底数的y次幂 float powf(float x, float y); 功能与pow一致,只是输入与输出皆为浮点数
5 、取整: double ceil (double); 取上整 double floor (double); 取下整
6 、绝对值: double fabs (double);求绝对值 double cabs(struct complex znum) ;求复数的绝对值
7 、标准化浮点数: double frexp (double f, int *p); 标准化浮点数, f = x * 2^p, 已知f求x, p ( x介于[0.5, 1] ) double ldexp (double x, int p); 与frexp相反, 已知x, p求f
8 、取整与取余: double modf (double, double*); 将参数的整数部分通过指针回传, 返回小数部分 double fmod (double, double); 返回两参数相除的余数
9 、其他: double hypot(double x, double y);已知直角三角形两个直角边长度,求斜边长度 double ldexp(double x, int exponent);计算x*(2的exponent次幂) double poly(double x, int degree, double coeffs [] );计算多项式 nt matherr(struct exception *e);数学错误计算处理程序
⑧ MATLAB实现用幂法/反幂法求矩阵的最大/最小特征值问题(有追加!)。
%A为矩阵;ep为精度要求;N为最大迭代次数;m为绝对值最大的特征值;u为对应最大特征值的特征向量。
A=[2,-1,0;-1,2,-1;0,-1,2];
N=100;
ep=1e-6;
n=length(A);
u=ones(n,1);
index=0;
k=0;
m1=0;
while k<=N
v=A*u;
m=max(abs(v));
u=v/m
if abs(m-m1)<ep
index=1;
break;
end
m1=m;
k=k+1;
end
m %特征值
u/norm(u) %特征向量
[vv,ll]=eig(A); %matlab求解的特征值和特征向量
[mm,ii]=max(abs(diag(ll)));
m_matlab=mm
v_matlab=vv(:,ii)
这个是你的幂法,你的方法基本没有问题。
⑨ 如何用原点平移法和反幂法构建一个可以求解矩阵所有的特征值
反幂法应该不行,但是类似反幂法的很多方法都可以做到,比如:
1. Simultaneous iteration—同时迭代法
2. Newton法
3. Implicit Restarted Arnoldi—隐式重启动的Arnoldi方法
4. Jacobi-Davidson方法
以上所有算法中,不能仅收敛特征向量,要收敛包含特征向量的不变子空间的酉基,即Schur基,才能保证算法对于nondefective(中文不知道咋翻译,因为还有个nonderogotary)matrix也能生效。还要注意的是,对于Arnoldi和Jacobi-Davidson方法,由于有限精度计算误差的影响,在迭代多次以后还要加入重新正交化的步骤,保证搜寻子空间酉基的正交性,这一步又叫做DGKS修正,可参考Demmel,Gxx,Kxx和Stewart 70年代在SIAM上发表的论文。