반응형
라그랑지 다항식. 주어진 n 개의 점들을 지나는 n-1차 다항식을 구하는 것. 공식은 위키백과 영문판을 참고했다.
#include <stdio.h>
#include <math.h>
typedef struct _data {
double x;
double y;
} DATA;
double l(DATA *dataList, int nData, int j, double x)
{
double prod = 1;
for(int i=0; i<nData; i++)
{
if(i==j)
continue;
prod *= ((x-dataList[i].x)/(dataList[j].x -dataList[i].x));
}
return prod;
}
double lagrange(DATA *dataList, int nData, double x)
{
// L(x) = sum (j=0 to k) y_j x l_j(x)
//
// x -x_i
// where l_j(x) = prod (i=0, i!=j to k) -----
// x_j-x_i
double sum = 0;
for(int j=0; j<nData; j++)
{
sum += dataList[j].y * l(dataList, nData, j, x);
}
return sum;
}
int main()
{
DATA data[4] = {
{ 0, 1 },
{ 1, 2.7183 },
{ 2, 7.3891 },
{ 3, 20.0855}
};
int k = 4;
double xs[4] = {1.5, 2.5, 3.5, 4.5 };
for(int i=0; i<4; i++)
{
printf("f_l(%lf) = %lf\n", xs[i], lagrange(data, 4, xs[i]));
}
return 0;
}
mfc로 짜본 것.
소스는
invalid-file
여기. 마음껏 고치라.라그랑지 mfc 소스.
728x90
'프로그래밍 > 숙제도둑질' 카테고리의 다른 글
[C#|초급] 사다리꼴 넓이 구하기 (0) | 2008.09.17 |
---|---|
[FORTRAN77|초급] exp 함수 테일러급수 (0) | 2008.05.10 |
[Py|초급] 달팽이 이차원배열, 나머지연산과 논리연산 (0) | 2008.04.05 |
[C#|초급] 성적입력 및 출력 (0) | 2008.03.31 |
[C|MFC] 푸리에 시리즈 사각파 (0) | 2008.03.17 |