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を解いてみよう。
「5個の数値を入力した
とき、それらの平均値m
を計算し、次に入力した
数値からmを引いた値
を、入力順に表示する
プログラムを作れ。」
直前の例24を参考に
して作成したブログラム
が上図。行番号を付け忘れたが、大丈夫だった。まずDIM文で、配列変数X
の次元(DIMENSION)を5と設定。「DEV」とは「偏差」(DEVIATION)、つま
り、注目してる値から、何か特別な値(しばしば平均値:mean)を差し引いた
値で、これを用いて「標準偏差」や「偏差値」も計算される。
実行して、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は後から色々と入力できるようにする。
第60行、「”f(”;X,”)=”」という書き方は初登場。引用符で囲まれた部分は
そのまま表示されるのが基本だが、引用符の中で再び引用符を使うと、そこだ
けは、コンピューター計算で使われた個別の値が表示される。あと、セミコロン
とコンマでXを挟むことで、実行した時のXの表示が縦に揃うらしい。
実行して、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)は、後から色々と入力できるようにする。
実行して、教科書
の設定通り、まず
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は後で入力。
最小値MINは最初、0(x=0の時)からスタート。それを下回る関数値Yが出て
来たら、それを新たな最小値とする(IF~THEN~の構文)。最小値を与えるx
の値Zも、0からスタートして更新していく。
実行して、a=2を代入す
ると、左の通り。最小値
は-1で、それを与える
xは1と出た。
平方完成すると、g(x)=x²-2x=(x-1)²-1だから、それらは数学的に正確
な答となってる。
それは単に、私が問題の設定を調整したからであって、一般には、100等分で
も1000等分でも、近似的な解しか求まらない。ただし、近似の精度が高ければ、
十分に実用的な解となる。
それでは、今回はこの辺で。。☆彡
(計 2434字)
cf. Quick BASICの練習(8)~素数の判別、エラトステネスのふるい
Quick BASICの練習(9)~数列の二項間漸化式と固有値、一般項
(追記 71字 ; 合計 2505字)
| 固定リンク | 0
「数学」カテゴリの記事
- 3年連続中止の数学甲子園の2019年・予選問題、2つのAIに解かせると大苦戦(ChatGPT4、Wolfram Alpha)(2023.09.15)
- パズル「絵むすび」29、小学生向けのカンタンな解き方(難易度4、ニコリ作、朝日新聞be、2023年8月26日)(2023.08.28)
- パズル「絵むすび」28、AI(ChatGPT4)では解けないので、人間の解き方(難易度4、ニコリ、朝日、23年6月10日)(2023.06.10)
- ChatGPT-4、パズル「推理」の解答に大苦戦♪(難易度5、ニコリ作、朝日be、23年5月27日、表は使わない)(2023.05.27)
- パズル「絵むすび」27、解き方とコツ、考え方(難易度4、ニコリ作、朝日新聞be、2023年4月8日)(2023.04.09)
「プログラミング」カテゴリの記事
- Python(パイソン)入門2~高校副教材とオンライン環境Bit Arrow、さらにAI(ChatGPT4)も使用(2023.09.06)
- Python(パイソン)入門1~人気プログラミング言語を高校教科書副教材(東京書籍)とオンライン環境Bit Arrowで簡単に(2023.02.28)
- 令和3年度、文科省・情報活用能力調査の調査問題例と正答(小中高、4年1~2月)、感想とレビュー(2022.12.28)
- C言語入門5~選択構造、if文、else、switch-case文による多岐分岐(2021.11.20)
- 将棋AIも採用、ミニ・マックス法の無駄を省いた α β(アルファ・ベータ)法と α 値、β 値の具体例の解説(2021.11.18)
コメント