A 回答 (5件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
企業で統計を推進する立場の者です。
#1さんの補足をします。
「初期値によって最終的に得られる値が違う」についてです。
いま、与えられた方程式は解を2つ持ちますよね。±√2です。
反復法(ソルバー)は探索方向によって、どちらか1つしか見つけることしかできません。
一般的には、多項式はグネグネの山の形になっています。解が頂点でなく山の中腹だったら、複数のxが該当します。反復法はグリッドサーチでもネルダーミードでもシミュレーティッドアニーリングでも、そのうち1つの解に収束すると計算が止まります。そのため、多数の初期値から出発して探索することが行われます。
さて、問題の回答ですが、
原始反復法って単なるグリッドサーチのことだと考えると・・・、
①仮の解tを与え、その両側に±hのサーチ幅を取る
②損失関数eを決める。通常は(ターゲット値-計算値)^2
③サーチ幅を100分割程度にグリッド化し各損失を求める
④損失が最小となるtを求める。
⑤h=±1/2hとする
⑥指定された回数あるいは、損失関数が指定値以下になるまで、③以降を繰り返す
以下はR言語で書いたプログラムです(等幅フォントで見て下さい)。
~~~~~~~~~~~~~~~~~~~~~~
t <- 0 # 解の初期値(通常はここを乱数で多数試す)
h <- 100 # 探索範囲の初期値
i <- 100 # 探索回数
while(i > 0){ # iが0以上なら繰り返す
e <- NULL # 損失関数をリセット
x <- seq(t - h, t + h, length = 100) # 探索範囲を100分割する
e <- append(e, (0 - (x^2 - 2))^2) # ターゲット値との差の2乗を計算
t <- x[which.min(e)] # 最小値を与える代入値を新たな解にする
h <- 1/2 * h # 探索範囲を半分にする
i <- i - 1 # カウンタを1つ減らす
}
t # 解を表示する
~~~~~~~~~~~~~~~~~~~~~~
実行結果は次のとおりです。2つある解の1つが求まっています。
> t
[1] -1.414214
No.3
- 回答日時:
私ゃCは分からいねぇ。
私の説明に沿って自分でC++なんかで書いてみれば、だれか添削してくれますよ。
No.4
- 回答日時:
#2です。
損失関数を求めている行が間違っていましたので訂正します。解は変わりません。t <- 0 # 解の初期値(通常はここを乱数で多数試す)
h <- 100 # 探索範囲の初期値
i <- 100 # 探索回数
while(i > 0){ # iが0以上なら繰り返す
e <- NULL # 損失関数をリセット
x <- seq(t - h, t + h, length = 100) # 探索範囲を100分割する
e <- (0 - (x^2 - 2))^2 # ターゲット値との差の2乗を計算
t <- x[which.min(e)] # 最小値を与える代入値を新たな解にする
h <- 1/2 * h # 探索範囲を半分にする
i <- i - 1 # カウンタを1つ減らす
}
t # 解を表示する
No.5
- 回答日時:
何かの値を求めたいときに、
その値を極限に持つ数列を構成することを
一般に「反復法」と呼びます。
問題の種類と数列の作り方によって
実にさまざまな反復法があります。
質問の「原始反復法」ですが、調べた範囲では
どんな反復法なのか判りませんでした。
あまり普及した用語ではないようです。
特定の反復法を指定した質問なのであれば、
どんな反復法を実装してほしいのか
少し説明したほうがよいように思います。
よくある簡単な反復法の例として、
ここではニュートン法を挙げてみましょう。
ニュートン法とは、方程式 f(x)=0 に対して
漸化式 x[n+1] = ーf(x[n])/f’(x[n]) を用いる
方法のことを言います。
f(x)=x^2-2 であれば、漸化式は
x[n+1] = ー{x[n]^2-2}/(2x[n]) です。
ニュートン法の初期値の選び方は難しく、
個々の問題に対してよく考える必要があります。
ここでは、x[1]=2 から始めてみましょうか。
C言語でのコードは、以下のようになります。
#include <stdio.h>
#include <stdlib.h>
#define Eps 0.00001
#define LOOP 10000
#define Xini 2
main() {
double x, x1 = Xini;
int i;
for( i = 0; i < LOOP; i++ ) {
x = x1;
x1 = - (x^2 - 2)/(2*x);
if( abs(x1 - x) < Eps ) break;
}
printf("%f\n", x1);
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) パイソンのプログラミングについての質問です 2 2023/05/22 12:39
- 数学 以下の問題教えて頂きたいです。 波動方程式 (∂^2/∂t^2−v^2(∂^2/∂x^2))u(x, 1 2022/06/05 17:24
- 高校受験 中3 9月 模試の結果D判定 夏に受けた模試の結果が第1志望D判定でした。 あと21点でやっと合格圏 3 2022/09/09 23:19
- Windows 10 パソコン得意な人どうやって勉強したか教えてください 13 2022/04/26 00:41
- HTML・CSS お金をあまりかけずにプログラミングを勉強する方法を教えてください。 こんにちは。 Webデザイン系の 3 2022/08/05 03:22
- その他(悩み相談・人生相談) 中3です。今日実力テストの結果が2教科だけ返ってきました。壊滅的でした。実力テストは内申点入りますか 2 2022/08/31 15:44
- 大学受験 娘の大学受験勉強 6 2022/06/30 19:58
- 食器・キッチン用品 ヤカンの注ぎ口に付いているヤカンの笛は、跳ね上げ式です。 最近、跳ね上げ式機構のバネが緩くなり、ヤカ 4 2022/05/22 04:27
- 高校受験 もうすぐ中3になります。 受験が近づいてきて正直怖くなってきました。 中1、中2は欠席が多く中2では 5 2022/04/04 22:40
- その他(プログラミング・Web制作) VBA 1 2023/01/19 16:19
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
微分の重解条件は公式として使...
-
Excelで合計値を基にデータを均...
-
tanX=Xの解
-
16の4乗根は±2ではない!?
-
微分積分の極限についての問題...
-
cos x = 0の解の書き方について
-
微分方程式
-
文字の定数を含む4次方程式の解...
-
なんで4次方程式f(x)=0がx=2を...
-
定数係数以外の2階常微分方程...
-
無数の解が存在する=すべての...
-
一枚の板から何枚取れるか?
-
3次式の逆関数の求め方
-
x^y=y^x (x>y)を満たす整数解は...
-
中学数学についてです。 二次方...
-
3次方程式
-
次の2つの連立方程式は同じ解を...
-
二次方程式の解の絶対値二つと...
-
連立方程式の解の集合が部分空...
-
方程式についての問題。。。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
高校数学の整数問題です。
-
Excelで合計値を基にデータを均...
-
答えを教えて
-
数学II 三次方程式 x^3-5x^2+ax...
-
解なし≠解はない
-
複数の品目での単価と全体の合...
-
微分の重解条件は公式として使...
-
16の4乗根は±2ではない!?
-
x^y=y^x (x>y)を満たす整数解は...
-
解に3つ以上±や∓がある時複号...
-
点P(x+y、xy)の軌跡を求めよ。...
-
一枚の板から何枚取れるか?
-
3次関数と直線が接する場合、...
-
数学についてです 「 aを定数と...
-
aの値に関係なくとよく問題で見...
-
2次方程式X^2-3X-1=0の2つの...
-
なんで4次方程式f(x)=0がx=2を...
-
何故グラフに接するとき重解に...
-
3次関数と1次関数が接するとき
-
2次方程式の2解がともに0と3の...
おすすめ情報
プログラミングと実行結果です
c言語の入力したものと実行結果はどのようになるのでしょうか