Edited to provide more information (sorry I don't know how to format matrices here)

I would like to replace: m = 4;

mult[i_, j_] := mult[i, j] = (tstar[Abs[i - j]] + tstar[i + j - 2])/2
Do[pmult[j] = Sum[a[i - 1]*mult[i, j], {i, 1, m}], {j, 1, m}]; 
Do[pmult[j] = Expand[pmult[j]], {j, 1, m}]; 
Do[c[j] = {}, {j, 1, m}]; 
Do[Do[c[j] = Append[c[j], Coefficient[pmult[j], tstar[i], 1]], {i, 0, 
    m - 1}], {j, 1, m}]; 
q = Transpose[Table[c[i], {i, 1, m}]]

with a single Table function (I believe this is possible). I attempted

mult[i_, j_] := mult[i, j] = (tstar[Abs[i - j]] + tstar[i + j - 2])/2
pmult[j_] := pmult[j] = Sum[a[i - 1]*mult[i, j], {i, 1, m}]; 
q = Table[
  Coefficient[Expand[pmult[j]], {j, 1, m}, tstar[i], 1], {j, 1, m}]

but I receive the error message

Coefficient::nonopt: Options expected (instead of 1) beyond position 3 in Coefficient[a(0) tstar(0)+a(1) tstar(1)+a(2) tstar(2)+a(3) tstar(3),1,tstar(i),1]. An option must be a rule or a list of rules. >>

The output should be

(a(0)   a(1)/2  a(2)/2  a(3)/2
a(1)    a(0)+a(2)/2 a(1)/2+a(3)/2   a(2)/2
a(2)    a(1)/2+a(3)/2   a(0)    a(1)/2
a(3)    a(2)/2  a(1)/2  a(0))

Can someone please shed some light on what I've done incorrectly? (i and j are indices) Thanks in advance!

  • $\begingroup$ What is {j,1,m} in Coefficient[Expand[pmult[j]], {j, 1, m}, tstar[i], 1]? $\endgroup$ – Peltio Feb 11 '14 at 16:44
  • $\begingroup$ Sorry, m=4 (arbitrary), and j is an indices. $\endgroup$ – gKirkland Feb 11 '14 at 16:46
  • 1
    $\begingroup$ Could you give a clean example of the input and output that you want? This will be easier than dissecting your Do loops and Appends etc. $\endgroup$ – Mr.Wizard Feb 11 '14 at 16:56
  • $\begingroup$ @Mr.Wizard The only input is the value m (mxm matrix is generated). I am having trouble dissecting it, also. This was written by someone else, and I am trying to write it in a simple, easier to understand, manner. The output will be an mxm matrix in terms of a[ ]'s. Sorry I don't know how to format outputs. $\endgroup$ – gKirkland Feb 11 '14 at 17:07
  • $\begingroup$ Okay, so q is the single output you are interested in, correct? $\endgroup$ – Mr.Wizard Feb 11 '14 at 17:10

Please examine this and determine if it is giving the result that you desire:

m = 3;

mem : mult[i_, j_] := mem = (tstar[Abs[i - j]] + tstar[i + j - 2])/2

ptab = Table[Expand @ Sum[a[i - 1]*mult[i, j], {i, m}], {j, m}]

Table[Coefficient[j, tstar[i - 1], 1], {j, ptab}, {i, m}] // Transpose

If you include the definitions of a and tstar I may be able to simplify this further.

  • $\begingroup$ That's perfect! That cut my computation time by over half. I have rules to substitute in values for a and tstar later, so symbolic is how I need it at this point. Thanks so much! $\endgroup$ – gKirkland Feb 11 '14 at 17:29
  • $\begingroup$ @gKirkland Okay, I'm glad I could help, and thanks for the Accept. $\endgroup$ – Mr.Wizard Feb 11 '14 at 17:38

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.