用Matlab求一道数值分析的题

已知矩阵
190 66 -84 30
66 303 42 -36
336 -168 147 -112
30 -36 28 291

(1)用幂法求按模最大的特征值与特征向量
(2)用QR法求矩阵的所有特征值和特征向量

请给出完整Matlab的程序
谢谢化学工程大侠,请再接再厉,把第二问也解答一下。

第1个回答  2006-12-02
【1】用幂法求按模最大的特征值与特征向量

A=[190 66 -84 30; 66 303 42 -36; 336 -168 147 -112; 30 -36 28 291];
X=[1 1 1 1]';%初值,随便设定啦
lambda=0;%最大特征值的初值
for k=1:100 %循环次数自己定,也可以用while
Y=A*X;%开始迭代了
m=max(abs(Y));
dc=abs(lambda-m);
Y=(1/m)*Y;
dv=norm(X-Y);
err(k)=max(dc,dv);
X=Y;
lambda=m;
end
max_lamdba=m%最大的特征值
V=X%特征向量
plot(err)%看看误差的啦

运行结果:
max_lamdba = 343.0000

V =
0.3333
1.0000
-0.0000
-0.5000

可以用eig验证:
>> eig(A)
ans =
1.0e+002 *
1.4700 + 1.9600i
1.4700 - 1.9600i
2.9400
3.4300 就是它!!!

【1*】如果看着费劲,还有一个简捷的
A=[190 66 -84 30; 66 303 42 -36; 336 -168 147 -112; 30 -36 28 291];
X=[1 1 1 1]';%初值,随便设定啦
for k=1:100 %循环次数自己定,也可以用while
Y=A*X;%开始迭代了
m=max(abs(Y));
Y=(1/m)*Y;
X=Y;
end
max_lamdba=m%最大的特征值
V=X%特征向量

【2】不会了,用这个将就吧,不好意思。
>> [V,D]=eig(A,'nobalance')
结果:
V =

-0.0000 + 0.4286i -0.0000 - 0.4286i 0.5000 -0.3333
0.0000 - 0.2143i 0.0000 + 0.2143i 0.3333 -1.0000
1.0000 + 0.0000i 1.0000 - 0.0000i 0.0000 -0.0000
0.0000 - 0.1429i 0.0000 + 0.1429i 1.0000 0.5000

D =

1.0e+002 *

1.4700 + 1.9600i 0 0 0
0 1.4700 - 1.9600i 0 0
0 0 2.9400 0
0 0 0 3.4300

即:A*V=V*D本回答被提问者采纳

怎样使用matlab计算二次方程数值解
2、其次,单击输入2:stat,如下图所示,然后进入下一步。3、接着,选择二次方程式,如下图所示,然后进入下一步。4、然后,输入三个坐标系(-1,0,1),如下图所示,然后进入下一步。5、随后,单击纸字下的AC按钮,返回到空白处并输入0,然后按Fhift + 1按钮进入分析模式,选择第五个,如...

Matlab求数值解
如何用Matlab求题主给出问题的数值解?第一步,将已知值分别赋值给变量,即 A_Acr0=0.1:0.01:0.25;k0=1.2:0.1:1.4;第二步,使用solve函数求解Ma值。即 Ma=solve(A_Acr==(((1+0.5*(k-1)*Ma^2)*2\/(k+1))^(0.5*(k+1)\/(k-1)))\/Ma;第三步,使用for双循环语句,得到...

如何利用matlab求下列积分的数值解?
题1:可以这样解决。>> syms x >> Q=int(exp(-2*x)*cos(x)^3,0,2*pi)

谁能帮我做一下关于数值分析的一道题,谢谢啦!用MATLAB
xi_B= [0.2,0.2+0.08*1,0.2+0.08*11,0.2+0.08*10]; %所求(xi,yi)横坐标 fxi_B= interp1(xi_A,fxi_A,xi_B,'linear'); %这是线性差值 fxi_C= interp1(xi_A,fxi_A,xi_B,'spline'); %这是?三次样条函数?fxi_D= interp1(xi_A,fxi_A,xi_B...

用matlab程序题:求解下列方程数值解并画出曲线
syms y(x)Dy = diff(y); D2y = diff(y,2);y = dsolve((1+x^2)*D2y == 2*x*Dy,y(0)==1,Dy(0)==3);x0 = -1:0.01:1;y0 = eval(subs(y,x,x0));plot(x0,y0)y-x图像

matlab解方程组的数值解。。
建议你使用solve()求解。即 >>syms R k >>[R,k]=solve(R-0.35*10^(k\/1.1),R^2-14306.5*k);>>R=double(R),k=double(k)>>0.35*10^(k\/1.1) %验算 >>sqrt(14306.5*k) %验算 运行结果 k = 1.55688153855924e-05 R = 0.350011406533846 ...

matlab如何求解二阶微分方程数值解的图象
题主的问题可以使用ode45函数求解,得到【x,y,y'】的数值解。其求解方法:1、确定初值,y0=[pi,0];2、确定x的范围,xspan=[0,10];3、自定义函数,odefun=@(x,y)[y(2);sin(y(1))*cos(y(1))*((2\/9*pi)\/(2+0.4*(sin(y(1)))^2))^2-5*sin(y(1))];4、求解,[x,...

用matlab求解微分方程初值问题数值解和解析解,求解范围为区间.并画出...
用matlab求解微分方程初值问题数值解和解析解,可以这样处理:一、数值解 微分方程初值问题数值解可以用ode函数求解。首先,自定义微分方程的函数,即 dy = 3\/x*y+x^3*(exp(x)+cos(x))-2*x;其二,确定初始条件,即 y0=[(exp(pi)+2\/pi)*pi^3];其三,使用ode45函数,求出其数值解【x,y...

用matlab求解二阶微分方程数值解,程序出现错误,求大神指点
G=1\/3*((5*Pp-2*P1)\/(P1-2*Pp)-P1*c1^2\/Pp*cp^2);改成 G=1\/3*((5*Pp-2*P1)\/(P1+2*Pp)-P1*c1^2\/(Pp*cp^2));表达式的错误导致出现高频振荡,积分步长非常小(大约在10^-8量级),所以很长时间算不出。2、从结果看,仿真时间取50秒就足够了(已进入稳态)。3、在出现...

Matlab 求数值解
如果x>=400得到的值是73.33333 所以函数的确是没有解的,因为不可能有一个x取值使得f(x)=0 退而求其次,你可以用fzero函数平时用来数值解方程的函数,来求得这个跳变点 fun=@(x) x-mod(x,100)-49\/0.15;fzero(fun,0)ans = 400.0000 一般如果是连续的函数,fzero(fun,x0)可以找出...

相似回答