📄 untitled20.m
字号:
%用来画图,SVD与最小二乘解比较,与W,B都有关,并且与才采点,采样范围有关
A=matrixA(20,7) % 定义一个15*7大的A矩阵,用于解Ax=G
[U S V]=svd(A)% 对A进行svd分解,得到U S V
G=matrixG(20) %定义一个15*1大的G矩阵,
B=1;
W=20;
%S(1,1)=0;
%S(2,2)=0;
%S(3,3)=0;
%S(4,4)=0;
%S(5,5)=0;
%S(6,6)=0;
%S(7,7)=0;%本来matlab中有此函数(对奇异值进行取舍的函数),但今日已忘,赶它日当前往博库书城查《matlab数值计算范例教程》
%t=linspace(pi/(60*B),pi/2,15);
t=linspace(-pi/5,pi/5,20);
X1=inv(V')*pinv(S)*inv(U)*G;
X2=A\G;%svd中已去掉两个小的奇异值。分别为S(6,6)=0,S(7,7)=0
p1=A*X1
p2=A*X2
%plot(t,p)
%title('经过SVD后得到的图形')
y=(2/pi)*((sin((B*t)/2)./t).^2).*cos(W*t)
%subplot(1,2,2);
%plot(t,y,'r')
%title('不经过SVD后的原来的图形')
subplot(1,2,1);
plot(t,p1,'r',t,y)
xlabel('t');
ylabel('y值');
title('在-pi/60和pi/60之间采样20个点')
subplot(1,2,2);
plot(t,p2,'r',t,y)
xlabel('t');
ylabel('y值');
title('在-pi/60和pi/60之间采样20个点')
%legend('红:SVD值,绿:原方程值')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -