C言語を使って y=x^2-4x のyの解をニュートン法を使って求める
プログラムを作る課題を出されたんですが、ニュートン法が良く分かっていないので、いろいろ調べたり、人に聞いたりしたところ
#include<stdio.h>
#include<math.h>
void main()
{
int counter=0;
double an,g,f,sh=0.0001;
printf("初期値を入力して下さい==>");
scanf("%ld",&an);
do{
g=(an*an)/(2*an-4);
f=2*an-4;
counter++;
}while(fabs(f)>sh);
printf("反復回数 %d 回 y=%lf \n",counter,g);
}
でプログラムがこんな感じになったんですが、結局ニュートン法がどうなのかがわかりません。 なんか微分とかやるとか言われたんですが、工業系の学校で数学の授業が無いので微分についてがわかりません。
このプログラムは、コンパイルはできるんですが、動きません。
ニュートン法についてよくわからないのでどこが間違ってるかわかりません。 ニュートン法についてできるだけ分かりやすく解説してほしいです。
No.1ベストアンサー
- 回答日時:
ニュートン法を理解するには、せめて微分の初歩の初歩は理解して下さい。
とりあえず、必要なところだけ。
y=x^2-4x
の解をもとめるには、次のようにします。
計算途中の近似解をa(n)とすると、それを元に得られる、より精度の良い近似解a(n+1)は、
a(n+1)=(a(n)*a(n))/(2*a(n)-4)
として求められます。(ニュートン法の理論から)
これを繰り返していって、
|a(n+1)-a(n)| < 0.0001
となったときに、十分精度の良い解が得られたと判断し、計算を終了します。
(計算終了の閾値0.0001は提示されたプログラムから取りました。)
プログラムの間違いは、下記の2点。
誤:scanf("%ld",&an);
正:scanf("%lf",&an);
誤:f=2*an-4;
正:f=g-an; an=g;
上記を修正し、初期値が2より大きい場合は4.000000が、初期値が2未満のときは
0.000000が求められることを確かめて下さい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# C言語階乗の総和を求める 2 2023/03/04 23:31
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# LU分解法のピボッティングについて(C言語/gcc-9) 3 2022/07/11 23:10
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 割られる整数と割る整数を受け取って、商と余りを出力す 3 2022/07/05 10:23
- C言語・C++・C# LU分解法のピボット選択機能実装について(C言語・gcc-9) 1 2022/07/22 15:20
- C言語・C++・C# Cのdoubleの浮動小数点表示について 3 2023/04/17 13:14
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
あるプログラムのコマンドライ...
-
このプログラミング誰か教えて...
-
Excelで4096点以上のFFTの方法
-
パックマンプログラム
-
「Outlookが他のプログラムによ...
-
PICマイコンのコピー(クローン...
-
自動クエリとはどういうもので...
-
UWSCで指定のフォルダを開きたい。
-
Excelに埋め込んだVBAのプログ...
-
Notepad++の関数リスト表示でC...
-
円周率を求めるC言語のプログラム
-
excelのexe化について
-
VBAを使って、pdfを関連付けら...
-
ロボットの作り方を教えて下さ...
-
VBAにてメール作成した際、一部...
-
表計算プログラムの作り方
-
寿命
-
C言語でプロセスをWAITさせる方...
-
C言語でのaccess violationに...
-
外部プログラム呼び出し
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelに埋め込んだVBAのプログ...
-
Notepad++の関数リスト表示でC...
-
あるプログラムのコマンドライ...
-
これってほんとにみますか?
-
Excelで4096点以上のFFTの方法
-
「Outlookが他のプログラムによ...
-
自動クエリとはどういうもので...
-
VBAでユーザーフォームが自動的...
-
VBAにてメール作成した際、一部...
-
PICマイコンのコピー(クローン...
-
テキストボックスのエンターキ...
-
読み込み中にアクセス違反が発...
-
特定のwebサイトのタイトルや記...
-
未使用の変数を一括検索する方法
-
モジュール、アプリケーション...
-
COBOLの連絡領域について
-
Google カレンダーの商用利用
-
エクセルとワードをデスクトッ...
-
ドロップダウンリストの文字を...
-
binファイルってiphone専用です...
おすすめ情報