アプリ版:「スタンプのみでお礼する」機能のリリースについて

昨日学校でラグランジュの補間法の問題を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;
}


上記はあくまでサンプルプログラムなので、中に入っている数値は適当です

よろしくお願いします

A 回答 (3件)

元の問題の意味もよくわからんのだが....



どこで困ってんの?
    • good
    • 0

一体どこがわからないのかわかりません。


「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関数を使用して初期設定して関数を呼ぶだけじゃないですか。
    • good
    • 0

ソースプログラムというのはアルゴリズムを言語で実現するためのアイデアが詰まったものです。

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

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