投稿者:島村1243
投稿日:2020年 2月27日(木)10時10分17秒
|
|
|
十進BASIC-v7.8.5.4インストーラ版を、Windows2000(32bit)とWindowsXP(32bit)にインストールして使用しています。
PLOT LINES で黒の横軸線を1本引いた後に、黒曲線と赤曲線を描き終わりました。
それに続けて、set line colorで緑を設定し緑の曲線を描いたら、前に描いた黒の横軸線1本の色が緑に変化しました。横軸線は2度書きしていません。プログラムを下記に示しますが、BASICの仕様でしょうか? 状況はどちらのOS上でも同じで、Linux版32bitのv8.0.1.5も同様です。
OPTION ARITHMETIC COMPLEX
!*** 計算条件の入力 ***********
LET Hz =1 !描画する電源のサイクル数[Hz]
LET f = 50 !電源周波数[Hz]
LET V=1 !電源電圧[p.u] v=Vcos(wt+fai)
LET fai=45 !電源投入位相角[度]
LET R=10 !抵抗[Ω]
LET L=0.5 !インダクタンス[H]
LET C=4.946E-4 !コンデンサ静電容量[F]
LET bunkatu =1000 !1[Hz]の分割数設定
!*** ここまで ****************
!*** 諸量内部算出
LET j=SQR(-1)
LET w=2*PI*f
LET fai = RAD(fai)
LET dt =1/f/bunkatu !計算微分時間[秒]を設定
LET Nmax=Hz*bunkatu !計算点数
SET WINDOW 0,Nmax,-1.8,1.8
LET Zst=SQR(R^2+(w*L-1/w/C)^2)
LET Ist=V/Zst
LET alfa = -R / 2 /L
LET beta = SQR(1/C /L - alfa^2)
LET delta1=alfa+j*beta
LET delta2=alfa-j*beta
LET K1 =delta1/(delta1-delta2)/(delta1-j*w)
LET K2 =delta2/(delta2-delta1)/(delta2-j*w)
LET K3 =j*w/(j*w-delta1)/(j*w-delta2)
LET H1 =delta1/(delta1-j*w)/(delta1-delta2)
LET H2 =delta2/(delta2-j*w)/(delta2-delta1)
LET H3 =j*w/(j*w-delta1)/(j*w-delta2)
LET ipu_=0
LET Hipu_=0
LET vpu_=V*COS(fai)
LET ten_=0
SET LINE COLOR "black"
PLOT LINES:0,0;Nmax,0 !<---横軸線を黒で描画
FOR n=0 TO Nmax
LET ten=n
LET t = n * dt
LET wt=w*t
LET i1 =K1* EXP(delta1*t)
LET i2 =K2* EXP(delta2*t)
LET i3 =K3*EXP(j*wt)
LET i = EXP(j*fai)*V/L*(i1 +i2 + i3)
LET ipu=Re(i)/Ist
LET vpu=V*COS(wt+fai)
!*** 電圧・電流描画指示 ***
SET LINE COLOR "black"
PLOT LINES: ten_,vpu_;ten,vpu !電源電圧波形
SET LINE COLOR "red"
PLOT LINES: ten_,ipu_;ten,ipu !電流波形
LET ten_=ten
LET ipu_=ipu
LET vpu_=vpu
NEXT N
PRINT "【2】電源電圧曲線と実電流曲線を描きました。"
PRINT "黒色曲線は印加した電源電圧の波形です。"
pause "この描画を保持し、演算子法に基づく実電流の厳密解曲線も描きますか?"
FOR n=0 TO Nmax
LET ten=n
LET t = n * dt
LET wt=w*t
LET Hi1 =H1* EXP(delta1*t)
LET Hi2 =H2* EXP(delta2*t)
LET Hi3 =H3*EXP(j*wt)
LET Hi = EXP(j*fai)*V/L*(Hi1 +Hi2 + Hi3)
LET Hipu=Re(Hi)/Ist
!*** 電流描画指示 ***
SET LINE COLOR "green"
PLOT LINES: ten_,Hipu_;ten,Hipu !電流波形
LET ten_=ten
LET Hipu_=Hipu
NEXT N
PRINT "緑色曲線は変換法による実電流波形です。"
END
|
|
|
投稿者:SHIRAISHI Kazuo
投稿日:2020年 2月27日(木)13時01分32秒
|
|
|
SET LINE COLOR "green"
と
PLOT LINES: ten_,Hipu_;ten,Hipu !電流波形
の間に
PRINT ten_,Hipu_,ten,Hipu
を挿入して調べてみると
最初の行が
1000 0 0 1.04170364486623E-16
となるので,正しく動作していると思います。
(前のten_が残っているのが原因)
PLOT POINTSを使って
SET LINE COLOR "black"
PLOT LINES:0,0;Nmax,0 !<---横軸線を黒で描画
SET POINT STYLE 1
FOR n=0 TO Nmax
LET ten=n
LET t = n * dt
LET wt=w*t
LET i1 =K1* EXP(delta1*t)
LET i2 =K2* EXP(delta2*t)
LET i3 =K3*EXP(j*wt)
LET i = EXP(j*fai)*V/L*(i1 +i2 + i3)
LET ipu=Re(i)/Ist
LET vpu=V*COS(wt+fai)
!*** 電圧・電流描画指示 ***
SET POINT COLOR "black"
PLOT POINTS: ten,vpu !電源電圧波形
SET POINT COLOR "red"
PLOT POINTS:ten,ipu !電流波形
NEXT N
PRINT "【2】電源電圧曲線と実電流曲線を描きました。"
PRINT "黒色曲線は印加した電源電圧の波形です。"
pause "この描画を保持し、演算子法に基づく実電流の厳密解曲線も描きますか?"
FOR n=0 TO Nmax
LET ten=n
LET t = n * dt
LET wt=w*t
LET Hi1 =H1* EXP(delta1*t)
LET Hi2 =H2* EXP(delta2*t)
LET Hi3 =H3*EXP(j*wt)
LET Hi = EXP(j*fai)*V/L*(Hi1 +Hi2 + Hi3)
LET Hipu=Re(Hi)/Ist
!*** 電流描画指示 ***
SET POINT COLOR "green"
PLOT POINTS: ten,Hipu !電流波形
NEXT N
PRINT "緑色曲線は変換法による実電流波形です。"
としたほうがアルゴリズム的に簡潔に書けると思います。
http://hp.vector.co.jp/authors/VA008683/
|
|
|
投稿者:島村1243
投稿日:2020年 2月27日(木)14時43分19秒
|
|
|
> No.4808[元記事へ]
SHIRAISHI Kazuo 先生へのお返事です。
> (前のten_が残っているのが原因)
先生のご回答を読み、下記のようにLET ten_=0を追加したら、正常になりました。
pause "この描画を保持し、・・・描きますか?"
LET ten_=0 <---これを追加した。
FOR n=0 TO Nmax
以下省略
素早いご回答・ご教示を賜り有難う御座いました。
|
|
|
戻る