泰勒展开式

泰勒展开式

一、题目:

利用泰勒级数sin(x) = x - x^3/3! + x^5/5! - x^7/7! + x^9/9! …

计算sin(x) 的值。要求最后一项的绝对值小于10^(-5),并统计出此时累加了多少项。

二、代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <math.h>
#include <stdio.h>
#define EPS 1e-5

int main(){
int n = 1,count = 1;
float x;
double sum , term;

printf("Input x: ");
scanf("%f", &x);

sum = x;
term = x;
do
{
term = (-1)*term*x*x/((n+1)*(n+2));
//printf("wbs"); //代码调试
//printf("%lf",term); //代码调试
sum = sum + term;
n=n+2;
count++;
}while (fabs(term) >= EPS);

printf("sin(x) = %lf, count = %d\n", sum, count);
}

觉得这个代码很优美,很好地运用了递推,再加上高中时候对泰勒展开式(比较大小题中)不是很熟,故记了一篇markdown



番外

  • C语言中,我想表示: a=-a+1的递推,直接这么写在代码中是不是对的?

​ 还是非要要写成这个吗?:

a=(-1)*a+1

在 C 语言中,a = -a + 1 这样的写法是完全正确的,和 a = (-1) * a + 1 是等价的,两者在逻辑和运算结果上没有任何区别。

C 语言的运算符优先级中,负号(-,单目运算符)的优先级高于加法(+)和乘法(*),因此 a = -a + 1 会被编译器自动解析为 a = (-a) + 1,即先计算 -a,再加上 1,这正是你需要的递推逻辑。

两种写法都可以正常工作,实际开发中更推荐 a = -a + 1,因为它更简洁直观,符合常规的数学表达习惯。


泰勒展开式
http://example.com/2025/11/16/泰勒展开式/
作者
王柏森
发布于
2025年11月16日
许可协议