Python实战项目(三)用程序求解二项式类问题

写在前面

利用空闲时间随便写的,只因上学期学习了二项式 ):
知道各位大佬看官不会注意后面内容,喏,直接放出代码(坏笑):
看官有兴趣的要注意给个赞或者收藏,关注我就更好啦

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 !!
有趣没趣看到这不给个赞意思一下?~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尘世镜花恋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值