写在前面
利用空闲时间随便写的,只因上学期学习了二项式 ):
知道各位大佬看官不会注意后面内容,喏,直接放出代码(坏笑):
看官有兴趣的要注意给个赞或者收藏,关注我就更好啦
from math import factorial as f
#(ax+by)**p
#二项式系数
def A(a,b,p):
if p<=1 and type(p) is int:
print("Your number isn't standard.")
k=0
while p>=2 and k<=p:
value=f(p)//f(p-k)//f(k)
result=value*(a**(p-k))*(b**k)
k+=1
print(result,end=' ')
#输入三个参数a,b,p,规则(ax+by)**p
A()
运行结果,参数a,b,p=1,1,2(最简单的平方式~~~)
如若看不懂,那就好好看我后面的解析吧~
每一个小白都是从谦虚看解析开始的哦
第一部分会先介绍二项式定理内容以及程序主要求解内容,第二部分展示思路以及代码编辑过程,第三部分运行测试,该内容仅针对python初学者,大佬无需学习
PS:本文不涉及二项式中n对于整数范围的讨论。
(一)基本知识
二项式定理的组合数表示形式(n∈N*,k∈N):
首先先就要了解二项式的展开式以及排列组合公式,了解这些才能明白基本原理,知道的看官直接跳步哦~
数学原理推导不再赘述,可以自行上网搜
(二)过程
首先引入math模块中的阶乘函数,没有它这个程序可能会写的很复杂
from math import factorial as f
在这里,规定二项式(ax+by)**p为基本形式,a,b均为系数,p为冥次,定义A函数,a,b,p为参数,
def A(a,b,p):
pass
A()
为了保证程序的可行性,加上一个a,b,p参数的验证(我就不再一一写上啦~就以p为例子)
if p<=1 and type(p) is int:
print("Your number isn't standard.")
下面就是核心部分,求解出每项系数
k=0
while p>=2 and k<=p:
value=f(p)//f(p-k)//f(k)
result=value*(a**(p-k))*(b**k)
k+=1
print(result,end=' ')
由基础知识部分的展开式可知,设一个数字k,为项数-1的值,也就是第k+1项对应排列C右上角的k,
p对应C右下角的n,由于第一项,也就是对应1-1=0=k,那么k的初始值就是0
讲到这里,可以运用排列公式,在while循环内求解每一项,当然要设立条件终止求解,因为二项展开式的最后一项右上角是等于冥次数p的,也即k<=p,同时p>=2,
while p>=2 and k<=p:
pass
首先求出排列的值
value=f(p)//f(p-k)//f(k)
再乘以每一项系数,同时运行一次循环就让k值加1,打印结果
result=value*(a**(p-k))*(b**k)
k+=1
print(result,end=' ')
(三)运行测试
开头只是随便举个例子,这里数搞复杂一点,a,b还是1,对应可以上网搜这个结果是否正确
Wonderful !!
有趣没趣看到这不给个赞意思一下?~