|
白石様 山中様 いつも御指導を頂き有難うございます。大熊です。
下記のごときプログラムを作り、山中様の回答を別解でなぞってみました。
答えは一致していると思ってます。
10進BASICは、マトリクスと複素数の計算が簡単に出来、初学修者にはとても
便利だと言うことを実感しています。
敬具
10 OPTION ARITHMETIC COMPLEX
LET j=SQR(-1)
OPTION BASE 1
OPTION ANGLE DEGREES
DIM FREQ(100,5)
LET FREQ(1,1)=10
LET FREQ(2,1)=12.25
LET FREQ(3,1)=15
LET FREQ(4,1)=17.32
LET FREQ(5,1)=20
LET FREQ(6,1)=24.5
LET FREQ(7,1)=30
LET FREQ(8,1)=34.6
LET FREQ(9,1)=40
LET FREQ(10,1)=50
LET FREQ(11,1)=60
LET FREQ(12,1)=70
LET FREQ(13,1)=80
LET FREQ(14,1)=90
FOR I=1 TO 14
LET P=I
LET FREQ(I,1)=FREQ(P,1)
NEXT I
FOR I=15 TO 28
LET P=I-14
LET FREQ(I,1)=FREQ(P,1)*10
NEXT I
FOR I=29 TO 42
LET P=I-28
LET FREQ(I,1)=FREQ(P,1)*100
NEXT I
FOR I=43 TO 56
LET P=I-42
LET FREQ(I,1)=FREQ(P,1)*1000
NEXT I
LET FREQ(57,1)=100000
! FOR I=1 TO 57
! PRINT "FREQ(";I;",1)=";FREQ(I,1)
! NEXT I
! ┌─C2─┬──────┐ 「注意」
! │ │ ┌──┐ │ 山中さんの回路と1番
! │ └─┤- │ │ 端子番号が
! │ │ K├─⑤─小さくなってます。
! ┌─①─R1─②─R2─③─R3─④─┤+ │ ↑ V5
! ↑ ↑V1 ↑V2 ↑V3 ↑V4└──┘ │
! Is Rs C1 C3 │
! ↑ │ │ │ │
! ┴─0───┴───────┴──────┴─
! │
! ≡アース
! GND=0 !アース
! V1=1V !入力端子① Rs=0.1オームに定電流源Is から10A流して1Vとする。
! V5=⑤ !出力端子⑤ V5=K*V4
20 ! CR 3段回路
LET FF=1000 !Fの単位はヘルツ
LET R1=51000 !Rの単位はオーム
LET R2=82000
LET R3=39000
LET C1=0.00685/(10^6) !Cの単位はuF,
LET C2=0.022/(10^6) !Cの単位はuF,
LET C3=330/(10^12) !Cの単位はPF,
LET Y1=(2*PI*FF*C1) !Yの単位はモー
LET Y2=(2*PI*FF*C2)
LET Y3=(2*PI*FF*C3)
LET ω=(2*PI*FF)
LET Rs=0.1 !Rsの単位はオーム ①とアースに入れる。
LET IS=10 !Isの単位はアムペア Rsに加わる電流源で①とアースを1Vにする。
LET NP=4
DIM A(NP,NP)
DIM T(NP,NP)
DIM EOUT(NP,1)
DIM B(NP,1)
LET K=1
!*********** データーと計算方法*****************
!方法-1
! ミルマンの定理やキルヒホッフの法則なぞを多用、直接解く。
!方法-2
! 回路の①端子とアース間に0.1オームの抵抗、アドミッタンスGsをわざとつける。
! 電流源 10A を入力にして①端子とアース間の(Gs)に加えて V1を約 1Vとする。
! 以下は、想定の回路につなげ、端子間のアドミッタンスを考え節点方程式を作る。
! ①ー②にR1,②ー③にR2,②ーアースに容量C1,③ー④にR3,④ーアースに容量C3
! C3の電圧V4を増幅器に入力。⑤にはV5=K*V4の電圧がでる。
! ③に増幅器の出力V5を、⑤から容量C2で ③に正帰還,・・・ V5=K*V4
! ②端子の電圧をV2,③端子の電圧をV3,④端子の電圧をV4,⑤端子の電圧をV5
! 総てアドミッタンスで計算。
! ①①,②②,③③,④④等 Gij(i=j)はその節点に接続されるアドミッタンスの和
! ①-②, ②-③ 等 Gij(i?j)は接続されてるアドミッタンスに-1を掛けて代入。
! Ampを除き、要素のみを考えると対称行列になり,ノードの数が行列の大きさ。
! 行列は 5x5 だが V5=K*V4 を考えA(3,4)=-(1/R3)に A(3,5)=-ω*C2*jを加える
! Kは A(3,4)=-(1/R3)-K*ω*C2*j増幅器の出力 E5=K*E4の関係を入れA(3,5)を消す
! 一方 A(4,3)=-(1/R3) とし非対称とした。A(4,3)=A(3,4)では不具合であった
! 最終の行列は 4x4 の非対称に成るが、Kが直接指定できる利点があるようだ。
! 結果はKの値に敏感で K=0.9875~1.0125までで、K=1 が最適。K= 1.0125でピーク
!方法-3
!文献や投稿を参照
!***********************方法-2の計算 今回はこれで挑戦*****************
FOR K=0.9875 TO 1.0125 STEP 0.0125 !KはAMPのゲイン。
FOR P=1 TO 57
LET FF=FREQ(P,1)
LET ω=(2*PI*FF)
LET A(1,1)=(1/Rs)+(1/R1) !①①端子のアドミタンスの合計
LET A(1,2)=-(1/R1) !①②端子のアドミタンスの -1
LET A(1,3)=0
LET A(1,4)=0
LET A(2,1)=-(1/R1)
LET A(2,2)=(1/R1)+(1/R2)+ω*C1*j !②②端子のアドミタンスの合計
LET A(2,3)=-(1/R2)
LET A(2,4)=0
LET A(3,1)=0
LET A(3,2)=-(1/R2)
LET A(3,3)=(1/R2)+(1/R3)+ω*C2*j !③③端子のアドミタンスの合計
LET A(3,4)=-(1/R3)-K*ω*C2*j !ここにKの値を入れ V5=K*V4 を反映。
!ミルマンの定理を適用。
LET A(4,1)=0
LET A(4,2)=0
LET A(4,3)=-(1/R3) !A(3,4)とは値が異なる。
LET A(4,4)=(1/R3)+ω*C3*j !④④端子のアドミタンスの合計
LET B(1,1)=10 ! 電流源から10Aを流している。①端子は1Vになる。
LET B(2,1)=0 ! キルヒホッフの法則から ゼロである。
LET B(3,1)=0 ! キルヒホッフの法則から ゼロである。
LET B(4,1)=0 ! キルヒホッフの法則から ゼロである。
MAT T=INV(A)
MAT EOUT=T*B
! PRINT "FF=";FF
! MAT PRINT EOUT
LET EE1=EOUT(1,1)
LET EE2=EOUT(2,1)
LET EE3=EOUT(3,1)
LET EE4=EOUT(4,1)
LET EE5=K*EOUT(4,1)
PRINT
LET FREQ(P,2)=20*LOG10(ABS(EE5))
! LET FREQ(P,3)=20*LOG10(ABS(EE3))
LET G5=(ATN(IM(EE5)/RE(EE5)))
IF FF>750 THEN LET G5=G5-180
IF G5>0 THEN LET G5=G5-180
LET FREQ(P,4)=G5
! LET G3=(ATN(IM(EE3)/RE(EE3)))
! IF FF>750 THEN LET G3=G3-180
! LET FREQ(P,5)=G3
NEXT P
PRINT "K=";K
PRINT "番号 周波数 E5 E3 θ5 θ3"
FOR I=1 TO 57
PRINT USING "###": I;
PRINT USING " ###,###.#" : FREQ(I,1);
PRINT USING " ####.### dB": FREQ(I,2);
PRINT USING " ####.### dB": FREQ(I,3);
PRINT USING " ####.### 度": FREQ(I,4);
PRINT USING " ####.### 度": FREQ(I,5)
NEXT I
!ここからは、山中様のグラフプログラムを参照。
SET WINDOW 0.5,5.5, -55,5 !表示領域
DRAW grid(1,5) !左端の目盛り
FOR f=1 TO 6 !x軸が対数目盛 f=1 TO 5 で100k まで目盛る。
SET COLOR 1 !1は黒色
PLOT TEXT ,AT f-0.1,+0.15: mid$("10 100 1k 10k 100k ",4*(f-1)+1,4)
NEXT f
FOR f=1 TO 6 !y軸が直線目盛り
SET COLOR 1 !1は黒色
PLOT TEXT ,AT 0.8,-10*(f-1)-2: mid$(" 0 -25 -50 -75 -100-125 ",4*(f-1)+1,4)
NEXT f
FOR I=1 TO 57 STEP 1 !周波数[Hz]
SET COLOR 1
PLOT LINES:LOG10(FREQ(I,1)) ,FREQ(I,2)/2.5; !利得[dB]
NEXT I
PLOT LINES
! FOR I=1 TO 57 STEP 1 !周波数[Hz]
! SET COLOR 5 !5は水色
! PLOT LINES: LOG10(FREQ(I,1)) ,FREQ(I,3)/2; !利得[dB]
! NEXT I
! PLOT LINES
FOR I=1 TO 57 STEP 1 !位相角度[度]
SET COLOR 4 !4は赤色
PLOT LINES:LOG10(FREQ(I,1)) ,0.125*FREQ(I,4); !角度[度]
NEXT I
PLOT LINES
! FOR I=1 TO 57 STEP 1 !位相角度[度]
! SET COLOR 3 !3は緑色
! PLOT LINES:LOG10(FREQ(I,1)) ,0.25*FREQ(I,5); !角度[度]
! NEXT I
! PLOT LINES
FOR f=1 TO 6 !y軸が直線目盛り
SET COLOR 4
PLOT TEXT ,AT 5.1,-10*(f-1)-2: mid$(" 0 -80 -160-240-320-400 ",4*(f-1)+1,4)
NEXT f
PRINT
NEXT K ! ここで,利得 Kを変化させる。
!*******************************************************************
!100 LET FF=1000
! PRINT 1/R1
! PRINT 1/R2
! PRINT 1/R3
! PRINT Y1
! PRINT Y2
! PRINT Y3
! FOR I=1 TO NP ! 白石様の御助言を参照。マトリクスのチェックをした。
! FOR J=1 TO NP
! LET Z=A(I,J)
! PRINT USING "(##.######### ":RE(Z);
! PRINT USING "##.#########) ":IM(Z);
! NEXT J
! PRINT
! NEXT I
!**********************************************************************
END
|
|