C言語初学者です。初めての質問のため、不足ありましたら教えてください。
(大学の授業の課題です)
ニュートン法(Newton’s Method)によりある数の逆数を反復計算で求めるプログラムを作成したいです。ある数Aに対してニュートン法で逆数を計算するための漸化式は下に書いてあるものです。条件は0<A<1, X1=1です。
X(n+1)=2Xn-A∙(Xn )^2
A=0.24のときの反復計算例も載っていたので記載しておきます。
1回目:X_1=1,X_2=2X_1-A∙(X_1 )^2=1.76
2回目:X_2=1.76,X_3=2X_2-A∙(X_2 )^2=2.77
3回目:X_3=2.77,X_4=2X_3-A∙(X_3 )^2=3.70
そして0<A<1となる数値Aをキーボードから入力、20回の反復計算で逆数1/Aを求めるものを作りたいです。
私が書いたコードが下の通りです。
[cord]#include <stdio.h>
int main(void)
{
int i;
double num;
double X = 1;
printf("0<A<1を満たす数値Aを入力して下さい。\n");
scanf("%lf", &num);
for (i = 1; i < 20; i++) {
X[i + 1] = 2 * X -A* X*X;
}
X=X[i+1];
printf("逆数1/Aは%fです。\n", X);
return 0;
}
[/code]
paiza.IOというサイトを使っています。出てくるエラーは
Main.c:12:1: warning: treating Unicode character as whitespace [-Wunicode-whitespace]
for (i = 1; i < 20; i++) {
^~
Main.c:12:4: warning: treating Unicode character as whitespace [-Wunicode-whitespace]
for (i = 1; i < 20; i++) {
^~
Main.c:13:1: warning: treating Unicode character as whitespace [-Wunicode-whitespace]
X[i + 1] = 2 * X -A* X*X;
^~
Main.c:13:4: warning: treating Unicode character as whitespace [-Wunicode-whitespace]
X[i + 1] = 2 * X -A* X*X;
^~
Main.c:13:8: error: subscripted value is not an array, pointer, or vector
X[i + 1] = 2 * X -A* X*X;
~^~~~~~
Main.c:13:29: error: subscripted value is not an array, pointer, or vector
X[i + 1] = 2 * X -A* X*X;
~^~
Main.c:13:25: error: use of undeclared identifier 'A'
X[i + 1] = 2 * X -A* X[i]*X[i];
^
Main.c:13:34: error: subscripted value is not an array, pointer, or vector
X[i + 1] = 2 * X -A* X[i]*X[i];
~^~
Main.c:16:4: error: subscripted value is not an array, pointer, or vector
X=X[i+1];
~^~~~
4 warnings and 5 errors generated.
です。
おそらく変数初期化ができてないからだというところまでは分かったのですがその方法がわからず、手を出せなくなってしまいました。
初歩的な質問で申し訳ないです。不足部分があれば教えてください。
ニュートン法(Newton’s Method)
Re: ニュートン法(Newton’s Method)
・標準では使えない全角スペースがコードに含まれている
・入力を受けるのはnumなのに、式中ではAを使おうとしている
・Xを普通の変数として使うのか配列として使うのかが統一されていない
という問題があります。
全角スペースを半角スペースに置換し、変数の名前や使い方を統一しましょう。
・入力を受けるのはnumなのに、式中ではAを使おうとしている
・Xを普通の変数として使うのか配列として使うのかが統一されていない
という問題があります。
全角スペースを半角スペースに置換し、変数の名前や使い方を統一しましょう。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: ニュートン法(Newton’s Method)
アドバイスありがとうございます!
修正結果、うまくいきました。
早い返信本当にありがとうございます。
修正結果、うまくいきました。
早い返信本当にありがとうございます。