수정
상단노출
아래는 파이썬으로 데이터를 삼각함수로 근사시키는 코드입니다. 파이썬 다룰 줄 아시는 선생님이 계시거나 학생이 있으면 이용하시면 좋겠습니다. (저작권은 차펭귄에게 있습니다. 공유 시 이 웹페이지 링크로 공유해주세요) import numpy as np import matplotlib.pyplot as plt # 주어진 데이터 xv = np.array([n for n in range(1,61)]) yv = np.array([ 57, 70, 82, 68, 52, 47, 42, 40,40,40,40,30.9, 40, 40, 43, 58, 70, 82, 67, 52, 45, 42, 40,40,40,40,30.9, 40, 40, 42, 56.5, 70, 82, 68, 52, 45, 42, 40,40,40,39,30.9, 40, 40, 43, 57, 70, 82, 68, 52, 45, 42, 40,40,38,39,30.9, 40, 40, 44 ]) # 주어진 함수 형태로 fitting하기 위해 sin(x) 값을 구함 sin_xv = np.sin(xv) # 주어진 함수 형태로 fitting을 위한 행렬 생성 (range(1,32) : sinx(x)에 대한 31차 다항식으로 근사한다는 뜻) X = np.column_stack([sin_xv**n for n in range(1, 32)]) # 다항식 계수 계산 coeff_fitting= np.linalg.lstsq(X, yv, rcond=None)[0] print("Fitted coefficients:", coeff_fitting) # fitting된 함수 생성 def custom_function(x): return sum(coeff * np.sin(x)**n for n, coeff in enumerate(coeff_fitting, start=1)) # 데이터와 fitting된 함수 시각화 plt.scatter(xv, yv, label='Data') x_vals = np.linspace(1, 59, 30) # 그래프를 부드럽게 만들기 위해 x 값 범위 지정 plt.plot(x_vals, custom_function(x_vals), color='red', label='Fitted Sine Curve') plt.xlabel('x') plt.ylabel('y') plt.legend() plt.title('Height of Wave according to Time') plt.grid(True) plt.show()
전송