勒让德多项式辅助验算代码(数学物理方法)

 在数学物理方法中。勒让德多项式计算复杂,手算结果往往容易出错。小编今晚整理出第一类勒让德多项式的计算代码,让计算机帮助解决冗余复杂的计算。

效果图如下:

 代码分为三部分:

第一部分,分别计算每一项分子和分母的值:

def jiecheng(num):
    if num == 0:
        return 1
    else:
        number = num
        for i in range(1, num):
            number *= i
        return number


def fenzi(num, k):
    fenzizhi = (pow(-1, k)) * jiecheng(int(2 * num - 2 * k))
    return fenzizhi


def fenmu(num, k):
    fenmuzhi = (pow(2, num)) * jiecheng(k) * jiecheng(int(num - k)) * jiecheng(int(num - 2 * k))
    return fenmuzhi

print('------------------------------------designed by 劲劲龙')

第二部分,计算每一项分子比分母的值,另将x的n次方带上:

该代码只提供了n为变量、n和x均为变量时的情况

def px(num):
    k = 0
    for k in range(0, int(num / 2) + 1, 1):
        print('((%s) / (%s)) * X^(%s) +' % (fenzi(num, k), fenmu(num, k), num - 2 * k))
    print('即:')
    for k in range(0, int(num / 2) + 1, 1):
        print('(%.5f) * X^(%s) +' % (float(fenzi(num, k) / fenmu(num, k)), num - 2 * k))
    print('------------------------------------designed by 劲劲龙')


def p(num, x):
    k = 0
    j = 0
    for k in range(0, int(num / 2) + 1, 1):
        print('((%s) / (%s)) * (%s) +' % (fenzi(num, k), fenmu(num, k), pow(x, (num - 2 * k))))
    print('即:')
    for k in range(0, int(num / 2) + 1, 1):
        print('(%.5f) * (%s) +' % (float(fenzi(num, k) / fenmu(num, k)), pow(x, (num - 2 * k))))
        j += float(fenzi(num, k) / fenmu(num, k) * pow(x, (num - 2 * k)))
    print('= %.5f' % j)
    print('------------------------------------designed by 劲劲龙')

第三部分,整体代码计算结果值:

该代码含有自动检测x的字符类型——若为数值,则进行n和x均为变量的情况;若仍为变量x或者其他字符,则保留该字符,带入直接计算式子

print('\n注:n取整数。x输入变量‘x’或者数值')
n = input('请输入整数n:')
x = input('请输入字符x:')
if x.isdigit():
    print('您输入的是数字')
    print('\nP%s(x)= ' % n)
    p(int(n), int(x))
elif x.isalpha():
    print('您输入的是字母')
    print('\nP%s(%s)= ' % (n, x))
    px(int(n))
else:
    print('您输入的是其他字符,请重新输入‘数字’或‘字母’ ')
print('------------------------------------designed by 劲劲龙')

整体代码未实现n,x均为未知量的计算结果(写该文章是刚看到还有这种类型)

 

勒让德多项式Word文档如下:

链接: https://pan.baidu.com/s/1bvzyLBOuNoFKYN3T199WDw?pwd=8dpn 提取码: 8dpn 

源代码:

def jiecheng(num):
    if num == 0:
        return 1
    else:
        number = num
        for i in range(1, num):
            number *= i
        return number


def fenzi(num, k):
    fenzizhi = (pow(-1, k)) * jiecheng(int(2 * num - 2 * k))
    return fenzizhi


def fenmu(num, k):
    fenmuzhi = (pow(2, num)) * jiecheng(k) * jiecheng(int(num - k)) * jiecheng(int(num - 2 * k))
    return fenmuzhi


def px(num):
    k = 0
    for k in range(0, int(num / 2) + 1, 1):
        print('((%s) / (%s)) * X^(%s) +' % (fenzi(num, k), fenmu(num, k), num - 2 * k))
    print('即:')
    for k in range(0, int(num / 2) + 1, 1):
        print('(%.5f) * X^(%s) +' % (float(fenzi(num, k) / fenmu(num, k)), num - 2 * k))
    print('------------------------------------designed by 劲劲龙')


def p(num, x):
    k = 0
    j = 0
    for k in range(0, int(num / 2) + 1, 1):
        print('((%s) / (%s)) * (%s) +' % (fenzi(num, k), fenmu(num, k), pow(x, (num - 2 * k))))
    print('即:')
    for k in range(0, int(num / 2) + 1, 1):
        print('(%.5f) * (%s) +' % (float(fenzi(num, k) / fenmu(num, k)), pow(x, (num - 2 * k))))
        j += float(fenzi(num, k) / fenmu(num, k) * pow(x, (num - 2 * k)))
    print('= %.5f' % j)
    print('------------------------------------designed by 劲劲龙')


print('\n注:n取整数。x输入变量‘x’或者数值')
n = input('请输入整数n:')
x = input('请输入字符x:')
if x.isdigit():
    print('您输入的是数字')
    print('\nP%s(x)= ' % n)
    p(int(n), int(x))
elif x.isalpha():
    print('您输入的是字母')
    print('\nP%s(%s)= ' % (n, x))
    px(int(n))
else:
    print('您输入的是其他字符,请重新输入‘数字’或‘字母’ ')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

劲劲龙

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

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

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

打赏作者

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

抵扣说明:

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

余额充值