« 遂に荷物片付けが本格化、来週から10000字制限☆ | トップページ | TOUT EST PARDONNE(すべては許される)としても・・&27kmジョグ »

Quick BASICの練習(7)~関数値の計算、方程式の近似解

今週から一気に、週間1万字制限まで絞り込んで、引越し荷物の片付けを最

優先にする。こうなると、記事1本の字数は長くても2000字前後だから、プ

ログラミング記事には手頃だろう。

 

そこで、三連休最終日の今日は、9本目をアップしとこう。これまでの関連記

事8本(2本+6本)は以下の通り。ほぼ完全に知識ゼロ、ソフトも無い初心

者状態からスタート。必要なら過去記事に戻って読むことをお勧めする。

 

  初めてのプログラミング♪

              ~メモ帳でバッチファイル作成(コマンドプロンプト用)

  初めてのプログラミング(2)~計算その他、簡単なバッチファイル

 

    ・・・・・・・・・・・・・・・・・・・・

  Quick BASICのダウンロード、ダイレクトモード(Immediate)入力と計算

  Quick BASICの練習(2)~プログラム・モードでの入力&実行

  Quick BASICの練習(3)~REM 文、GOTO 文、IF 文、各種トラブル・・

  Quick BASICの練習(4)~IF文、FOR文、NEXT文とループ(繰返し)

  Quick BASICの練習(5)~二重ループ、流れ図(フローチャート)

  Quick BASICの練習(6)~DIM文と配列変数(添字つき変数)

 

 

テキストはいつもの通り、一昔前の高校数学の教科書、数研出版『数学A』

1995年版)。教科書のままだと上手く行かないこともあるし、勉強にもなら

ないので、マイナーチェンジや試行錯誤を繰り返すことになる。

 

 

          ☆          ☆          ☆

ではまず、前回の復習から。教科書p.190の練習問題26を解いてみよう。

 

150112a 「5個の数値を入力した

 とき、それらの平均値m 

 を計算し、次に入力した 

 数値からmを引いた値 

 を、入力順に表示する

 プログラムを作れ。」

 

 直前の例24を参考に

 して作成したブログラム

が上図。行番号を付け忘れたが、大丈夫だった。まずDIM文で、配列変数X

次元(DIMENSION)を5と設定。「DEV」とは「偏差」(DEVIATION)、つま

り、注目してる値から、何か特別な値(しばしば平均値:mean)を差し引いた

値で、これを用いて「標準偏差」や「偏差値」も計算される。

 

150112b  実行して、5個の配列変数X(1),X(2),

  X(3),X(4),X(5)の値として、順に6、

  7、8、9、10を入力。

 

  すると、WA(和)=40、m(平均)=8

  だから、DEV(偏差)=-2,-1,0,

  1,2となる。

 

「DEV」に「(N)」をつけたのは失敗で、本当は「DEV(6)=」などの表示にし

たかった。そのやり方は、下で登場する。

 

 

          ☆          ☆          ☆

続いて新しい話、「関数値の計算」。多数の実数 x に対して、関数 f(x)の値を

計算できれば、方程式 f(x)=0 の解を推測できる。さらに、動きが分かる簡

単な f(x)の場合なら、その推測は近似解となる。

 

まず、例25を少し簡単にした問題。関数 f(x)=3x²+4x+1(p≦x≦q)につ

いて、定義域をn等分するxの値それぞれに対する f の値を表示させるプログ

ラム。ただし、p、q、nは後から色々と入力できるようにする。

 

150112c

 

第60行、「”f(”;X,”)=”」という書き方は初登場。引用符で囲まれた部分は

そのまま表示されるのが基本だが、引用符の中で再び引用符を使うと、そこだ

けは、コンピューター計算で使われた個別の値が表示される。あと、セミコロン

とコンマでXを挟むことで、実行した時のXの表示が縦に揃うらしい。

 

150112d 実行して、p、q、nの

 値として1、2、10を

 入力すると、左のよう

 に表示された。

 

 なぜか、f(1.1)の

 値が9.030001

 なってるが、本来は

  9.03のはず。約

1000万分の1の相対誤差だから実害は僅かとはいえ、理由は不明。HELP

ファイルは壊れてるし、今後の課題としとこう。

 

日経PC21のサイトでエクセルの説明を見ると、演算誤差とか浮動小数点とい

う言葉を使って説明されてる感じだが、次回以降に扱う予定。

 

 

         ☆          ☆          ☆

3問目は方程式への応用で、p.192の問11を少し変えたもの。定義域の分 

割点における2次関数 f(x)の値を調べて、2次方程式 f(x)=0の実数解を

大まかに推測する。ただし、f(x)の係数a、b、c、定義域の両端(p、q)や、何

分割するか(n)は、後から色々と入力できるようにする。

 

150112e

 

 

150112f 実行して、教科書

 の設定通り、まず

 a=2、b=-7、

 c=4を入力。次

 にp=0、q=1、

 n=10を入力す

 ると、また細かい

 誤差(絶対値で

 1000万分の1レ

 ベル)が発生。あ

と、「0.1」とかの先頭の「0」は省略されるようだ。f(0.7)の値は、

0.08000005という意味で、「E-02」は「10の-2乗倍」を表す。本来の

正しい値は0.08だ。

 

いずれにせよ、x=0.7とx=0.8の間でf(x)の符号が+から-に変化する

から、f(x)=0の実解が1つあるのが分かる(2つではない)。近似解としては、

0.7でもいいし、0.72くらいでもいい。正確には(7-√17)/4だから、約

0.719。

 

 

         ☆          ☆          ☆

最後に、p.193の例26を少し変えた問題。関数g(x)=x²-ax(0≦x≦2)

最小値を大まかに探す問題。定義域を20等分して、一番小さい値と、それを 

与えるxを求める。aは後で入力

 

150112g

 

最小値MINは最初、0(x=0の時)からスタート。それを下回る関数値Yが出て

来たら、それを新たな最小値とする(IF~THEN~の構文)。最小値を与えるx 

の値Zも、0からスタートして更新していく。

 

150112h  実行して、a=2を代入

  ると、左の通り。最小値 

  は-1で、それを与える

  xは1と出た。

平方完成すると、g(x)=x²-2x=(x-1)²-1だから、それらは数学的に正確

な答となってる。

 

それは単に、私が問題の設定を調整したからであって、一般には、100等分で

も1000等分でも、近似的な解しか求まらない。ただし、近似の精度が高ければ、

十分に実用的な解となる。

 

それでは、今回はこの辺で。。☆彡

                                     (計 2434字)

 

 

cf. Quick BASICの練習(8)~素数の判別、エラトステネスのふるい

   Quick BASICの練習(9)~数列の二項間漸化式と固有値、一般項

 

                         (追記 71字 ; 合計 2505字)

|

« 遂に荷物片付けが本格化、来週から10000字制限☆ | トップページ | TOUT EST PARDONNE(すべては許される)としても・・&27kmジョグ »

数学」カテゴリの記事

プログラミング」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



« 遂に荷物片付けが本格化、来週から10000字制限☆ | トップページ | TOUT EST PARDONNE(すべては許される)としても・・&27kmジョグ »