📌  相关文章
📜  第 11 类 RD Sharma 解决方案 - 第 30 章衍生品 - 练习 30.4 |设置 2(1)

📅  最后修改于: 2023-12-03 15:41:06.934000             🧑  作者: Mango

第 11 类 RD Sharma 解决方案 - 第 30 章衍生品 - 练习 30.4 |设置 2

本解决方案是针对 RD Sharma 第 11 类第 30 章衍生品中练习 30.4 的解决方案。该练习要求学生解决一元多项式的问题,包括求导、积分和求极值等等。本解决方案通过详细讲解相关概念与步骤,帮助学生完整地解决这一练习。

代码片段
// 输入一个一元多项式的系数
int n;
cin >> n;
vector<int> A;
for (int i = 0; i <= n; i++) {
    int a;
    cin >> a;
    A.push_back(a);
}

// 求导
vector<int> B;
for (int i = 1; i <= n; i++) {
    B.push_back(A[i] * i);
}
B.push_back(0);

// 积分
vector<double> C;
for (int i = 0; i <= n; i++) {
    C.push_back(A[i] / (double)(i + 1));
}
C.push_back(0);

// 求极值
double x = -((double)A[n - 1] / A[n]);
double y = 0;
for (int i = 0; i <= n - 1; i++) {
    y += A[i] * pow(x, n - i);
}
cout << "f(" << x << ") = " << y << endl;
解题思路
求导

一元多项式求导,就是把每一项的指数乘以系数后,把指数减一。具体而言,对于一个一元多项式 $f(x) = a_n x^n + a_{n-1} x^{n-1} + \cdots + a_0$,其求导后的新多项式 $f'(x)$ 可以表示为 $f'(x) = na_n x^{n-1} + (n-1)a_{n-1} x^{n-2} + \cdots + a_1$。将其存入另一个 vector 即可。

积分

一元多项式求积分,就是把每一项的系数除以其指数加一,然后指数加一。具体而言,对于一个一元多项式 $f(x) = a_n x^n + a_{n-1} x^{n-1} + \cdots + a_0$,其求积分后的新多项式 $g(x)$ 可以表示为 $g(x) = \frac{a_n}{n+1} x^{n+1} + \frac{a_{n-1}}{n} x^{n} + \cdots + a_0 x$。将其存入另一个 vector 即可。

需要注意的是,这里除以的是 double 类型的指数加一,以免在整数除法下出现误差。

求极值

一元多项式求极值,可以通过一元多项式的导函数来求解。特别地,由于求导后的函数是一个一次函数,因此只需要找到导数为零的根即可。在这里,我们可以使用牛顿迭代法求解。

首先,设初始点为 $x_0$,则对于导函数 $f'(x)$,有

$$x_{i+1} = x_i - \frac{f(x_i)}{f'(x_i)}$$

然后,将 $f(x)$ 和 $f'(x)$ 分别替换成原多项式 $A$ 和导多项式 $B$,即

$$x_{i+1} = x_i - \frac{A(x_i)}{B(x_i)}$$

反复迭代,直到 $x_i$ 和 $x_{i+1}$ 的差值满足预设的精度要求即可。

总结

本解决方案详细说明了一元多项式求导、积分、求极值的方法,通过代码片段的呈现,帮助读者领会求解的思路和步骤。希望对 RD Sharma 第 11 类第 30 章衍生品中练习 30.4 的解题有所帮助。