首页 > 其他分享 >U290226 公式推导

U290226 公式推导

时间:2023-04-14 14:11:27浏览次数:47  
标签:begin frac 推导 0a 公式 cdots U290226 bmatrix printf

U290226

求 \(\sum_{x=1}^{n} x^m\) 的公式, \(n \leq 20\) 。

先看如下柿子:

\[1 + 2 + 3 + \cdots + n = \frac{n \times (n+1)}{2} = \frac{n^2}{2} + \frac{n}{2} \]

\[1^2 + 2^2 + 3^2 + \cdots + n^2 = \frac{n \times (n+1) \times (2n + 1)}{6} = \frac{n^3}{3} + \frac{n^2}{2} + \frac{n}{6} \]

\[1^3 + 2^3 + 3^3 + \cdots + n^3 = \frac{[n(n+1)]^2}{4} = \frac{n^4}{4} + \frac{n^3}{2} + \frac{n^2}{4} \]

通过这三个柿子可以大概发现规律:

\(F(n,m) = \sum\limits_{x=1}^{n} x^m\) 的最高次为 \(m+1\) ,且每一项都可以表示为 \(n^t \times p\) 的形式。

所以设 \(F(n,m) = a_1n^{m+1} + a_2n^{m} + \cdots + a_{m+1}n\) 。

向上式的两边同时加上 \((n+1)^m\) ,得

\(F(n+1,m) = a_1n^{m+1} + a_2n^{m} + \cdots + a_{m+1}n + (n+1)^m\) 。

用二项式定理展开末项,得

\(\color{CornFlowerBlue}F(n+1,m) = a_1n^{m+1} + (C_m^m + a_2)n^m + (C_m^{m-1}+a_3)n^{m-1} + \cdots + (C_m^1 + a_{m+1})n + C_m^0\)

而 \(F(n+1,m)\) 又等于 \(a_1(n+1)^{m+1} + a_2(n+1)^m + \cdots + a_{m+1}(n+1)\)

每一项都用二项式定理展开,得

\(\color{Salmon}F(n+1,m) = C_{m+1}^{m+1}a_1n^{m+1} + (C_{m+1}^{m}a_1 + C_{m}^{m}a_2)n^m + (C_{m+1}^{m-1}a_1 + C_m^{m-1}a_2 + C_{m-1}^{m-1}a_3)n^{m-1} + \cdots + (C_{m+1}^0a_1 + C_m^0a_2 + \cdots + C_1^0a_{m+1})\)

上面两个带颜色的柿子都等于 \(F(n+1,m)\) ,比较系数可以得到如下方程组:

\[ \begin{cases} a_1 = C_{m+1}^{m+1}a_1 \\ C_m^m + a_2 = C_{m+1}^ma_1 + C_m^ma_2 \\ C_m^{m-1} + a_3 = C_{m+1}^{m-1}a_1 + C_m^{m-1}a_2 + C_{m-1}^{m-1}a_3 \\ \dots \\ C_m^0 = C_{m+1}^0a_1 + C_m^0a_2 + \cdots + C_1^0a_{m+1} \end{cases} \]

化简得

\[\begin{cases} C_{m+1}^ma_1 = C_m^m \\ C_{m+1}^{m-1}a_1 + C_m^{m-1}a_2 = C_m^{m-1} \\ C_{m+1}^{m-2}a_1 + C_{m}^{m-2}a_2 + C_{m-1}^{m-2}a_3 = C_m^{m-2} \\ \dots \\C_{m+1}^0a_1 + C_m^0a_2 + C_{m-1}^0a_3 + \cdots + C_1^0a_{m+1} = C_m^0\end{cases} \]

转化为矩阵乘法的形式:

\[\begin{bmatrix} C_{m+1}^m \\ C_{m+1}^{m-1} & C_m^{m-1} \\ C_{m+1}^{m-2} & C_m^{m-2} & C_{m-1}^{m-2} \\ \vdots & & & \ddots \\ C_{m+1}^0 & C_m^0 & C_{m-1}^0 & \cdots & C_1^0 \end{bmatrix} \begin{bmatrix} a_1 \\ a_2 \\ a_3 \\ \vdots \\a_{m+1} \end{bmatrix} = \begin{bmatrix} C_m^m \\ C_m^{m-1} \\ C_m^{m-2} \\ \vdots \\ C_m^0 \end{bmatrix} \]

高斯消元求解即可。时间复杂度 \(O(n^3)\) 。

#include<cmath>
#include<cstdio>
#include<algorithm>
using namespace std;
const int M=310;
typedef __int128 LL;

void write(__int128 x){
    if(!x) return ;
    if(x<0) putchar('-'),x=-x;
    write(x/10);
    putchar(x%10+'0');
}

int m;
LL fra[M];
void calc(){
	fra[0]=1;
	for(int i=1;i<=20;i++) fra[i]=fra[i-1]*i;
}
int C(int i,int j){
	return fra[i]/fra[j]/fra[i-j];
}

LL gcd(LL A,LL B){
	if(!B) return A;
	return gcd(B,A%B);
}
struct Frac{
	LL A,B; // A / B
	Frac(){A=0,B=1;}
	Frac(LL _A,LL _B):A(_A),B(_B){}
	friend Frac operator+(Frac a,Frac b){
		LL m=a.B*b.B,z=a.A*b.B+b.A*a.B;
		LL qwq=gcd(m,z);
		return Frac(z/qwq,m/qwq); 
	}
	friend Frac operator-(Frac a,Frac b){
		LL m=a.B*b.B,z=a.A*b.B-b.A*a.B;
		LL qwq=gcd(m,z);
		return Frac(z/qwq,m/qwq);
	}
	friend Frac operator*(Frac a,Frac b){
		LL m=a.B*b.B,z=a.A*b.A;
		LL qwq=gcd(m,z);
		return Frac(z/qwq,m/qwq);
	}
	friend Frac operator/(Frac a,Frac b){
		LL m=a.B*b.A,z=a.A*b.B;
		LL qwq=gcd(m,z);
		return Frac(z/qwq,m/qwq);
	}
	void print(){
		bool negative=false;
		if((A<0)^(B<0)) negative=true;
		if(negative) printf("-");
		write(A<0?-A:A);
		printf("/");
		write(B<0?-B:B);
	}
	double val(){
		return 1.*A/B;
	}
}a[M][M];

void Gauss(){
	for(int i=1;i<=m+1;i++){
		int cur=i;
		for(int j=i+1;j<=m+1;j++)
			if(fabs(a[cur][i].val())<fabs(a[j][i].val())) cur=j;
		swap(a[i],a[cur]);
		if(a[i][i].val()==0) return printf("No Way\n"),void();
		for(int j=1;j<=m+1;j++){
			if(i==j) continue;
			Frac p=a[j][i]/a[i][i];
			for(int k=1;k<=m+2;k++) a[j][k]=a[j][k]-(a[i][k]*p);
		}
	}
}

int main(){
	calc();
	scanf("%d",&m);
	for(int i=1;i<=m+1;i++){
		for(int j=1;j<=i;j++) a[i][j]=Frac(C((m+1)-j+1,m-i+1),1);
		a[i][m+2]=Frac(C(m,m-i+1),1);
	}
	Gauss();
	bool flag=false;
	for(int i=m+1;i>=1;i--){
		if(a[i][m+2].val()==0) continue;
		if(flag) printf("+");
		flag=true;
		printf("(");
		a[i][m+2]=a[i][m+2]/a[i][i];
		a[i][m+2].print();
		printf("*(n");
		if((m+1)-i+1!=1) printf("^%d",(m+1)-i+1);
		printf("))");
	}
	return 0;
}

标签:begin,frac,推导,0a,公式,cdots,U290226,bmatrix,printf
From: https://www.cnblogs.com/zzxLLL/p/17318126.html

相关文章

  • [深入推导]CS231N assignment 2#4 _ 卷积神经网络 学习笔记 & 解析
    卷积神经网络基本算法实现卷积神经网络应该算是图像处理中绝对的主流了,关于算法得基本思想我在之前也学的比较懂了,这点如果不了解网上有很多教程.不过我并没有用代码亲自实现它.我们首先确定怎么编写.前面搞全连接网络总是会想着怎么去简化运算,现在我们接触了新的网络,......
  • 插电式混合动力汽车的能量管理:用于模型预测控制的凸优化算法 研究了求解非线性损耗混
    插电式混合动力汽车的能量管理:用于模型预测控制的凸优化算法23研究了求解非线性损耗混合动力电动汽车能量管理模型预测控制优化问题的凸公式算法的计算性能。提出了一种投影内点法,通过对控制输入施加不等式约束作为投影,降低了牛顿步长矩阵求逆的规模和复杂度,并与交替方向乘子法(......
  • 10公共操作与推导式
    公共操作与推导式公共操作操作方法功能描述操作类型+合并将两个相同类型序列进行连接字符串、列表、元组*复制将里面的数据进行复制字符串、列表、元组len获取序列长度查看序列长度字符串、列表、元组、字典,集合reversed倒置将容器里面的数据倒......
  • 外汇交易手数Forexclub一个公式来判定保险又放心
    在外汇交易中,每次外汇交易交易手数是最难确定的,外汇手数高的的话行情不对亏损太大,手数低的话盈利后又后悔。Forexclub从这么多年的外汇交易经验来看,外汇交易经验总是与损失联系在一起。因此,当遭受损失时,关键是要吸取教训,并把它当作提升技能和成为更好的专业人士的一种方式。确定外......
  • UVa 113 / POJ 2109 Power of Cryptography (使用double处理大整数&泰勒公式与误差分
    113-PowerofCryptographyTimelimit:3.000secondshttp://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=99&page=show_problem&problem=49http://poj.org/problem?id=2109题意:给出n和p,求出 ,但是p可以很大()如何存储p?不用大数可不可以?先看看double......
  • latex · markdown | 如何编写矩阵、大公式
    1\left[\begin{array}{c} a&b\\ c&d\end{array}\right]效果:\[\left[\begin{array}{c} a&b\\ c&d\end{array}\right]\]2\min_{T_t^{set}}J=\lim_{N\rarr\infin}E\bigg\{\sum_{t=0}^{N-1}\Deltat\cdotP_t(T_t^{s......
  • 洛谷P2415 集合求和(数学问题,使用集合子集求和公式)
    可以知道对于一个有n个数据的集合,其子集个数有2^n个至于证明可以这样理解,对于n个数据,其子集就是对数据进行组和,而对于每个位置上的数据,组合时仅有两种状态即有此数据或无此数据,也就是有两种可能,而对于n个数据,就有2^n种可能不妨设其中一个非空数据X,对于X,依据X可以将子集划分为两......
  • 对数换底公式
    如何求log以2为低的对数计算器中只有以10和e为底的对数使用对数换底公式Log~a~N=Log~b~n/Log~b~a比如求Log~2~15可以用计算器算Log~10~15=aLog~10~2=b则Log~2~15=a/b......
  • 公式编辑器mathType中的公式在word中显示乱码的问题
    1.问题描述mathType中的公式在word中出现部分乱码的情况,如下分别为乱码和正常的公式主要表现为,公式双击后按ctrl+s后word中的公式表现为正常。由于一篇文章同类公式均会乱码,一个个修改比较麻烦且可能遗漏,为此可以进行一次性修改全部。2.解决方法 2.1双击乱码的公式,在mathType中显......
  • 跨表累计公式
    问题:1簿若干表,每个表中的C7单元格都等于前一个表的C7单元格加本表的D7单元格 函数公式解决:=INDIRECT(MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,9)-1&"!rc",)+D7输入以上公式前先选取除第一个表以外的所有表,再输入公式。MID(CELL("filename",A1),FIND(......