帮我看下我的MATLAB运行出来的两条曲线的这个标注哪出错了?怎么都是蓝色雪花?下边的我想弄红色星星

ticm=0.43;w=0.61;t=0.3;n=8;T=(1+n)^2*(sparse(2:n,1:n-1,-1,n,n)+sparse(1:n,1:n,2,n,n)+sparse(1:n-1,2:n,-1,n,n));F=(1+n)*(sparse(2:n,1:n-1,-1,n,n)+sparse(1:n,1:n,1,n,n)+sparse(1:n-1,2:n,0,n,n));T1=kron(speye(n),T)+kron(T,speye(n));A=sparse([T1,zeros(n^2);zeros(n^2),T1]);[L1,U1]=lu(A);B1=sparse([kron(speye(n),F);kron(F,speye(n))]);b1=B1*sparse(1:n^2/2,1,1,n^2,1);b2=B1*sparse(n^2/2+1:n^2,1,1,n^2,1);B=sparse([B1,b1,b2]);A1=A-tril(A,-2)-triu(A,2);Q1=sparse(B✀*inv(A1)*B);Q=Q1-tril(Q1,-2)-triu(Q1,2);[L2,U2]=lu(Q);b=sparse(A*ones(2*n^2,1)+B*ones(n^2+2,1));q=sparse(B✀*ones(2*n^2,1));x0=zeros(2*n^2,1);y0=zeros(n^2+2,1);u0=zeros(2*n^2,1);v0=zeros(n^2+2,1);tol=1.0e-6;iter1=1;iter2=1;while iter1<1000 || iter2<1000 z0=L2尀q; q1=U2尀z0; z1=L1尀b; b1=U1尀z1; C=L1尀B; D=U1尀C; z12=B✀*((1-m)*x0-m*D*y0+m*b1); z13=L2尀z12; z14=U2尀z13; y1=y0+(4*m/(2-m))*z14-(4*m/(2-m))*q1; x1=(1-m)^2*x0-m*D*(y1+(1-m)*y0)+m*(2-m)*b1; r1=b-A*x1-B*y1; r2=q-B✀*x1; RES1=sqrt(norm(r1)^2+norm(r2)^2); z22=B✀*((1-w)*u0-w*D*v0+w*b1); z23=L2尀z22; z24=U2尀z23; v1=v0+(4*t/(2-t))*z24-(4*t/(2-t))*q1; u1=(1-w)^2*u0-w*D*(v1+(1-w)*v0)+w*(2-w)*b1; r3=b-A*u1-B*v1; r4=q-B✀*u1; RES2=sqrt(norm(r3)^2+norm(r4)^2); if RES1>tol plot(iter1,log10(RES1),✀*✀); %xlabel(✀k✀); %ylabel(✀log10(RES)✀); % legend(✀MSSOR iterative curve✀,✀Location✀,✀NorthEast✀) hold on; x0=x1;y0=y1; iter1=iter1+1; else if RES2>tol plot(iter2,log10(RES2),✀-rp✀); xlabel(✀k✀) ylabel(✀log10(RES)✀) legend(✀MSSOR iterative curve✀,✀GMSSOR iterative curve✀,✀Location✀,✀NorthEast✀) % hold on u0=u1;v0=v1; iter2=iter2+1; else break; end endendtociter1iter2RES1RES2
2026年09月22日 22:42
有1个网友回答
网友(1):

legend标注是按顺序来的,代码先画出来的两个点都是星号那类的数据,所以legend时,显示的都是星号。这种情况下要用句柄来设置legend。结果如下图:

 

修改后的代码在附件中发给你了,此外,我对代码进行了优化

%  优化后的代码运行完显示  Elapsed time is 0.255966 seconds.
% 你的原代码运行完显示     Elapsed time is 3.531821 seconds.