HOME»基本情報技術者試験掲示板»平成21年秋期午後問8
投稿する

[3599] 平成21年秋期午後問8

 オームさん(No.1) 
午後・アルゴリズムの問題で質問です。
ニュートン法に関する問題で空欄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の解説をしていただければ嬉しいです。
2021.09.16 23:28
かなさん(No.4) 
FE ブロンズマイスター
まず、空欄CDは変数dに代入する処理なので、〔アルゴリズム2の説明〕(3)②の処理に関係するのだと気づけないといけません。

---------------------------

>  また,行番号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

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。
© 2010-2024 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop