目次

数列での活用

 数列は、数字の羅列になっています。



 規則性を持った数字の羅列には、どんな
 性質があるのかを見てみます。

 初項1、公差2、項数128の等差数列を
 作って、グラフを描いてみます。

 マクロを使わないで実現すると、次の操作を
 すればよいでしょう。
  1. セルB2に、1を設定
  2. セルB3に、数式「B2+1」を設定
  3. セルB3の内容をセルB4からB129にコピー
  4. セルC2に、初項1を設定
  5. セルC3に、数式「C2+2」を設定
  6. セルC3の内容をセルC4からC129にコピー
  7. B列をx軸、C列をy軸として、折れ線グラフ描画
  8. B列をx軸、C列をy軸として、積重ねグラフ描画
 画面は、以下のようになります。  これは、等差数列の例ですが、グラフで  見ると、直線を描く式を扱っているとの  理解ができます。  初項、公差を変えて、グラフ描画すると  どうなるのかを、マクロで実験してみる  としましょう。  パラメータは、初項、公差なので、この  2パラメータを格納するセルを決めて  おきます。  初項 $B$1  公差 $C$1  セルを絶対指定するので、行と列の前に$を付加。  等差数列を求めるセルは、C列になっているので  次のように式を書いて格納。  C2 // =$B$1  C3 // =C2+$C$1  変化させるのは、初項、公差だけなので  C2には、$B$1を絶対指定します。  漸化式の方は、公差だけを絶対指定。  マクロで再計算させるためには、セル$B$1、$C$1に  格納する値を利用し、計算式をコピーするのが簡単。  項数を指定すれば、一般項の計算式を利用して  計算結果をC列に格納するだけになります。  ワークシートで各値を入力するセルを指定。  各値を格納するセル位置を次のように決めます。  等差数列の一般項は、次式で導けます。  第2項、第3項がどういう値になるのかを  計算するのは、マクロの役目。  マクロは、次のようにまとめられます。 Dim objS As Object Dim a1 As Integer Dim d As Integer Dim n As Integer Dim i As Integer Dim a As Integer ' ' get Values from worksheet cells ' ' LibreOffice Calc objS = ThisComponent.CurrentController.ActiveSheet a1 = objS.getCellRangeByName("B1").Value d = objS.getCellRangeByName("C1").Value n = objS.getCellRangeByName("E1").Value ' calculate ' a = a1 for i = 1 to n a = a + d next i ' store objS.getCellRangeByName("C2").Value = a  このマクロでは、結果を$C$2に格納するとしています。  使ってみると、以下となります。  等比数列を扱ってみます。  等比数列は、等差数列の公差を、公比にかえて  加算を乗算に変えたと考えます。  差が比になるだけなので、マクロでは記号が  「+」から「*」になるだけ。 Dim objS As Object Dim a1 As Integer Dim r As Integer Dim n As Integer Dim i As Integer Dim a As Integer ' ' get Values from worksheet cells ' ' LibreOffice Calc objS = ThisComponent.CurrentController.ActiveSheet a1 = objS.getCellRangeByName("B1").Value r = objS.getCellRangeByName("C1").Value n = objS.getCellRangeByName("E1").Value ' calculate ' a = a1 for i = 1 to n a = a * r next i ' store objS.getCellRangeByName("C2").Value = a  ただし、これだけでは、不十分です。  初項、公比が0では、何も起きないので  0でない値を入れるように、チェックを  入れます。  初項、公比を入力したなら、ともに0でないことを  確認してから、計算します。 Dim objS As Object Dim a1 As Integer Dim r As Integer Dim n As Integer Dim i As Integer Dim a As Integer ' ' get Values from worksheet cells ' ' LibreOffice Calc objS = ThisComponent.CurrentController.ActiveSheet a1 = objS.getCellRangeByName("B1").Value r = objS.getCellRangeByName("C1").Value n = objS.getCellRangeByName("E1").Value ' check i = a1 * r if i = 0 then ' send error message MsgBox("parameters must be not zero !") else ' calculate ' a = a1 for i = 1 to n a = a * r next i ' store objS.getCellRangeByName("C2").Value = a end if  等比数列の場合、初項、公比は浮動小数点をもつ数値で  あることも多く、変数宣言でfloatを指定して対応する  こともあります。  初項、公比を与えて、マクロで計算させてみます。  問題なく、計算できました。  初項か公比を0にしてみると、メッセージが出ます。  初項を0にしたときは、以下。  マクロを実行するときに、メッセージボックスを使い  不適切なパラメータ指定をしていることへ警告を出す  ことも可能と覚えておくと、余計な神経を使わないで  済みます。

目次

inserted by FC2 system