Question
Answer
the literature source [POZAR] is available here:
https://www.amazon.co.uk/Microwave-Engineering-David-M-Pozar/dp/0470631554
There's also a solutions manual available here:
https://www.scribd.com/doc/176505749/Microwave-engineering-pozar-4th-Ed-solutions-manual
this is the OC series stub impedance match circuit on single frequency.
The arcs of the transmission line lengths on the Smith chart are:
And the OC series stub arcs:
There's also an alternative graph to find the required transmission line and stub lengths; |s11| surface.
clc;clear all;close all
ZL=90+1j*60;Z0=75;
Dstep=.001;drange=[0: Dstep:1];
D1=drange;D2=D1;
[D1,D2]=meshgrid(drange);
Z1=Z0*(ZL+1j*Z0*tan(2*pi*D1))./(Z0+1j*ZL*tan(2*pi*D1));
Zin_stub=Z0./(1j*tan(2*pi*D2)); % series oc stub
Zin=Z1+Zin_stub;
s11=(Zin-Z0)./(Zin+Z0);
surf(abs(s11),'LineStyle','none')
ax=gca
xlabel('D1');ylabel('D2');
ax.XTickLabelMode='manual'; ax.YTickLabelMode='manual';
ax.XTickLabel=[0:0.1:1];ax.YTickLabel=[0:0.1:1];
ax.XTick=[0:100:1000];ax.YTick=[0:100:1000];
ax.PlotBoxAspectRatio=[1 1 1]
hold all;x0=find(drange==.5) % plotting corner to box D1<.5 D2<.5
plot3([x0 x0 0],[0 x0 x0],[5 5 5],'Color',[1 0 0],'LineWidth',3)
% moving camera birdeye view
ax.CameraPosition=[500 500 10]
camzoom(ax,1.5) % zoom in a bit, camzoom is cumulative
% zoom_factor within [0 1) zooms out zoom_factor>1 zooms in
ax.CameraUpVector = [0 1 0]; % camera attitude
ax.CameraTarget = [500 500 0]; % centring
ax.CameraViewAngle =8*pi; % focus
automating peaks capture: findpeaks with MinPeakProminence=2.5 returns the right amount of peaks. MinPeakProminence larger or smaller than 2.5 then either too few or too many peaks.
With MinPeakHeight=2 command findpeaks doesn't catch the right amount of peaks for any MinPeakDistance, going from 6 peaks only to too many peaks.
With Threshold=2 doesn't catch a single peak but Threshold=1 gets the right amount of peaks.
To get zeros exact locations, it's useful to invert |s11| surface just plotted, with the Laplacian of the surface, command del2
V=1e3*del2(abs(s11));
figure(2);ax=gca;surf(V,'Lines','none');
xlabel('D1');ylabel('D2');
ax.XTickLabelMode='manual';
ax.YTickLabelMode='manual'; ax.XTickLabel=[0:0.1:1];ax.YTickLabel=[0:0.1:1];
ax.XTick=[0:100:1000];ax.YTick=[0:100:1000];
[pks,locs]=findpeaks(V( : ),'Threshold',1);
[nd1,nd2]=ind2sub(size(V),locs);
hold all;figure(2);plot3(nd2,nd1,V(nd2,nd1)+2,'ro'); % plot peaks
ax.PlotBoxAspectRatio=[1 1 1]
x0=find(drange==.5) % plot corner to box D1<.5 D2<.5
figure(2);
plot3([x0 x0 0],[0 x0 x0],[.5 .5 .5],'Color',[1 0 0],'LineWidth',3)
ax2=gca
ax2.CameraPosition=[500 500 10] % moving camera bird-eye view
ax2.CameraUpVector = [0 1 0]; % camera attitude
camzoom(ax,1.5) % zoom in a bit, camzoom is cumulative
% zoom_factor within [0 1) zooms out zoom_factor>1 zooms in
ax2.CameraTarget = [500 500 0]; % centring
abs(s11(sub2ind(size(V),nd1,nd2)))
= 0.001390798787950
0.001390798787950
0.002883920448033
0.002883920448033
0.001390798787950
0.001390798787950
0.002883920448033
0.002883920448033
unique(sort(drange(nd1)))
= 0.1470 0.3530 0.6470 0.8530
numel(nd1)
= 8
among these stub lengths
D1=unique(drange(nd1))
= 0.1470 0.3530 0.6470 0.8530
D2=unique(drange(nd2))
= 0.1740 0.4820 0.6740 0.9820
the stub lengths inside D<.5 are the smallest ones
Dstub1= D1([1 2])
= 0.1470 0.3530
Dstub2= D2([1 2])
= 0.1740 0.4820
The resulting frequency response is the same as the one obtained with the MATLAB solution
So the problem is simple enough to find transmission line and stub length on a surface.
Quick check how short circuit and open circuit stubs behave over frequency:
Zin_sc_stub=1j*Z0*tan(beta*L)
Zin_oc_stub=-1j*Z0*cot(beta*L)
da=pi/2000;a=[-2*pi:da:2*pi];
y_OC=-cot(a); y_SC=tan(a);
figure;plot(a,y_OC,a,y_SC);
grid on;axis([-2*pi 2*pi -10 10])
legend('SC','OC')
ylabel('Stub Z_i_n');xlabel('\betaL')
xticks([-2*pi -2*pi*3/4 -pi -pi/2 0 pi/2 pi 3*pi/2 2*pi])
xticklabels({'-2\pi','-3\pi/4','-\pi','-\pi/2','0','\pi/2','\pi','3\pi/2','2\pi'})
John BG
jgb2012@sky.com

Answer
the literature source [POZAR] is available here:
https://www.amazon.co.uk/Microwave-Engineering-David-M-Pozar/dp/0470631554
There's also a solutions manual available here:
https://www.scribd.com/doc/176505749/Microwave-engineering-pozar-4th-Ed-solutions-manual

this is the OC series stub impedance match circuit on single frequency.

The arcs of the transmission line lengths on the Smith chart are:


And the OC series stub arcs:


There's also an alternative graph to find the required transmission line and stub lengths; |s11| surface.
clc;clear all;close all
ZL=90+1j*60;Z0=75;
Dstep=.001;drange=[0: Dstep:1];
D1=drange;D2=D1;
[D1,D2]=meshgrid(drange);
Z1=Z0*(ZL+1j*Z0*tan(2*pi*D1))./(Z0+1j*ZL*tan(2*pi*D1));
Zin_stub=Z0./(1j*tan(2*pi*D2)); % series oc stub
Zin=Z1+Zin_stub;
s11=(Zin-Z0)./(Zin+Z0);
surf(abs(s11),'LineStyle','none')
ax=gca
xlabel('D1');ylabel('D2');
ax.XTickLabelMode='manual'; ax.YTickLabelMode='manual';
ax.XTickLabel=[0:0.1:1];ax.YTickLabel=[0:0.1:1];
ax.XTick=[0:100:1000];ax.YTick=[0:100:1000];
ax.PlotBoxAspectRatio=[1 1 1]

hold all;x0=find(drange==.5) % plotting corner to box D1<.5 D2<.5
plot3([x0 x0 0],[0 x0 x0],[5 5 5],'Color',[1 0 0],'LineWidth',3)
% moving camera birdeye view
ax.CameraPosition=[500 500 10]
camzoom(ax,1.5) % zoom in a bit, camzoom is cumulative
% zoom_factor within [0 1) zooms out zoom_factor>1 zooms in
ax.CameraUpVector = [0 1 0]; % camera attitude
ax.CameraTarget = [500 500 0]; % centring
ax.CameraViewAngle =8*pi; % focus

automating peaks capture: findpeaks with MinPeakProminence=2.5 returns the right amount of peaks. MinPeakProminence larger or smaller than 2.5 then either too few or too many peaks.
With MinPeakHeight=2 command findpeaks doesn't catch the right amount of peaks for any MinPeakDistance, going from 6 peaks only to too many peaks.
With Threshold=2 doesn't catch a single peak but Threshold=1 gets the right amount of peaks.
To get zeros exact locations, it's useful to invert |s11| surface just plotted, with the Laplacian of the surface, command del2
V=1e3*del2(abs(s11));
figure(2);ax=gca;surf(V,'Lines','none');
xlabel('D1');ylabel('D2');
ax.XTickLabelMode='manual';
ax.YTickLabelMode='manual'; ax.XTickLabel=[0:0.1:1];ax.YTickLabel=[0:0.1:1];
ax.XTick=[0:100:1000];ax.YTick=[0:100:1000];
[pks,locs]=findpeaks(V( : ),'Threshold',1);
[nd1,nd2]=ind2sub(size(V),locs);
hold all;figure(2);plot3(nd2,nd1,V(nd2,nd1)+2,'ro'); % plot peaks
ax.PlotBoxAspectRatio=[1 1 1]
x0=find(drange==.5) % plot corner to box D1<.5 D2<.5
figure(2);
plot3([x0 x0 0],[0 x0 x0],[.5 .5 .5],'Color',[1 0 0],'LineWidth',3)
ax2=gca
ax2.CameraPosition=[500 500 10] % moving camera bird-eye view
ax2.CameraUpVector = [0 1 0]; % camera attitude
camzoom(ax,1.5) % zoom in a bit, camzoom is cumulative
% zoom_factor within [0 1) zooms out zoom_factor>1 zooms in
ax2.CameraTarget = [500 500 0]; % centring
abs(s11(sub2ind(size(V),nd1,nd2)))
= 0.001390798787950
0.001390798787950
0.002883920448033
0.002883920448033
0.001390798787950
0.001390798787950
0.002883920448033
0.002883920448033
unique(sort(drange(nd1)))
= 0.1470 0.3530 0.6470 0.8530
numel(nd1)
= 8
among these stub lengths
D1=unique(drange(nd1))
= 0.1470 0.3530 0.6470 0.8530
D2=unique(drange(nd2))
= 0.1740 0.4820 0.6740 0.9820
the stub lengths inside D<.5 are the smallest ones
Dstub1= D1([1 2])
= 0.1470 0.3530
Dstub2= D2([1 2])
= 0.1740 0.4820
The resulting frequency response is the same as the one obtained with the MATLAB solution

So the problem is simple enough to find transmission line and stub length on a surface.
Quick check how short circuit and open circuit stubs behave over frequency:
Zin_sc_stub=1j*Z0*tan(beta*L)
Zin_oc_stub=-1j*Z0*cot(beta*L)
da=pi/2000;a=[-2*pi:da:2*pi];
y_OC=-cot(a); y_SC=tan(a);
figure;plot(a,y_OC,a,y_SC);
grid on;axis([-2*pi 2*pi -10 10])
legend('SC','OC')
ylabel('Stub Z_i_n');xlabel('\betaL')
xticks([-2*pi -2*pi*3/4 -pi -pi/2 0 pi/2 pi 3*pi/2 2*pi])
xticklabels({'-2\pi','-3\pi/4','-\pi','-\pi/2','0','\pi/2','\pi','3\pi/2','2\pi'})

John BG
jgb2012@sky.com