所以我对Python非常缺乏经验,我基本上什么都不知道,我们的老师让我们编写一个代码,用这个函数进行部分分数分解:
我真的不知道如何启动,甚至不知道如何定义该函数。我一开始试过这个:`
def function(x):
a = (x^4)-(3*x^2)+x+5
b = (x^11)-(3*x^10)-(x^9)+(7*x^8)-(9*x^7)+(23*x^6)-(11*x^5)-(3*x^4)-(4*x^3)-(32*x^2)-16
return a/b
但是我们的数学脚本说我们需要分解分母,然后用它建立一个方程组并求解它。 所以我在考虑定义函数本身的每个部分,然后以某种方式创建一个函数,比如a=7*x,然后像f(x)=b/a^7那样使用它,如果这样做有效的话,但我真的不知道。不幸的是,我们不允许使用“分开”,我认为这是一个sympy函数
提前非常感谢
真的,菲
另外:经过几个小时的尝试,我发现了这一点。但我非常肯定,这不是解决问题的办法。它还告诉我变量l没有在z中定义,我确信其他变量也没有定义。我不知道该怎么办
def function(x):
global a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v
a = (x^4)-(3*x^2)+x+5
b = 11
c = 10
d = 9
e = 8
f = 7
g = 6
h = 5
i = 4
j = 3
k = 2
l = x**b
m = 3*x**c
n = x**d
o = 7*x**e
p = 9*x**f
q = 23*x**g
r = 11*x**h
s = 3*x**i
t = 4*x**j
u = 32*x**k
v = 16
return a/(l-m-n+o-p+q-r-s-t-u-v)
print("We are starting the partial fraction decomposition with this
function: (x^4)-(3*x^2)+x+5 / (x^11)-(3*x^10)-(x^9)+(7*x^8)-(9*x^7)+
(23*x^6)-(11*x^5)-(3*x^4)-(4*x^3)-(32*x^2)-16")
z = l-m-n+o-p+q-r-s-t-u-v
while c >= 0:
c = c-1
z = z-l
while d >= 0:
d = d-1
z = z-m
while e >= 0:
e = e-1
z = z-n
while f >= 0:
f = f-1
z = z+o
while g >= 0:
g = g-1
z = z-p
while h >= 0:
h = h-1
z = z+q
while i >= 0:
i = i-1
z = z-r
while j >= 0:
j = j-1
z = z-s
while k >= 0:
k = k-1
z = z-t
print(z)
因为我刚刚自己解决了这个问题,这里有一些输入:
让
poly = function()
作为函数,但要小心地用**
替换^
。包括from sympy import *
和from sympy.abc import a, b, c, d, e, f, g, h, i, j, k, x
使用
factor(exp)
可以找到函数的所有根,使用这些根定义11个术语term_1 = a/(x-2)
,term_2 = b/(x2-)**2
term_6 = (f*x + g)/(x**2 +1)
,…,term_8 = (j*x + k)/(x**2 + 1)
(你知道要点了)。定义your_sum = term_1 + ... + term_8
,eq = Eq(your_sum, poly)
定义变量
your_sum = sum(term_1, ..., term_8)
,并使用solve_undetermined_coeffs(eq, [a,b, ..., k], x)))
获得结果相关问题 更多 >
编程相关推荐