"""Python求解多项式"""
from sympy import symbols, factor, expand, cancel, apart
import numpy as np
# 1.因式分解
# 例1:分解下列多项式:3 * x^4 - 2 * x^3 * y + 3 * x^3 - x^2 * y^2 + 6 * x^2 - x * y^2 - 4* x * y - 2 * y^2
x, y = symbols('x y')
f1 = 3 * x ** 4 - 2 * x ** 3 * y + 3 * x ** 3 - x ** 2 * y ** 2 - 2 * x ** 2 * y + 6 * x ** 2 - x * y ** 2 - 4 * x * y - 2 * y ** 2
# print(factor(f1))
# 2.多项式展开
# 例2:展开下列多项式:(x+y)^3
x, y = symbols('x y')
f2 = (x + y) ** 3
# print(expand(f2))
# 3.分式化简
# 例2:展开下列多项式:(x+y)^3
x = symbols('x')
f3 = (x ** 2 + 2 * x + 1) / (x ** 2 + x)
p3 = 1 / x + (3 * x / 2 - 2) / (x - 4)
# print(cancel(f3))
# print(cancel(p3))
# 4.分式展开
x = symbols('x')
f4 = (4 * x ** 3 + 21 * x ** 2 + 10 * x + 12) / (x ** 4 + 5 * x ** 3 + 5 * x ** 2 + 4 * x)
# print(apart(f4))
# 5.多项式求解
# (1)求值
# 例如:p(x) = x^3 - 3 * x + 5
# 可以使用向量P=[1,0,-3,5]表示,向量长度减一表示多项式最高项次数。
# 从右到左分别是变量x的0次幂、1次幂、2次幂……n次幂。
# 这里可以使用numpy的方法ployval进行计算。
q1 = np.array([1, 0, -3, 5])
x1 = 5
# print(np.polyval(q1, x1))
# X为不同值时多项式的值
x2 = [1, 2, 3, 4, 5]
# print(np.polyval(q1, x2))
# (2)求根
q2 = np.array([1, 0, -3, 5])
b2 = np.roots(q2) # 求根
# print(b2)
r2 = np.real(b2) # 取实数
# print(r2)
# (3)乘法
# (x^3 + 2 * x^2 + 3 * x + 4 ) X (x^3 + 4 * x^2 + 9 * x + 16) = [1,2,20,50,75,84,64]
a3 = np.array([1, 2, 3, 4])
b3 = np.array([1, 4, 9, 16])
# print(np.convolve(a3, b3))
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)