本文主要是介绍MATLAB虚实线结合图,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
MATLAB虚实线结合图
简介
在计算近藤效应时文章中出现了下面这样一张图:
实线为有解情况,虚线为无解情况。所以,这种图是如何画的呢?
计算和画图
首先对方程进行求解,这里由于存在无解会报错,所以使用try-catch-end:
try x(i)=solve(exp(-0.21314*power((alpha(i)./k),2)+0.0550*power((alpha(i)./k),4)-0.01655*power((alpha(i)./k),6)+0.005396*power((alpha(i)./k),8)-0.001822*power((alpha(i)./k),10))==k);
catchx(i)=0;
end
然后分类画后半段虚线:
for i=1:length(alpha)if x(i)==0p=i-1;break;end
end
plot(alpha(1:p),x(1:p),'k','linewidth',2)
hold on;
plot(alpha(p+1:length(alpha)),x(p+1:length(x)),'k--','linewidth',2)
最后画连接竖线:
plot([alpha(p),alpha(p)],[0,x(p)],'k--','linewidth',2)
最终图像:
我这里没有按照文中的后半段计算,直接取0。
附上MATLAB完整代码:
clear;
alpha=(0:0.1:2);
x=zeros(1,length(alpha));
syms k;
p=0;
for i=1:length(alpha)tryx(i)=solve(exp(-0.21314*power((alpha(i)./k),2)+0.0550*power((alpha(i)./k),4)-0.01655*power((alpha(i)./k),6) ...+0.005396*power((alpha(i)./k),8)-0.001822*power((alpha(i)./k),10))==k);catchx(i)=0;end
end
for i=1:length(alpha)if x(i)==0p=i-1;break;end
end
plot(alpha(1:p),x(1:p),'k','linewidth',2)
hold on;
plot(alpha(p+1:length(alpha)),x(p+1:length(x)),'k--','linewidth',2)
hold on;
plot([alpha(p),alpha(p)],[0,x(p)],'k--','linewidth',2)
xlabel('\alpha')
ylabel('T_k/T_k_0')
set(gca,'FontSize',15);
//写的第一篇文章,希望后面多多益善。
这篇关于MATLAB虚实线结合图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!