HOME»基本情報技術者試験掲示板»平成21年秋期午後問8
投稿する
方程式の解を求めるアルゴリズム、と問題文に記載がありますが。
平成21年秋期午後問8 [3599]
オームさん(No.1)
午後・アルゴリズムの問題で質問です。
ニュートン法に関する問題で空欄CとDがよくわかりません。
具体的には
抽象的にはどんな工夫をしているのですか?
どんなプログラムであるかの説明をお願いします。
他のスレッドを参照しましたが飲み込みが悪くてすみません。
お願いします。
https://www.fe-siken.com/kakomon/21_aki/pm08.html
ニュートン法に関する問題で空欄CとDがよくわかりません。
具体的には
>演算回数を減らす工夫をしている
抽象的にはどんな工夫をしているのですか?
どんなプログラムであるかの説明をお願いします。
他のスレッドを参照しましたが飲み込みが悪くてすみません。
お願いします。
https://www.fe-siken.com/kakomon/21_aki/pm08.html
2021.09.15 00:11
名無しさん(No.2)
> どんなプログラムであるか
方程式の解を求めるアルゴリズム、と問題文に記載がありますが。
2021.09.15 09:13
オームさん(No.3)
聞き方が悪かったです。すみませんでした。
単純に空欄Cと空欄Dの行は何の処理をしているのかという
C、Dの解説をしていただければ嬉しいです。
単純に空欄Cと空欄Dの行は何の処理をしているのかという
C、Dの解説をしていただければ嬉しいです。
2021.09.16 23:28
かなさん(No.4)
★FE ブロンズマイスター
まず、空欄CDは変数dに代入する処理なので、〔アルゴリズム2の説明〕(3)②の処理に関係するのだと気づけないといけません。
---------------------------
〔プログラム1〕10行目は、変数fに代入する処理なので、〔アルゴリズム1の説明〕(3)①に対応します。
素直に書けば、
となり、掛け算が6回、足し算が3回です。
しかし、プログラム1の10行目を
とすることで、掛け算を3回に減らすことができます。
ここで、
は
と書くこともできます。
また、
と書くこともできます。
最初のAへの代入が「種」になって、あとは「A * x a_n」(nを1ずつ下げていく)を繰り返せば計算できるということです。
---------------------------
上の「工夫」を見て気づきませんか?
そうです、〔プログラム2の一部〕14行目が「種」で17行目が繰り返し部です。
〔アルゴリズム2の説明〕(3)②を改めて振り返ると、dに入るのは
これを変形すれば、
または
---------------------------
あとは、dの方程式の次数(xのかける回数)がfよりも1小さいことに注意しつつ
と
のどちらを使えばよいかを考えれば答えが出せます。
---------------------------
> また,行番号13~18は,アルゴリズム2の手順(3)の①と②の処理である。
> プログラム1では,例えばfの値a3x3+a2x2+a1x+a0を求める式を,
>
> f←((a3×x+a2)×x+a1)×x+a0
>
> と変形して,演算回数を減らす工夫をしている。
〔プログラム1〕10行目は、変数fに代入する処理なので、〔アルゴリズム1の説明〕(3)①に対応します。
素直に書けば、
> a_3 * x * x * x + a_2 * x * x + a_1 * x + a_0
となり、掛け算が6回、足し算が3回です。
しかし、プログラム1の10行目を
> ((a_3 * x+a_2) * x+a_1) * x+a_0
とすることで、掛け算を3回に減らすことができます。
ここで、
> ((a_3 * x+a_2) * x+a_1) * x+a_0
は
> A ← a_3 * x+a_2
> A ← A * x a_1
> A ← A * x a_0
と書くこともできます。
また、
> A ← a_3
> A ← A * x+a_2
> A ← A * x a_1
> A ← A * x a_0
と書くこともできます。
最初のAへの代入が「種」になって、あとは「A * x a_n」(nを1ずつ下げていく)を繰り返せば計算できるということです。
---------------------------
上の「工夫」を見て気づきませんか?
そうです、〔プログラム2の一部〕14行目が「種」で17行目が繰り返し部です。
〔アルゴリズム2の説明〕(3)②を改めて振り返ると、dに入るのは
> b_(n-1) * x^(n-1)+b_(n-2) * x^(n-2)+…+b_1 * x+b_0
これを変形すれば、
> B ← b_(n-1) * x + b_(n-2)
> B ← B * x + b_(n-3)
> ……
> B ← B * x + b_1
> B ← B * x + b_0
または
> B ← b_(n-1)
> B ← B * x + b_(n-2)
> B ← B * x + b_(n-3)
> ……
> B ← B * x + b_1
> B ← B * x + b_0
---------------------------
あとは、dの方程式の次数(xのかける回数)がfよりも1小さいことに注意しつつ
> B ← b_(n-1) * x + b_(n-2)
> B ← B * x + b_(n-3)
> ……
> B ← B * x + b_1
> B ← B * x + b_0
と
> B ← b_(n-1)
> B ← B * x + b_(n-2)
> B ← B * x + b_(n-3)
> ……
> B ← B * x + b_1
> B ← B * x + b_0
のどちらを使えばよいかを考えれば答えが出せます。
2021.09.21 23:06