# Newton's identities in Sage

EDIT
I actually need: $s_k=[c_1s_{k-1}+...+c_{k-1}s_1-kc_k]$ ? could somebody help me to change tobias welch's answer so that it computes $s_k$ instead of $c_k$?
END EDIT

I'm combining netwon's identities with le verrier's algorithm

I need some help coding the following on python.

$c_k=\frac{-1}{k}(s_k+c_1s_{k-1}+c_2s_{k-2}+\dots+c_{k-1}s_1)$
where $s_k=Tr(A^k)$, for some square matrix A, $\forall k=1,2,3,\dots,n$

So, i'd like to type in $c(k)$ and python spits out the value for $c_k$ as defined above.

edit retag close merge delete

Sort by ยป oldest newest most voted

An recursive algorithm would be quite inefficient for this problem as yout would have to recalculate all c_k coefficients in each step.

The following few lines should work for your problem (if I hopefully didn't make any mistakes with the formulas):

def c(k,A):
c_arr=[-A.trace()]
for j in range(k-1):
c_arr=c_incr(c_arr,A)
print c_arr
return c_arr[k-1]

def c_incr(c_arr, A):
k=len(c_arr)+1
c_new=(A^k).trace()
for c_k in c_arr:
k-=1
c_new+=c_k*(A^k).trace()
c_new=-1/(len(c_arr)+1)*c_new
c_arr.append(c_new)
return c_arr

more

it worked thanks!

( 2013-02-26 05:51:33 +0100 )edit

what if i wanted a new formula for s_k=[c_1s_{k-1}+...+c_{k-1}s_1-kc_k] ?

( 2013-03-17 21:54:19 +0100 )edit
2

You should consider learning some programming. It will save you a lot of time.

( 2013-03-18 21:21:42 +0100 )edit