function sin_approx(x, k): result = 0 term = x for n = 0 to k-1: result += term term *= -x*x / ((2*n+2) * (2*n+3)) return result
exp(x) 근사
function exp_approx(x, k): result = 1 term = 1 for n = 1 to k: term *= x / n result += term return result
구현
#include <bits/stdc++.h>using namespace std;// sin(x) Taylor 근사 (k항)double sin_taylor(double x, int k) { double result = 0, term = x; for (int n = 0; n < k; n++) { result += term; term *= -x * x / ((2.0*n+2) * (2.0*n+3)); } return result;}// exp(x) Taylor 근사 (k항)double exp_taylor(double x, int k) { double result = 1, term = 1; for (int n = 1; n <= k; n++) { term *= x / n; result += term; } return result;}int main() { ios::sync_with_stdio(false); cin.tie(nullptr); double x; int k; cin >> x >> k; cout << fixed << setprecision(6); cout << "sin(" << x << ") approx: " << sin_taylor(x, k) << "\n"; cout << "sin(" << x << ") exact: " << sin(x) << "\n"; cout << "exp(" << x << ") approx: " << exp_taylor(x, k) << "\n"; cout << "exp(" << x << ") exact: " << exp(x) << "\n"; return 0;}
import mathdef sin_taylor(x, k): """sin(x) Taylor 근사 (k항)""" result = 0.0 term = x for n in range(k): result += term term *= -x * x / ((2*n+2) * (2*n+3)) return resultdef exp_taylor(x, k): """exp(x) Taylor 근사 (k항)""" result = 1.0 term = 1.0 for n in range(1, k+1): term *= x / n result += term return resultdef main(): x = float(input()) k = int(input()) print(f"sin({x}) approx: {sin_taylor(x, k):.6f}") print(f"sin({x}) exact: {math.sin(x):.6f}") print(f"exp({x}) approx: {exp_taylor(x, k):.6f}") print(f"exp({x}) exact: {math.exp(x):.6f}")main()
💬 댓글