질문
J1(x)= 시그마 m=0부터 무한대까지 (-1)^m/m!(m+1)!*(x/2)^2m+1 이식을 C언어로 어떻게 표현하나요?ㅠㅠ 시그마랑 !< 이건 배우지않아서 힘드네요ㅠㅠ
답변
현재 질문에서 시그마의 m=0부터 무한대까지 정수라는 가정하에 소스 코드를 작성하였습니다.
만약 실수라면 J1 함수의 m변수를 double 형식으로 변경하시고 for문 내부에 m++대신
m = m+0.01 로 변경하시면 근사한 값을 얻을 수 있습니다.
코드의 내용은 크게 설명이 필요할 것 같지 않아서 생략할게요.
소스 코드
/* Project #1. J1_01.c */ /******************************************************** Compute J1 function. *********************************************************/ #include <stdio.h> #include <math.h> double J1(double x); int main() { double x; double exact; int k; printf(" x-coor Exactn\n"); for (k = 0; k <= 100; k = k + 1) { x = (double)k / 10.0; exact = J1(x); printf("%7.3f %12.6f \n", x, exact); } } double Factorial(int n); //J1(x) = 시그마 m = 0부터 무한대까지(-1) ^ m / m!(m + 1)!*(x / 2) ^ 2m + 1 double J1(double x) { int m = 0; double value = 0; double value2 = 1;//의도적으로 value와 다르게 초기화 for (m = 0; value != value2; m++) { value += pow((-1), m) / Factorial(m)*Factorial(m + 1)*pow((x / 2), 2*m + 1); value2 = value; } return value; } double Factorial(int n) { if (n <= 1) { return 1; } return n*Factorial(n-1); }