プロが教える店舗&オフィスのセキュリティ対策術

n=100としてn+1個の点(Xj,Yj) (j=1,2,3・・n)はどのようなグラフになるか?ただし、h=1/n, Xj=jh, Y(j+1)=Yj+hYj, Y(0)=1である。
このプログラムを教えてください。
#include <stdio.h>
#include <math.h>

main()
{
double pi, x, y;
int i;
pi=4*atan(1);
x=1/100;
y=1;
for(i = 1; i<=100; ++i){
x=i*1/100;
y[n+1]=y[n]+1/100*y[n];
printf("%lf %lf\n", i, x, y,);
}
}
ではだめなんでしょうか?

A 回答 (4件)

//エレガントにいけばこんな感じ



#include <stdio.h>

void func(double *x,double *y);

void main()
{
double x=0;
double y=1;
int i;
for(i=0;i<=100;i++)
{
func(&x,&y);
printf("%d:%lf %lf\n", i, x, y);
}
}


void func(double *x,double *y)
{
*x+=1/100.0;
*y+=(1.0+1/100.0)*(*y);
}
    • good
    • 0

ごめん最後の行は間違い


*y+=(1.0+1/100.0)*(*y);



(*y)*=(1.0+1/100.0);
    • good
    • 0
この回答へのお礼

おおできましたありがとうございました。

お礼日時:2006/11/27 16:17

とりあえず、コンパイルエラーが出ます。


また、printf文で y値が出力されないです。

Yの式は次のように置き換えられます。
Y(j+1)=Yj+hYj → Yj=Y(j-1)+hY(j-1)

したがって、

y[n+1]=y[n]+1/100*y[n];
printf("%lf %lf\n", i, x, y,);

の部分は

y=y+1/100*y;
printf("(X%d, Y%d)=(%lf, %lf)\n", i, i, x, y,);

と言ったところでしょうか。

最初の条件「n+1個の点(Xj,Yj) (j=1,2,3・・n)」で(n+1)個目の点はj=0なんでしょうかねぇ?

この回答への補足

えーと、14行目が式の構文エラーが出るんですけど・・・
あとprintf("(X%d, Y%d)=(%lf, %lf)\n", i, i, x, y,);
これiが2つあるんですけど1つでは?すいません、プログラミングよく分からないもので・・。
あと最初の条件「n+1個の点(Xj,Yj) (j=1,2,3・・n)」で(n+1)個目の点はj=0ですがn=100とするのでj=1,2・・・100なのでj=0でないと思います。

補足日時:2006/11/27 00:29
    • good
    • 0

これを実行するとどうなるのですか?


期待する結果とどこが違いますか?

# ヒント : 1/100 は 0 になります。
    • good
    • 0
この回答へのお礼

14行目がコンパイルエラーになります。
どうもありがとうございました。

お礼日時:2006/11/27 00:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!