Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Math 如何解决这个问题:T(n)=2T(n/3)和#x2B;n^2?_Math_Recurrence_Equation Solving - Fatal编程技术网

Math 如何解决这个问题:T(n)=2T(n/3)和#x2B;n^2?

Math 如何解决这个问题:T(n)=2T(n/3)和#x2B;n^2?,math,recurrence,equation-solving,Math,Recurrence,Equation Solving,替换方法和递归树方法: 如果n=1,则T(n)=2/7 T(n)=2T(n/3)+n^2,否则 如何求解这样一个方程组?显然,只有当n是3的幂时,方程才能求解。用新变量k^3替换n,可以得到一个更简单的方程,可以通过python的符号数学库来求解: 来自sympy导入函数、rsolve、S、symbols、Eq k、 n=符号(“KN”,整数=真,正=真) f=函数('f') g=函数('g') #T(n)=2T(n/3)+n^2T(1)=2/7 T=Eq(f(n),2*f(n/3)+n*n

替换方法和递归树方法:

  • 如果n=1,则T(n)=2/7

  • T(n)=2T(n/3)+n^2,否则


如何求解这样一个方程组?

显然,只有当
n
是3的幂时,方程才能求解。用新变量
k^3
替换
n
,可以得到一个更简单的方程,可以通过python的符号数学库来求解:

来自sympy导入函数、rsolve、S、symbols、Eq
k、 n=符号(“KN”,整数=真,正=真)
f=函数('f')
g=函数('g')
#T(n)=2T(n/3)+n^2T(1)=2/7
T=Eq(f(n),2*f(n/3)+n*n)
Tk=T.subs({n:3**k,f(n):g(k),f(n/3):g(k-1)})
s=rsolve(Tk,g(k),{g(0):2/s(7)})
打印(“k的解决方案:,s.cancel())
对于范围(0,11)内的k:
打印(f“k={k},n={3**k},T(n)={-2**k+3**(2*k+2)/S(7)}”)
这将导致以下公式适用于
k
:-2k+32*k+2/7

k=0..10的值为:

k=0, n=1, T(n)=2/7
k=1, n=3, T(n)=67/7
k=2, n=9, T(n)=701/7
k=3, n=27, T(n)=6505/7
k=4, n=81, T(n)=58937/7
k=5, n=243, T(n)=531217/7
k=6, n=729, T(n)=4782521/7
k=7, n=2187, T(n)=43045825/7
k=8, n=6561, T(n)=387418697/7
k=9, n=19683, T(n)=3486780817/7
k=10, n=59049, T(n)=31381052441/7

你的问题是什么?这与java有什么关系?这个答案有用吗?