• 締切済み

ラグランジュの補間法のCプログラム

昨日学校でラグランジュの補間法の問題をC言語のプログラムで解けという課題が出されました しかし、友達と相談してもよくわかりませんでした 課題は以下の問題です sin関数6点、(0.92+0.01x)、x=0,1,2,3,4,5を求めて、ラグランジュの方法でsin(0.923)を計算せよ ちなみに答えは、0.79742です 先生からサンプルのプログラムをもらいました 以下のサンプルプログラムを参考にして解いてくださいと言われたのですが、どうしても解けません すいませんが分かる方、よろしくお願いします #include <stdio.h> #include <math.h> #define N 6 //データ数 double x[N]={ 0.0,1.0,2.0,3.0,3.1,5.0}; //X座標 double y[N]={0.0,1.1,2.5,4.0,4.1,5.0}; //Y座標 double lagrange( double); int main() { double xx,yy; //補間計算 printf("XX\t\tYY\n"); for( xx=0.0; xx<=5.0; xx+=.2 ) { yy = lagrange( xx); printf("%8.2lf\t%8.2lf\n", xx, yy ); } return 0; } //補間サブルーチン double lagrange( double xx ) { double z[N]; double yy=0.0; int i,j; for( i=0; i<N; i++ ) { z[i] = 1.0; //係数計算 for( j=0; j<N; j++ ) if( i!=j ) z[i]*=(xx-x[j])/(x[i]-x[j]); //補間値計算 yy+=z[i]*y[i]; } return yy; } 上記はあくまでサンプルプログラムなので、中に入っている数値は適当です よろしくお願いします

みんなの回答

  • hashioogi
  • ベストアンサー率25% (102/404)
回答No.3

ソースプログラムというのはアルゴリズムを言語で実現するためのアイデアが詰まったものです。つまりソースプログラムには著作権があります。 今回あなたは先生が作成したソースプログラムをネットで公開したわけですが、それは先生が望んだことなのでしょうか? もしあなたが作成した大事なプログラムを友人のAさんに見せたら、わからないところがあるといってAさんが勝手にほかの人に渡しまくったらあなたはどう思いますか? 先生の著作権が侵害されていなければいいのですが…。

すると、全ての回答が全文表示されます。
  • hashioogi
  • ベストアンサー率25% (102/404)
回答No.2

一体どこがわからないのかわかりません。 「sin関数6点、(0.92+0.01x)、x=0,1,2,3,4,5」の6点というのは最初 0.9210 0.9211  : 0.9215 かと思いましたが、 0.92 0.93  : 0.95 のことのようですね。 関数lagrangeは先生が作ってくださった補間値を計算してくれる関数なので一切変更する必要はありません。私は内容さえ確認していません。 早い話がmain関数の中で配列xとyをあなたがsin関数を使用して初期設定して関数を呼ぶだけじゃないですか。

すると、全ての回答が全文表示されます。
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

元の問題の意味もよくわからんのだが.... どこで困ってんの?

すると、全ての回答が全文表示されます。

関連するQ&A