No.2ベストアンサー
- 回答日時:
参考までにCで作ってみました。
/* f(x)=x-cosx=0 の解をx=0.5から始めてe=10^(-10)の範囲で求める */
/* ニュートン法:
f'(x)=1+sinx
点(a,b)を通り傾き1+sinaの直線は
y-b=(x-a)(1+sina)
x軸との交わる時のxは
x=-b/(1+sina)+a
*/
#include <stdio.h>
#include <math.h>
void main(void){
double xold,xnew,e;
unsigned c=0;
e=pow(10,-10);
xnew=0.5;
do{
c++;
xold=xnew;
xnew=(cos(xold)-xold)/(1.0+sin(xold))+xold;
}while(fabs(xnew-xold)>e);
printf("繰り返し数(%u):x=%#12.11g,e=%#g\n",c,xnew,e);
}
/* f(x)=x-cosx=0 の解をx=0.5から始めてe=10^(-10)の範囲で求める */
/* 逐次代入法 */
#include <stdio.h>
#include <math.h>
void main(void){
double xold,xnew,e;
unsigned c=0;
e=pow(10,-10);
xnew=0.5;
do{
c++;
xold=xnew;
xnew=cos(xold);
}while(fabs(xnew-xold)>e);
printf("繰り返し数(%u):x=%#12.11g,e=%#g\n",c,xnew,e);
}
このプログラムでは、ニュートン法が10倍以上速いことがわかりますね。
No.1
- 回答日時:
私、javaのプログラムは、よくわかりませんので、
ニュートン法と逐次代入法について
ニュートン法は、
あるxについてf(x)を微分することで、接線の導きコレが0になるx(点)(y=0と交わるx(点)を)を求めて、これを次のxとして同じ手順をくりかえす方法です。
逐次代入法は、
y=xとy=cosxのグラフを描いてみると
f(x)=x-cosx=0となる部分というのは、
y=xとy=cosxの交わるところだとわかります。
x=0.5から始めて、
cosxの結果をyとして、y=xのxを求めます。
そこで、求まったxをまたcosxしてと順繰り代入していくと、
グラフ上ぐるぐる回って逐次収束します。(収束しないかもしれません、それは、調べてみないとね)
ほとんど、数値計算ばかりなので、
プログラム的には、何で書いてもそれほど難しくはないと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 数2Bの数列の問題です。 自分は、 まず数列 an=ar^(n-1)と置き こちらの問題の、y= の 1 2022/07/07 16:26
- 数学 ラグランジュの未定乗数法を用いる問題 3 2023/05/15 14:48
- 数学 「f(z)=1/(z^2-1)に関して ローラン展開を使う場合、マクローリン展開を使う場合、テイラー 3 2022/08/27 19:56
- 数学 ①lim x→∞で1/xだった場合は発散しないため限りなく0に近い解が求められるのでしょうか? 例え 7 2022/05/16 19:27
- 物理学 抵抗力と一定の力fが働く場合の物体の運動について、一般解をx=ft/γ+C3e^(-γt/m)+C4 2 2023/07/13 08:25
- 数学 数学1の問題がわかりません。 次の関数において、頂点の座標と、[]内のxの値に対するyの値を求めよ。 3 2023/02/13 00:36
- 数学 確率について ①Xが実数値をとる確率変数で、f(x)=0(x<=-1),1/4x+1/4 (-1<= 2 2022/06/20 18:44
- C言語・C++・C# C言語 3 2022/10/04 15:07
- 工学 流体の数値計算の分離解法について 移流方程式∂f/∂t+∂f/∂x=Gを分離解法で解くときに、便宜上 3 2023/08/12 13:09
- 数学 【高1 数学Ⅰ 二次関数】 二次関数 f(x)=x^2-4ax+8a がある。ただし、aは正の定数と 3 2022/07/23 15:46
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでダブルコーテーション入り...
-
エラーの意味は? Lvalue req...
-
C言語 列挙型(enum型)変数について
-
Variant型で宣言してるのにEmpt...
-
テキストボックスの値を変数に...
-
EXCEL/VBA 変数の値をクリップ...
-
java final
-
jsp~jspにhiddenを使って変数...
-
[VBS]変数を定数に変換する方法...
-
変数にオフセットが付いている...
-
VBAでコマンドプロンプトの結果...
-
StringReaderのサンプルプログ...
-
processing エラーで、 "cannot...
-
vba 最大値 条件分岐
-
DataTableの値を変数に代入したい
-
i++と++i ってどう違うのですか?
-
数値計算??
-
インクリメント演算子の前置(+...
-
var aaa=bbb?cccl:ddd; の意味...
-
C# String str ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでダブルコーテーション入り...
-
エラーの意味は? Lvalue req...
-
C言語 列挙型(enum型)変数について
-
EXCEL/VBA 変数の値をクリップ...
-
整数xxxが大き過ぎますというエ...
-
テキストボックスの値を変数に...
-
[VBS]変数を定数に変換する方法...
-
Variant型で宣言してるのにEmpt...
-
jsp~jspにhiddenを使って変数...
-
processing エラーで、 "cannot...
-
python の 連鎖代入の文法
-
i++と++i ってどう違うのですか?
-
プログラミングで変数と関数の...
-
C言語 アロー演算子について質...
-
「%」を使って、偶数か奇数かを...
-
JavaScriptをURLから直接実行し...
-
VBA 1行で複数の代入を行った...
-
ExcelのVBAでをA列に第0〜19項...
-
コマンドプロンプト バッチ|結...
-
無名関数のメリットがよくわか...
おすすめ情報