ZIP with MATLAB scripts and note:
exercise 6.15
exercise 6.15 notes:
The highlighted formula returns one and only one resonant frequency for each different cavity size input [a b d] .
Since the cavity is resonating at more than one frequency, it's has to be the case that we are dealing with a multimode signal that has components distributed along different modes, not just TE101 or whatever may be 'the next one' as the solutions manual puts it.
It's also important to mention that fixed size passive cavities like this one, may resonate at different frequencies, there's always a dominant resonant frequency only, when applying a narrow band signal and sweeping frequency. Then there may be other frequencies where the same cavity shows certain high Q, but such secondary resonating frequencies are not going to have as high Q as the dominant one.
The question doesn't mention how tall is Q on each resonating frequency. So one has to assume that it's more about finding a b d may not even solve for the equation above, for any of the measured frequencies in f0, but that such compromise a b d show relative high Q at all measured frequencies.
c0 = 298792586 % m/s
mu0 = 1.256637061435917e-06
eps0 = 8.854187817e-12 % [F/m]=[C^2/N*m^2]
er=1 % relative permittivity of filler
mur=1
f0=[5.2 6.5 7.2]*1e9 % measurements
since
fres=c0/(2*pi*(er*mur)^.5)*((M*pi/a)^2+(N*pi/b)^2+(L*pi/d)^2)^.5
we can simplify to:
2*fres/c0=(M*pi/a)^2+(N*pi/b)^2+(L*pi/d)^2
and define the following:
sqfovc=f0.^2*4*er*mur/c0^2
this allows avoiding + - that show up when solving square roots
sqfovc1=sqfovc(1);sqfovc2=sqfovc(2);sqfovc3=sqfovc(3)
Let's start with an easy matrix. Attempting direct solving of these type of equations for 3 known frequencies, it may seem that the only return is void
syms u v w
vars=[v u w];
eqns1=...
[1/u^2+2*1/v^2+3*1/w^2==1,...
4*1/u^2+5*1/v^2+6*1/w^2==2,...
7*1/u^2+8*1/v^2+8*1/w^2==3 ];
[solv, solu, solw]=solve(eqns1, vars)
[a b d] exist because the cavity resonates at the measured frequencies, so there has to be a solution.
One gets a bit closer when applying substitution: u1=1/u ..
eqns2=...
[1*u^2+2*v^2+3*w^2==1,...
4*u^2+5*v^2+6*w^2==2,...
7*u^2+8*v^2+8*w^2==3 ];
[solv, solu, solw]=solve(eqns2, vars)
s=[double(solu) double(solv) double(solw)]
s(1,:)
% check
A=[1 2 3;4 5 6;7 8 9]
A*s(1,:).^2'
A*s(1,:).^2'==v
solv =
Empty sym: 0-by-1
solu =
Empty sym: 0-by-1
solw =
Empty sym: 0-by-1
solv =
-6^(1/2)/3
6^(1/2)/3
-6^(1/2)/3
6^(1/2)/3
solu =
-(3^(1/2)*1i)/3
-(3^(1/2)*1i)/3
(3^(1/2)*1i)/3
(3^(1/2)*1i)/3
solw =
0
0
0
0
s =
Column 1
0.000000000000000 - 0.577350269189626i
0.000000000000000 - 0.577350269189626i
0.000000000000000 + 0.577350269189626i
0.000000000000000 + 0.577350269189626i
Column 2
-0.816496580927726 + 0.000000000000000i
0.816496580927726 + 0.000000000000000i
-0.816496580927726 + 0.000000000000000i
0.816496580927726 + 0.000000000000000i
Column 3
0.000000000000000 + 0.000000000000000i
0.000000000000000 + 0.000000000000000i
0.000000000000000 + 0.000000000000000i
0.000000000000000 + 0.000000000000000i
=
Column 1
0.000000000000000 - 0.577350269189626i
Column 2
-0.816496580927726 + 0.000000000000000i
Column 3
0.000000000000000 + 0.000000000000000i
A =
1 2 3
4 5 6
7 8 9
ans =
1
2
3
ans =
1 == v
2 == v
3 == v
Trying another substitution
eqns3=...
[1*u+2*v+3*w==1,...
4*u+5*v+6*w==2,...
7*u+8*v+8*w==3 ];
[solu,solv,solw]=solve(eqns3,vars)
s=[double(solu) double(solv) double(solw)]
s(1,:)
A*s(1,:).^2'==v
solu =
2/3
solv =
-1/3
solw =
0
s =
0.666666666666667 -0.333333333333333 0
ans =
0.666666666666667 -0.333333333333333 0
ans =
2/3 == v
7/3 == v
4 == v
However, when guessing what resonant mode does each measurement belong to, let's say for instance that we assume like the solutions manual reads. that it must be this or that other mode therefore equations limited to such modes are laid out, and the first set a b d matching such partial equations should do as valid answer, if the wrong mode is assumed, for instance TE 111:
M=1;N=1;L=1
eqn41=N^2*u+M^2*v+L^2*w==sqfovc1
eqn42=N^2*u+M^2*v+L^2*w==sqfovc2
eqn43=N^2*u+M^2*v+L^2*w==sqfovc3
eqn4=[eqn41,eqn42,eqn43]
[solu,solv,solw]=solve(eqn4,vars)
s=[double(solu) double(solv) double(solw)]
again only trivial null solution.
u + v + w == 5328277835236583/4398046511104
eqn42 =
u + v + w == 8325434117557161/4398046511104
eqn43 =
u + v + w == 1276894984183915/549755813888
eqn4 =
[ u + v + w == 5328277835236583/4398046511104, u + v + w == 8325434117557161/4398046511104, u + v + w == 1276894984183915/549755813888]
>> [solu,solv,solw]=solve(eqn4,vars)
s=[double(solu) double(solv) double(solw)]
solu =
Empty sym: 0-by-1
solv =
Empty sym: 0-by-1
solw =
Empty sym: 0-by-1
s =
0×3 empty double matrix
Tried isolating d as function of a and b
fovc^2=M^2/U^2+N^2/V^2+L^2/W^2
L^2/W^2=fovc^2-M^2/U^2+N^2/V^2
W^2=L^2*1/(fovc^2-M^2/U^2+N^2/V^2)
W=L*1/(fovc^2-M^2/U^2+N^2/V^2)^.5
M=1;N=0;L=1
dx=.00001
[U,V]=meshgrid([dx:dx:.1],[dx:dx:.1]);
W1=L./abs((N^2./U.^2+M^2./V.^2-sqfovc1).^.5); % 1st
W2=L./abs((N^2./U.^2+M^2./V.^2-sqfovc2).^.5); % 2nd
W3=L./abs((N^2./U.^2+M^2./V.^2-sqfovc3).^.5); % 3rd
figure;hs1=surface(U,V,W1);hs1.EdgeColor='none';
grid on;xlabel('x a');ylabel('y b');zlabel('z d')
hold all
campos([0.398810314952 .483835565113 4.808026827896])
hs2=surface(U,V,W2);hs2.EdgeColor='none';
grid on;xlabel('x a');ylabel('y b');zlabel('z d')
hs3=surface(U,V,W3);hs3.EdgeColor='none';
grid on;xlabel('x a');ylabel('y b');zlabel('z d')
title(['TE' num2str(M) num2str(N) num2str(L)])
campos([0.4580064131628 .0458522614234 0.335017867182])
Now there are intersections between paired surfaces but there's not intersection of all 3 surfaces, although a few a and b values seem to have all 3 surfaces really close one another b around 0.025 and d between 0.04 and 0.05
The following 6x for loops brought MATLAB to abrupt end followed by this system message
M=[0:1:3];N=[0:1:3];L=[0:1:3] % sweep M N L
dx=.001
a=[dx:dx:.5];b=[dx:dx:.5];d=[dx:dx:.5]; % sweep a b d
log41=[0 0 0 0 0 0 0] % logging [M N L diff1 a b d]
tic
for r1=1:1:numel(M)
for r2=1:1:numel(N)
for r3=1:1:numel(L)
for k1=1:1:numel(a)
for k2=1:1:numel(b)
for k3=1:1:numel(d)
diff1=abs(fovc1^2-...
abs(M(r1)^2/a(k1)^2+...
N(r2)^2/b(k2)^2+...
L(r3)^2/d(k3)^2));
diff2=abs(fovc2^2-...
abs(M(r1)^2/a(k1)^2+...
N(r2)^2/b(k2)^2+...
L(r3)^2/d(k3)^2));
diff3=abs(fovc3^2-...
abs(M(r1)^2/a(k1)^2+...
N(r2)^2/b(k2)^2+...
L(r3)^2/d(k3)^2));
diff4=diff1+diff2+diff3;
log41=[log41;r1 r2 r3 diff4 k1 k2 k3];
end
end
end
end
end
end
toc
log41(1,:)=[]
err_trace=log41(:,4);
figure;plot(err_trace);grid on;title('err trace')
nmatch=find(err_trace==min(err_trance))
log41(nmatch,:)
The amount of loops to process is
numel(M)*numel(N)*numel(L)*numel(a)*numel(b)*numel(d)
=
8.000000000000000e+09
Wouldn’t be a large amount of time, if enough system memory available, yet the above 6 for loops remained busy for half day approximately, 12 hours, to just carry out
size(log41)
=
1261806 7
while expecting to have it all solved in a tiny fraction of those 12 hours, it had only processed
size(log41,1)/(numel(M)*numel(N)*numel(L)*numel(a)*numel(b)*numel(d))
=
1.577257500000000e-04
a tiny 1.57%
all M N L mode indices still stuck on 1. @12 hours yet k1 k2 k3 had only reached respectively 5 427 428.
Since a b d relatively short, all below 10cm, shortening a b d ranges
M=[0:1:2];N=[0:1:2];L=[1:2] % sweep M N L
dx=.001
a=[dx:dx:.1];b=[dx:dx:.1];d=[dx:dx:.1]; % sweep a b d
log41=[0 0 0 0 0 0 0]
tic
for r1=1:1:numel(M)
for r2=1:1:numel(N)
for r3=1:1:numel(L)
diff1=abs(fovc1^2-abs(M(r1)^2/A^2+N(r2)^2/B^2+L(r3)^2/D^2));
diff2=abs(fovc2^2-abs(M(r1)^2/A^2+N(r2)^2/B^2+L(r3)^2/D^2));
diff3=abs(fovc3^2-abs(M(r1)^2/A^2+N(r2)^2/B^2+L(r3)^2/D^2));
diff4=diff1+diff2+diff3;
log41=[log41;r1 r2 r3 diff4 k1 k2 k3];
end
end
end
toc
MATLAB and system memory problems. When one keys in for instance ab = rand(1e9,1) it generates a 1GByte of random data. It takes a few seconds, but there is available memory, MATLAB can handle data as long as there's available memory.
Yet, for the previous cell code in red, meshgrid fails to generate a mesh with exactly the same amount of points, 1e9, because a meshgrid for that input range needs 3 times that amount of memory. Command meshgrid returns the following error message:
Error using repmat
Out of memory. Type HELP MEMORY for your options.
Error in meshgrid (line 78)
yy = repmat(yy, 1, nx, nz);
In the following 3 lines, I can generate 2e9 zeros, but the 3rd line reaches system limitation.
A=zeros(1e3,1e3,1e3);
B=zeros(1e3,1e3,1e3);
D=zeros(1e3,1e3,1e3);
Error using zeros
Out of memory. Type HELP MEMORY for your options.
only the 3rd line fails to get in the Workspace because it's after the 1st 2 1e9 size arrays that 1e10 is reached, that is beyond max available memory
[uv sv]=memory
sv.VirtualAddressSpace
sv.SystemMemory
sv.PhysicalMemory
uv =
struct with fields:
MaxPossibleArrayBytes: 3.262234624000000e+09
MemAvailableAllArrays: 3.262234624000000e+09
MemUsedMATLAB: 1.716239155200000e+10
sv =
struct with fields:
VirtualAddressSpace: [1×1 struct]
SystemMemory: [1×1 struct]
PhysicalMemory: [1×1 struct]
=
struct with fields:
Available: 1.406657499340800e+14
Total: 1.407374882242560e+14
=
struct with fields:
Available: 3.202191360000000e+09
=
struct with fields:
Available: 6.673989632000000e+09
Total: 8.465227776000000e+09
un-ticking box MATLAB array size limit doesn't increase max possible array size, but it slightly reduces it
[uv sv]=memory
sv.VirtualAddressSpace
sv.SystemMemory
sv.PhysicalMemory
uv =
struct with fields:
MaxPossibleArrayBytes: 3.187789824000000e+09
MemAvailableAllArrays: 3.187789824000000e+09
MemUsedMATLAB: 1.717264793600000e+10
sv =
struct with fields:
VirtualAddressSpace: [1×1 struct]
SystemMemory: [1×1 struct]
PhysicalMemory: [1×1 struct]
ans =
struct with fields:
Available: 1.406657499340800e+14
Total: 1.407374882242560e+14
ans =
struct with fields:
Available: 3.187789824000000e+09
ans =
struct with fields:
Available: 6.698483712000000e+09
Total: 8.465227776000000e+09
the core problem being MORE RAM NEEDED: different department.
So let's find a way around by focussing on what points in space define more than one resonant frequency by sweeping all values of a b d.
The following cell sweeps all values of a b d, calculates the difference between each measured frequency, and the resonant frequency that such particular dimensions would generate, then it select the minimum of each mode, the dimensions a b d of each particular mode that cause closest resonance to those 3 measured frequencies, and it finds common a b d values, as what dimensions resonate at all 3 measured frequencies in f0.
M=[0:1:3];N=[0:1:3];L=[1:3] % sweep M N L
dx=.001
a=[.005:dx:.06];b=[.005:dx:.06];d=[.005:dx:.06]; % sweep a b d
[A,B,D]=meshgrid(a,b,d);
log40(1).mnl=[0 0 0] % log, not for logarithm, but as in logging
log40(1).nmin1={}
log40(1).nmin2={}
log40(1).nmin3={}
log40(1).intersect={}
log40(1).valmin1=[]
log40(1).valmin2=[]
log40(1).valmin3=[]
nlog=1
for r1=1:1:numel(M)
for r2=1:1:numel(N)
for r3=1:1:numel(L)
Diff1=abs(sqfovc1^2-abs(M(r1)^2/A.^2+N(r2)^2/B.^2+L(r3)^2/D.^2));
Diff2=abs(sqfovc2^2-abs(M(r1)^2/A.^2+N(r2)^2/B.^2+L(r3)^2/D.^2));
Diff3=abs(sqfovc3^2-abs(M(r1)^2/A.^2+N(r2)^2/B.^2+L(r3)^2/D.^2));
log40(nlog).mnl=[r1 r2 r3];
nv1=find(Diff1==min(min(Diff1))) % only log min diff locations
nv2=find(Diff2==min(Diff2(:)))
nv3=find(Diff3==min(Diff3(:)))
nint=intersect(intersect(nv1,nv2),nv3)
nint(1)=[]
log40(nlog).intersect=nintlog40(nlog).nmin1=nv1
log40(nlog).nmin2=nv2
log40(nlog).nmin3=nv3
log40(nlog).valmin1=min(Diff1(:)) % log min values
log40(nlog).valmin2=min(Diff2(:))
log40(nlog).valmin3=min(Diff3(:))
nlog=nlog+1
end
end
end
So out of the following amount of checked modes
size(log40)
= 1 49
Only 42% showed a b d values causing resonance close to the 3 measured frequencies.
intersect_modes=[]
for k=1:1:size(log40,2)
if ~isempty(log40(k).intersect)
intersect_modes=[intersect_modes k]
end
end
length(intersect_modes)/size(log40,2)
intersect_modes =
1 2 3 4 5 6 7 8 9 10 11 12 13
14 15 25 26 27 37 38 39
= 0.437500000000000
May be some of a b d found values do not cause a resonance sharp enough, Q not high enough, but the following modes, in each mode, there's one or more than one set [a b d] that cause resonance close to all 3 frequencies measured:
res_modes_mnl=[0 0 0]
for k=1:1:numel(intersect_modes)
res_modes_mnl=[res_modes_mnl; log40(intersect_modes(k)).mnl]
end
res_modes_mnl(1,:)=[]
res_modes_mnl =
0 0 1
0 0 2
0 0 3
0 1 1
0 1 2
0 1 3
0 2 1
0 2 2
0 2 3
0 3 1
0 3 2
0 3 3
1 0 1
1 0 2
1 0 3
2 0 1
2 0 2
2 0 3
3 0 1
3 0 2
3 0 3
Here is where
fc=@(u,v,w) c0/(2*(er*mur)^.5)*(abs(M(r1)^2./u.^2.+N(r2)^2./v.^2.+L(r3)^2./w.^2)).^.5
May come handy to, knowing what modes to apply, and what frequencies to use, now look for a b d. It may be the case that more than one set of [a b d] may apply.
Since meshgrid triples the amount of points, thus tripling the amount of memory to process a given matrix, I have considered working with the points directly, as follows:
dx=.0001
a=[dx:dx:.06];b=[dx:dx:.06];d=[dx:dx:.05]; % sweep a b d
[A,B,D]=meshgrid(a,b,d);
P=[D(:) A(:) B(:)]; % [vt1,vt2,vt3]=mesgrid([1:3],[1:3],[1:3]) then [vt3(:) vt1(:) vt2(:)] gives logic index ascending progression
log41(1).mnl=[0 0 0]
log41(1).a1=0 % a values producing resonance at f0(1)
log41(1).a2=0
log41(1).a3=0
log41(1).b1=0 % b values producing resonance at f0(1)
log41(1).b2=0
log41(1).b3=0
log41(1).d1=0 % d values producing resonance at f0(1)
log41(1).d2=0
log41(1).d3=0
log41(1).int=0
nx=[1:1:size(P,1)];
nlog=1
th_low=.99 % .999 causes ALL null results and excessive delay
th_high=1.01
for r1=1:1:numel(M)
for r2=1:1:numel(N)
for r3=1:1:numel(L)
log41(nlog).mnl=[r1 r2 r3]
sqFc0=abs(M(r1)^2./P(:,1).^2.+N(r2)^2./P(:,2).^2.+L(r3)^2./P(:,3).^2);
% resonant frequencies within [.9*fc(1) 1.1*fc(1)]
Lq1=sqFc0<th_high*sqfovc(1) & sqFc0>th_low*sqfovc(1);
nv1=find(Lq1>0);
% resonant frequencies within [.9*fc(2) 1.1*fc(2)]
Lq2=sqFc0<th_high*sqfovc(2) & sqFc0>th_low*sqfovc(2);
nv2=find(Lq2>0);
% resonant frequencies within [.9*fc(3) 1.1*fc(3)]
Lq3=sqFc0<th_high*sqfovc(3) & sqFc0>th_low*sqfovc(3);
nv3=find(Lq3>0);
log41(nlog).a1=P(nv1,1);
log41(nlog).a2=P(nv2,1);
log41(nlog).a3=P(nv3,1);
log41(nlog).b1=P(nv1,2);
log41(nlog).b2=P(nv2,2);
log41(nlog).b3=P(nv3,2);
log41(nlog).d1=P(nv1,3);
log41(nlog).d2=P(nv2,3);
log41(nlog).d3=P(nv3,3);
log41(nlog).int=intersect(intersect(nv1,nv2),nv3)
nlog=nlog+1
end
end
end
save log41.mat log41 trace_a1 trace_a2 trace_a3 trace_b1 trace_b2 trace_b3 trace_d1 trace_d2 trace_d
The above for loops retrieve out of the complete list of points, those values of a b d that minimise frequency distance to each frequency in f0 .
% a
trace_a1=0
for k=1:1:sz2
L01=log41(k).a1';
trace_a1=cat(2,trace_a1,L01);
end
trace_a1(1)=[]
trace_a2=0
for k=1:1:sz2
L02=log41(k).a2';
trace_a2=cat(2,trace_a2,L02);
end
trace_a2(1)=[]
trace_a3=0
for k=1:1:sz2
L03=log41(k).a3';
trace_a3=cat(2,trace_a3,L03);
end
trace_a3(1)=[]
figure;hst1=histogram(trace_a1);grid on
title('hist(a) for f0(1)=6.5GHz')
figure;hst2=histogram(trace_a2);grid on
title('hist(a) for f0(2)=6.5GHz')
figure;hst3=histogram(trace_a3);grid on
title('hist(a) for f0(2)=7.2GHz')
% b
trace_b1=0
for k=1:1:sz2
L01=log41(k).b1';
trace_b1=cat(2,trace_b1,L01);
end
trace_b1(1)=[]
trace_b2=0
for k=1:1:sz2
L02=log41(k).b2';
trace_b2=cat(2,trace_b2,L02);
end
trace_b2(1)=[]
trace_b3=0
for k=1:1:sz2
L03=log41(k).b3';
trace_b3=cat(2,trace_b3,L03);
end
trace_b3(1)=[]
figure;hst1=histogram(trace_b1);grid on
title('hist(b) for f0(1)=6.5GHz')
% hold on
figure;hst2=histogram(trace_b2);grid on
title('hist(b) for f0(2)=6.5GHz')
figure;hst3=histogram(trace_b3);grid on
title('hist(b) for f0(2)=7.2GHz')
% d
trace_d1=0
for k=1:1:sz2
L01=log41(k).d1';
trace_d1=cat(2,trace_d1,L01);
end
trace_d1(1)=[]
trace_d2=0
for k=1:1:sz2
L02=log41(k).d2';
trace_d2=cat(2,trace_d2,L02);
end
trace_d2(1)=[]
trace_d3=0
for k=1:1:sz2
L03=log41(k).d3';
trace_d3=cat(2,trace_d3,L03);
end
trace_d3(1)=[]
hf51=figure;ax51=gca;
hst7=histogram(ax51,trace_d1);grid on
title(ax51,'hist(d) for f0(1)=6.5GHz')
hf52=figure;ax52=gca;
hst8=histogram(ax52,trace_d2);grid on
title(ax52,'hist(d) for f0(2)=6.5GHz')
hf53=figure;ax53=gca;
hst9=histogram(ax53,trace_d3);grid on
title(ax53,'hist(d) for f0(2)=7.2GHz')
structure log41 and variables used for histograms saved in supplied .mat file.
save log41.mat log41 trace_a1 trace_a2 trace_a3 trace_b1 trace_b2 trace_b3 trace_d1 trace_d2 trace_d3
When looking for common values across frequencies
% overlapped a traces
hf33=figure;ax33=gca
hst1=histogram(ax33,trace_a1);grid on
hold on
hst2=histogram(ax33,trace_a2);
hst3=histogram(ax33,trace_a3);
hst1.EdgeColor='none'
hst2.EdgeColor='none'
hst3.EdgeColor='none'
title(ax33,'a overlap')
% overlapped b traces
hf43=figure;ax43=gca
hst4=histogram(ax43,trace_b1);grid on
hold on
hst5=histogram(ax43,trace_b2);
hst6=histogram(ax43,trace_b3);
hst4.EdgeColor='none'
hst5.EdgeColor='none'
hst6.EdgeColor='none'
title(ax43,'b overlap')
% overlapped d traces
hf53=figure;ax53=gca
hst7=histogram(ax53,trace_d1);grid on
hold on
hst8=histogram(ax53,trace_d2);
hst9=histogram(ax53,trace_d3);
hst7.EdgeColor='none'
hst8.EdgeColor='none'
hst9.EdgeColor='none'
title(ax53,'d overlap')
There is no such magic overlap that one can readily tell that such dimension has a prefect resonance behaviour on all components of f0 measurements.
Alternatively one can cut the cavity to a size that is exactly at multiples of all paired wavelengths, let's say a and b perfectly resonating on 2 of the 3 frequencies in f0, and b and d resonating at another pair of f0 frequencies, because a and b are such as
a=N1*L1=N2*L2=b
a=N1*L1=N3*L3=d
L1=lambda0(1)/2; L2=lambda0(2)/2; L3=lambda0(3)/2;
and the signal should have at least one TE_nm0 mode and one TE_n0L to resonate along a b direction, and along a d direction.
lambda0=c0./f0
lambda0=floor(1e4*lambda0)*1e-4
lambda_mm10=round(lambda0*1e4)
L1=lambda_mm10(1)
L2=lambda_mm10(2)
L3=lambda_mm10(3)
L1/L2
L1/L3
L2/L3
rat(L2/L3)
rat(L1/L2)
rat(L1/L3)
rats(L2/L3)
rats(L1/L2)
rats(L1/L3)
[N_L12,D_L12]=rat(L1/L2)
[N_L23,D_L23]=rat(L2/L3)
[N_L13,D_L13]=rat(L1/L3)
these lengths are in 10th of millimetre.
lambda0 =
0.057460112692308 0.045968090153846 0.041498970277778
lambda0 =
0.057400000000000 0.045900000000000 0.041400000000000
lambda_mm10 =
574 459 414
L1 =
574
L2 =
459
L3 =
414
=
1.250544662309368
=
1.386473429951691
=
1.108695652173913
=
'1 + 1/(9 + 1/(5))'
=
'1 + 1/(4 + 1/(-115))'
=
'1 + 1/(3 + 1/(-2 + 1/(-2 + 1/(-3 + 1/(5)))))'
=
' 51/46 '
=
' 574/459 '
=
' 287/207 '
N_L12 = 574
D_L12 = 459
N_L23 = 51
D_L23 = 46
N_L13 = 287
D_L13 = 207