📄 untitled18.m
字号:
%用来画图,SVD值,与W,B都有关,并且与采样点,采样范围有关\
w=10;
B=1;
row1=10;%采样区间采样点数
t1=linspace(-pi/60,pi/60,row1);
A1=matrixA(row1,10,t1);%定义一个15*7大的A矩阵,用于解Ax=G
[U S V]=svd(A1);% 对A进行svd分解,得到 U S V
G1=matrixG(row1,t1); %定义一个15*1大的G矩阵,
%S(1,1)=0;
%S(2,2)=0;
%S(3,3)=0;
%S(4,4)=0.0001;
%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,pi,20);
%X=V'\(S\(U\G1))
%X=[2.7629e-011 +6.5475e-014i;2.7857e-022 -5.0676e-023i;5.3233e-009 +1.7116e-008i;-6.5046e-023 -1.1954e-023i;-1.3534e-006 -3.4581e-006i]
%for i=1:5
%if S(i,i)>0
%S(i,i)=1/S(i,i);
% end
%end
C1=niA(10,10,U,S,V);
X=C1*G1;
%X=SVD_equation(10,10,A1,G1);
%X=V*(S\(U'*G1));
%X=(V')'*pinv(S)*(U)'*G1;
%X=inv(V')*pinv(S)*inv(U)*G1 %svd中已去掉两个小的奇异值。分别为S(6,6)=0,S(7,7)=0
row2=300;%比较范围所取点数
t2=linspace(-3*pi,3*pi,row2);
A2=matrixA(row2,10,t2);
A3=xiuzhengA(A2,row2,10);
p=A3*X;
%subplot(1,2,1);
%t=linspace(-pi,pi,20);
plot(t2,p,'r');
hold on
t=linspace(-3*pi,3*pi,3000);
y=(2/pi)*((sin((B*t)/2)./t).^2).*cos(w*t);
plot(t,y);
%G2=matrixG(500,t2)
%plot(t2,G2)
%subplot(1,2,2);
%title('不经过SVD后的原来的图形')
%plot(t,p,'r',t,y)
xlabel('t');
ylabel('y值');
title('在(-pi/60,pi/60)之间采样20个点,在(-3*pi,3*pi)之间比较')
hold off
%legend('红:SVD值,绿:原方程值')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -