ファイル「OpenOfficeCalc_9.ods」の変更
(1)ファイル「OpenOfficeCalc_9.ods」をダブルクリックで起動します。
(2)メニューの「ツール」_「マクロ」_「マクロの管理」_「OpenOffice Basic」を選択します。
(3)OpenOffice Basic マクロダイアログで「 OpenOfficeのマクロ」_「 OpenOfficeCalc_9.ods 」を選択します。
(4)「新規作成」ボタンを押します。
(5)新しいモジュールダイアログで名前を「Module1」のまま「OK」ボタンを押します。
(6) OpenOfficeBasicのIEDウインドウが開きます。
(7) 以下のプログラムコードを書き込みます。
Sub Main
sh1 =ThisComponent.getSheets.getByName ("Sheet1")
'初期入力
N=sh1.getCellByPosition( 2,4).Value
dR=sh1.getCellByPosition( 2,5).Value
dS=sh1.getCellByPosition( 2,6).Value
R=sh1.getCellByPosition( 2,7).Value
S=sh1.getCellByPosition( 2,8).Value
'初期出力
sh1.getCellByPosition( 0,36).Value=0
sh1.getCellByPosition( 1,36).Value=R
sh1.getCellByPosition( 2,36).Value=S
'繰り返し演算
For i = 1 To N Step 1
f0=sh1.getCellByPosition( 2,32).Value
g0=sh1.getCellByPosition( 2,33).Value
sh1.getCellByPosition( 2,7).Value=R - dR
frm=sh1.getCellByPosition( 2,32).Value
grm=sh1.getCellByPosition( 2,33).Value
sh1.getCellByPosition( 2,7).Value=R + dR
frp=sh1.getCellByPosition( 2,32).Value
grp=sh1.getCellByPosition( 2,33).Value
sh1.getCellByPosition( 2,7).Value=R
sh1.getCellByPosition( 2,8).Value=S-dS
fsm=sh1.getCellByPosition( 2,32).Value
gsm=sh1.getCellByPosition( 2,33).Value
sh1.getCellByPosition( 2,8).Value=S+dS
fsp=sh1.getCellByPosition( 2,32).Value
gsp=sh1.getCellByPosition( 2,33).Value
'偏微分値の算出
fr = (frp - frm) / (2 * dR)
gr = (grp - grm) / (2 * dR)
fs = (fsp - fsm) / (2 * dS)
gs = (gsp - gsm) / (2 * dS)
'次のRとS(Θ)値を算出
R = R - (f0 * gs - g0 * fs) / (fr * gs - fs * gr)
S = S - (fr * g0 - f0 * gr) / (fr * gs - fs * gr)
'次のRとS(Θ)値を設定
sh1.getCellByPosition( 2,7).Value=R
sh1.getCellByPosition( 2,8).Value=S
'次のRとS(Θ)値を出力
sh1.getCellByPosition( 0,36+i).Value=i
sh1.getCellByPosition( 1,36+i).Value=R
sh1.getCellByPosition( 2,36+i).Value=S
Next i
End Sub
(8)メニューの「表示」_「ツールバー」_「フォームコントロール」を選択します。
(9)フォームコントロールダイアログの「デザインモードオン/オフ」ボタンでオン状態にします。
(10)ボタン上でマウスを右クリックし、「コントロール」を選択します。
(11)「属性 プッシュボタン」の「イベント」タブの「実行時」の右端のボタンをクリックします。
(12)現われた「アクションの割り当て」の「実行時」を選択し、「マクロ」ボタンを押します。
(13)「マクロセレクター」の「OpenOfficeCalc_9.ods」_「Standard」_「Module1」_「Main」
を選択して「OK」ボタンを押します。
(14) 「アクションの割り当て」の「OK」ボタンを押します。
(15) 「属性 プッシュボタン」を閉じます。
(16)フォームコントロールダイアログの「デザインモードオン/オフ」ボタンでオフ状態にします。
(オフ状態でないと動作しません!!)
(17)フォームコントロールダイアログを閉じます。
(18)「計算実行」ボタンを押します。
(19)R=1→1.12425994614029、Θ=1→0.927441814446686に変化します。
(20)上記の結果は6次方程式
A6*X^6+ A5*X^5+ A4*X^4+ A3*X^3+ A2*X^2+ A1*X+A0=0 が
(X-C)*(B5*X^5+ B4*X^4+ B3*X^3+ B2*X^2+ B1*X+B0)=0
に変換出来たことを意味します。
すなわち6次方程式は1つの複素数の解と5次方程式に変換できます。
(21)同様に5次方程式は1つの複素数の解と4次方程式に変換できます。
(22)最終的には以下6個の複素数解を得ることができます。
C1 | 0.674424110427214+0.899506834754372i |
C2 | -0.0784236791913897-0.596907248451527i |
C3 | -0.125439481517976+0.612333790442077i |
C4 | -0.52671166229616-0.244666810796106i |
C5 | 0.261135596325401-0.850009597794161i |
C6 | -3.20498488374709+1.67974303184535i |
(23)メニュー「ファイル」_「保存」を選択します。