
課題内容
ニュートン法を用いて√2の値を求められるプログラムを作る。
10ケタまで表示する。
書いてみたソースコード
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define max 1000 //最大繰り返し回数
#define eps 1.0e-10 //収束条件
double f(double x);
double df(double x);
void newton(void);
int main()
{
newton();
return 0;
}
void newton(void)
{
int count;
double a,newa;
count=0;
printf("初期値を入力してください。\n");
scanf("%lf",&a);
for(;;) {
count++;
newa=a-f(a)/df(a);
if(fabs(newa-a)<eps) break;
a=newa;
if(count==max) {
printf("収束しませんでした。\n");
exit(1);
}
}
printf("解の値は %f\n収束するのに %d 回かかりました。\n",
newa,count);
}
double f(double x)
{
return x*x-2;
}
double df(double x)
{
return 2x;
}
コンパイルできません。
間違いとどうすればよいかを教えていただけるとありがたいです!!!
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
これで試してみてください。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define MAX 1000 //最大繰り返し回数
#define EPS 1.0e-10 //収束条件
double f( double x ) {
return( x*x - 2 );
}
double df( double x ) {
return( 2 * x );
}
void newton(void) {
int count;
double a,newa;
count=0;
printf( "初期値を入力してください。\n" );
scanf( "%lf", &a );
while( 1 ) {
count++;
newa= a - f( a ) / df( a );
if ( fabs( newa-a ) < EPS ) {
printf("解の値は %f\n収束するのに %d 回かかりました。\n", newa, count);
break;
}
a=newa;
if ( count > MAX ) {
printf( "収束しませんでした。\n" );
break;
}
}
}
int main(void) {
while( 1 ) {
newton();
printf( "Repeat? <y> or <n>\n" );
if ( getch() == 'n' ) break;
}
return ( 0 );
}
No.2
- 回答日時:
初期値を入力するのにどういう意味があるのかわかりませんでした。
√aを求める場合、aが1以上ならa、1未満なら1を初期値にすればよいと思います。
表示で10桁表示する指示が無いようです。
No.1
- 回答日時:
>コンパイルできません。
>間違いとどうすればよいかを教えていただけるとありがたいです!!!
コンパイル時に出たエラーメッセージくらいは書きましょう。
とりあえず少なくとも乗算の演算子を省略して
2 * x を 2x などとは書けません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
2分法で方程式の複数の解を自...
-
【C言語】二階微分方程式をル...
-
C言語で台形公式を使った二重積...
-
C言語(プログラミング)関連の質...
-
DWORDの警告
-
C言語における複素数の四則演算...
-
ceilでの切り上げ処理について
-
浮動小数点の誤差のあわせ方
-
バイナリから実数を取得したい...
-
割り算ができない
-
指数形式で入力するには
-
doubleの変数にintとintの割り...
-
「Aに対するBの割合」と「Aに対...
-
2÷3などの余りについて
-
VC++で文字列から任意の文字を...
-
Aの値からBの値を除するとは??
-
scanfの後のfgetsについて
-
信頼区間の1.96や1.65ってどこ...
-
FortranからCの関数を呼ぶ方法
-
文字列から空白を取り除きたい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラムでの数字につく”f”の...
-
C 開放してるのにエラー(doubl...
-
至急です! マクロ定義で #defi...
-
C言語を実行すると-infが出てき...
-
C言語の型による処理速度の違い
-
c言語で、繰り返し文の中で、0....
-
C言語 関数プロトタイプ宣言の...
-
doubleの変数にintとintの割り...
-
float型とdouble型の変数の違い...
-
-1.#IND00と出てしまうのですが...
-
c言語のプログラミングについて...
-
C言語で台形公式を使った二重積...
-
C言語でdouble型の小数点の引き...
-
C言語のプログラムで#include<m...
-
2次方程式の解を求めるプログ...
-
C言語の複素数についてです。
-
doubleは常に%lfとするべきなのか
-
関数におけるif文とreturn文に...
-
difftime()について
-
int とdoubleの比較
おすすめ情報