关于matlab画双曲线的问题程序代码:close all;a=1.5;b=6;c=40;d=24;x=-8:0.1:16;y1=sqrt((a*x.^2-2*b*x+c)/d);y2=-sqrt((a*x.^2-2*b*x+c)/d);y3=sqrt(2/3);y4=-sqrt(2/3);y5=sqrt(-7/3+0.5*x);y6=-sqrt(-7/3+0.5*x);y7=sqrt(-22/3+x);y8=-sqrt(-22/3+x);
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/15 12:09:54
关于matlab画双曲线的问题程序代码:close all;a=1.5;b=6;c=40;d=24;x=-8:0.1:16;y1=sqrt((a*x.^2-2*b*x+c)/d);y2=-sqrt((a*x.^2-2*b*x+c)/d);y3=sqrt(2/3);y4=-sqrt(2/3);y5=sqrt(-7/3+0.5*x);y6=-sqrt(-7/3+0.5*x);y7=sqrt(-22/3+x);y8=-sqrt(-22/3+x);
关于matlab画双曲线的问题
程序代码:close all;
a=1.5;
b=6;
c=40;
d=24;
x=-8:0.1:16;
y1=sqrt((a*x.^2-2*b*x+c)/d);
y2=-sqrt((a*x.^2-2*b*x+c)/d);
y3=sqrt(2/3);
y4=-sqrt(2/3);
y5=sqrt(-7/3+0.5*x);
y6=-sqrt(-7/3+0.5*x);
y7=sqrt(-22/3+x);
y8=-sqrt(-22/3+x);
figure;
plot(y1,x);
hold on;
plot(y2,x);
hold on;
plot(y3,x,'blue');
hold on;
plot(y4,x,'blue');
hold on;
plot(y5,x);
hold on;
plot(y6,x);
hold on;
plot(y7,x);
hold on;
plot(y8,x);
请问为什么会多出来一段X轴的
关于matlab画双曲线的问题程序代码:close all;a=1.5;b=6;c=40;d=24;x=-8:0.1:16;y1=sqrt((a*x.^2-2*b*x+c)/d);y2=-sqrt((a*x.^2-2*b*x+c)/d);y3=sqrt(2/3);y4=-sqrt(2/3);y5=sqrt(-7/3+0.5*x);y6=-sqrt(-7/3+0.5*x);y7=sqrt(-22/3+x);y8=-sqrt(-22/3+x);
原因是你的y5,y6,y7,y8这四个向量中出现了虚数,在执行时会产生警告:
Warning: Imaginary parts of complex X and/or Y arguments ignored
意思就是画图时,虚部被忽略了,这样对于负数求平方根将得到一个纯虚数,纯虚数的虚部被忽略后,就剩下0了,所以你的图中就出现了中间那条竖线.如果想要消灭那条 竖线,在画这四个向量时,需要抛弃虚部不为0的部分,即是虚数的部分.
另外,你的hold on不需要写那么多次,一次就够了.从你的代码的figure处开始,其后的代码修改成这样,结果就是正确的了:
figure;hold on;
plot(y1,x,'r');
plot(y2,x,'r');
plot(y3,x,'b');
plot(y4,x,'b');
plot([fliplr(y6(imag(y6)==0)) y5(imag(y5)==0)],[fliplr(x(imag(y6)==0)) x(imag(y5)==0)],'k');
plot([fliplr(y8(imag(y8)==0)) y7(imag(y7)==0)],[fliplr(x(imag(y8)==0)) x(imag(y7)==0)],'k');
解释:其中imag是求向量的虚部.fliplr是将一个向量倒序,例如[1 2 3 4 5]倒序后变为[ 5 4 3 2 1].