求怎么用matlab绘出图形 5
%% 绘图
clear;
x=-2*pi:pi/180:2*pi;
y = 5*exp(-0.5*x).*cos(4*pi*x);
x2 = x;
y2 = 0.5*exp(-x).*x.*cos(pi*x);
plot(x,y);
hold on;
plot(x,y2,'color','r');
axis([-inf,inf,-60,60]);
%% 求交点
y(abs(y)<=eps)=0; y2(abs(y2)<=eps)=0;%对于三角函数关于零点的部分处理,但是发现sin(k*pi)不一定全在eps范围内
cy=y2-y; %作差
%符号记录
pos=cy>0;
neg=cy<=0;
%确定变号位置
fro=diff(pos)~=0; %变号的前导位置
rel=diff(neg)~=0; %变号的尾巴位置
zpf=find(fro==1); %记录索引
zpr=find(rel==1)+1; %记录索引
zpfr=[zpf; zpr];
hold on
%线性求交
x0=(x(zpr).*(y2(zpf)-y(zpf))-x(zpf).*(y2(zpr)-y(zpr)))./(y(zpr)+y2(zpf)-y(zpf)-y2(zpr));
y0=y(zpf)+(x0-x(zpf)).*(y(zpr)-y(zpf))./(x(zpr)-x(zpf));
if any(isnan(y0)), y0=y2(zpf); end
%加入已经判断为零的位置
x0=[x(abs(cy)<=eps) x0].';
y0=[y(abs(cy)<=eps) y0].';
hc=plot(x0,y0,'k.'); %绘制交点
xlabel('x'), ylabel('y'), zlabel('z');
title('平面曲线交点')
hold off;
disp('交点坐标[x,y]为:')
disp(unique([x0,y0],'rows')) %排除重复的点
2024-09-04 广告