使用 C 语言求解指数函数 (ex) 的泰勒级数2025年1月7日 | 阅读 4 分钟 泰勒级数是 Brook Taylor 在 18 世纪引入的对不同函数的一种数学表示。任何函数都可以表示为无限项之和。通用形式为: f(x) = f(a) + f'(a)(x - a) + f''(a)(x - a)2/2! + f'''(a)(x - a)3/3! + ...n 项 当指数函数 (ex) 用这种形式表示时: ex = 1 + x/1 + x2/2! + x3/3! +….+ n 项 本教程将介绍不同的方法,利用这些方法我们可以编写一个程序,在给定 x 和 n 的值的情况下得到函数的值。 输入: x 和 n 例如,给定 x = 4 和 n = 2,我们需要计算 e4 展开到 2 项后的值并返回。 e4 = 1 + 4/1 + 42/2! 观察每一项中有两个函数:
方法 1:为 m 的 n 次幂和阶乘实现两个函数方法 对于 x = 3 和 n = 2 power(3, 2)/fact(2) + taylor(3, 1) 9/2 + power(3, 1)/fact(1) + taylor(0) 4.5 + 3 + 1 8.5 泛化 Taylor(x, n) = power(x, n)/factorial(n) + Taylor(x, n -1) 输出 Enter the value of x: 3 Enter the value of n: 2 e to the power 3.0 till 2 terms: 8.500000 递归函数过多;我们来简化一下。 方法 2:仅使用一个函数我们只需要一个函数来同时计算幂和阶乘的功能,该函数计算泰勒级数的值。 让我们举个例子 x = 3, n = 2 对于 n = 0 -> pow(3, 0) = 1, fact(0) = 1, Taylor(3, 0) = 1 对于 n = 1 -> pow(3, 1) = 3, fact(1) = 1, Taylor(3, 1) = 3 对于 n = 2 -> pow(3, 2) = 9, fact(2) = 2, Taylor(3, 2) = 8.5 观察到,在每次递归调用中,pow(m, n) = m*pow(n-1) 和 fact(n) = n*fact(n-1) 应该作为变量而不是单独的函数。 这里的关键在于,需要在泰勒函数的递归调用之间持久化这些值,为此我们需要使用静态变量。 输出 Enter the value of x: 3 Enter the value of n: 2 e to the power 3.0 till 2 terms: 8.500000 我们需要在每次递归调用中进行乘法运算以计算幂和阶乘。需要减少执行的乘法次数。 方法 3 (秦九韶算法)秦九韶算法可以用来求解多项式表达式,而无需进行过多的乘法运算,从而使程序运行更快。我们不断提取公因式,并找出可以在循环或递归调用中使用的模式。 方法 ex = 1 + x/1 + x2/2! + x3/3! + …. + n 项 假设 n = 4 ex = 1 + x/1 + x2/2! + x3/3! + x4/4! = 1 + x/1(1 + x/2 + x2/2*3 + x3/2*3*4) = 1 + x/1(1 + x/2(1 + x/3 + x2/3*4) = 1 + x/1(1 + x/2(1 + x/3(1 + x/4))) 泛化 对于 n = 4 假设 sum = 1 计算 1 + x/4 更新 sum = 1 + (x/4) * sum 这意味着 最初,sum = 1 sum = 1 + (x/n) * sum 输出 Enter the value of x: 3 Enter the value of n: 2 e to the power 3.0 till 2 terms: 8.500000 迭代方法 输出 Enter the value of x: 3 Enter the value of n: 2 e to the power 3.0 till 2 terms: 8.500000 下一主题C 语言编程测试 |
在本文中,我们将讨论带有多个示例。什么是雅可比迭代法?雅可比迭代法是一种数值求解线性方程组的方法。它通过连续迭代逼近解,属于迭代方法范畴。因为……
阅读 6 分钟
使用用 C 编写的标准差程序确定数据集的标准差,它作为衡量一组数字的方差或离散程度的指标。在数学、科学、工程、金融和数据等许多学科中,...
阅读 4 分钟
C 语言编程中一个非常高效的元素是 FAM(灵活数组成员)。当数据的大小在运行时发生变化且在编译时不明朗时,动态特性非常有用。动态内存分配是通过...
5 分钟阅读
C 中的 fetestexept 函数(在 fenv.h 库中)可用于查找计算中的特定浮点异常。在位掩码中,允许 FE_DIVBYZERO、FE_OVERFLOW、FE_UNDERFLOW、FE_INVALID 和 FE_INEAXT 等异常,并返回显示当前设置的异常的位掩码……
5 分钟阅读
setsockopt() 方法是 C 编程语言中一个关键的网络功能。它是一个非常方便的套接字相关函数。要理解这个函数,我们必须首先理解套接字的概念。套接字是一种控制整个网络并充当...
5 分钟阅读
<complex.h> C 语言头文件 complex.h 头文件供大多数 C 程序使用,用于执行复数运算和转换。此头文件包含在 C99 标准中。C++ 标准库包含一个名为 complex<T> 的头文件,它将复数值实现为模板类……
阅读 3 分钟
哥德巴赫猜想是数论中最古老的未解问题之一,由德国数学家克里斯蒂安·哥德巴赫于1742年提出。它提供了一个关于偶数和素数的基本而深刻的概念。该猜想指出“每个大于2的偶数都可以表示为...”
7 分钟阅读
编程不仅仅是计算数字;它也是一个通过代码创建令人着迷的模式和设计的画布。在这篇博文中,我们将进入 C 编程迷人的领域,并探索如何生成平方数模式。什么是平方数模式?平方数……
阅读 6 分钟
EOF 和 NULL 是 C 语言中的两个概念,它们有不同的用途。为了编写无错误且调试方便的程序,区分 EOF 和 NULL 很重要。在本文中,我们将讨论 C 语言中 EOF 和 NULL 之间的区别。在讨论它们之前...
阅读 4 分钟
在 C 编程中,空格在 scanf() 函数中解析输入数据起着至关重要的作用。scanf() 函数是 C 标准库的一部分,用于从标准输入(键盘)或其他输入流读取格式化输入。标点符号……
5 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India