「多项式求导」

前置芝士

导数

微积分

基本问题

给定一个 \(n\) 次多项式 \(F(x)\),求 \(F'(x)\)

\[F(x)=\sum^{n}_{i=0}a_ix^i
\]

\[F(x+dx)=\sum^{n}_{i=0}a_i(x+dx)^i
\]

\[F(x+dx)=\sum^{n}_{i=0}a_i(\binom{i}{0}x^i+\binom{i}{1}x^{i-1}dx+\binom{i}{2}x^{i-2}dx^2+...+\binom{i}{i-1}xdx^{i-1}+\binom{i}{i}dx^i)
\]

\[F(x+dx)-F(x)=\sum^{n}_{i=1}a_i(\binom{i}{1}x^{i-1}dx+\binom{i}{2}x^{i-2}dx^2+...+\binom{i}{i-1}xdx^{i-1}+\binom{i}{i}dx^i)
\]

\(PS\):因为第 \(0\) 次项只有一个常数,被直接减掉了,所以直接从 \(i=1\) 开始枚举了。

\[F'(x)=\frac{F(x+dx)-F(x)}{dx}=\sum^{n}_{i=1}a_i\binom{i}{1}x^{i-1}
\]

\(PS\):从 \(i=2\) 往后的项因为其中的 \(dx\) 没有全部消掉,且 \(\lim_{dx\to 0}\),直接变成 \(0\) 了。

\[F'(x)=\sum^{n}_{i=0}a_{i + 1}(i+1)x^i
\]

很容易发现,其实就是求导之前的多项式系数整体左移一位再乘上一个 \(i+1\),得到的就是它的导数。

代码
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>

typedef long long ll;
typedef unsigned long long ull;

using namespace std;

const int maxn = 3e5 + 50, INF = 0x3f3f3f3f, mod = 998244353, inv3 = 332748118;

inline int read () {
	register int x = 0, w = 1;
	register char ch = getchar ();
	for (; ch < '0' || ch > '9'; ch = getchar ()) if (ch == '-') w = -1;
	for (; ch >= '0' && ch <= '9'; ch = getchar ()) x = x * 10 + ch - '0';
	return x * w;
}

inline void write (register int x) {
	if (x / 10) write (x / 10);
	putchar (x % 10 + '0');
}

int n;
int f[maxn];
int df[maxn];

int main () {
	n = read();
	for (register int i = 0; i <= n; i ++) f[i] = read();
        for (register int i = 0; i <= n - 1; i ++) df[i] = 1ll * f[i + 1] * (i + 1) % mod;
	return 0;
}

原文链接: https://www.cnblogs.com/Rubyonly233/p/14208879.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    「多项式求导」

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/206718

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月12日 下午10:39
下一篇 2023年2月12日 下午10:40

相关推荐