Re: extracting the information from Solve
- To: mathgroup at smc.vnet.net
- Subject: [mg27832] Re: extracting the information from Solve
- From: "Mark Harder" <harderm at ucs.orst.edu>
- Date: Mon, 19 Mar 2001 01:29:28 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
Martin,
To assign values from a list of replacement rules to their corresponding
symbols, all you need do is use Replace (or /.) To assign any one symbol :
In[16]:= a[1] /. equation;
Out[16]= {-0.56844};
or to assign the whole list:
varList = Flatten[{a[0], Array[a, 6], Array[b, 5]} ];
valList = Flatten[varList /. equation ]
Out[4]= {a[0], a[1], a[2], a[3], a[4], a[5], a[6], b[1], b[2], b[3], b[4],
b[5]}
In[17]:= Table[{varList[[i]], valList[[i]]}, {i, Length[varList ]} ] //
TableForm
Out[18]//TableForm=
\!\(\*
TagBox[GridBox[{
{\(a[0]\), \(-0.09583333333333338`\)},
{\(a[1]\), \(-0.5684401076758503`\)},
{\(a[2]\), "0.1625`"},
{\(a[3]\), "0.175`"},
{\(a[4]\), \(-0.10416666666666669`\)},
{\(a[5]\), \(-0.10655989232414974`\)},
{\(a[6]\), "0.037500000000000006`"},
{\(b[1]\), \(-0.21598820239201746`\)},
{\(b[2]\), "0.3680607966083865`"},
{\(b[3]\), "1.8505975831611954`*^-17"},
{\(b[4]\), \(-0.0793856620135736`\)},
{\(b[5]\), "0.11598820239201736`"}
},
RowSpacings->1,
ColumnSpacings->3,
RowAlignments->Baseline,
ColumnAlignments->{Left}],
(TableForm[ #]&)]\)
, and so forth.
-mark harder
harderm at ucs.orst.edu
-----Original Message-----
From: Martin Richter <mr.fi at cbs.dk>
To: mathgroup at smc.vnet.net
Subject: [mg27832] [mg27784] extracting the information from Solve
>Hi,
>
>I really don't know why I'm so bad programming in Mathematica :-( Here
goes
>my problem. I have 12 linear equation, 13 variables, and Mathematica (4.1)
>gives the following:
>
>
>f[t_] = a[0] + Sum[a[i]*Cos[2*Pi*i*t] + b[i]*Sin[2*Pi*i*t], {i, 1, 6}];
>seasonTab = {{0/12, -0.5}, {1/12, -.2}, {2/12, -0.5}, {3/12, -0.5}, {4/12,
> 0. - .25}, {5/12, 0.1}, {6/12, 0.5}, {7/12, 0.7}, {8/12,
> 1.1}, {9/12, -0.3}, {10/12, -0.7}, {11/12, -0.6}};
>equation =
> Solve[{f[0/12] == seasonTab[[1, 2]], f[1/12] == seasonTab[[2, 2]],
> f[2/12] == seasonTab[[3, 2]], f[3/12] == seasonTab[[4, 2]],
> f[4/12] == seasonTab[[5, 2]], f[5/12] == seasonTab[[6, 2]],
> f[6/12] == seasonTab[[7, 2]], f[7/12] == seasonTab[[8, 2]],
> f[8/12] == seasonTab[[9, 2]], f[9/12] == seasonTab[[10, 2]],
> f[10/12] == seasonTab[[11, 2]], f[11/12] == seasonTab[[12, 2]]}];
>equation
>
>
>\!\({{a[0] -> \(-0.09583333333333333`\), a[1] -> \(-0.5684401076758503`\),
> a[2] -> 0.16249999999999998`, a[3] -> 0.17500000000000002`,
> a[4] -> \(-0.10416666666666667`\), a[5] -> \(-0.10655989232414972`\),
> a[6] -> 0.03750000000000004`, b[1] -> \(-0.2159882023920174`\),
> b[3] -> 6.543001678297708`*^-17, b[5] -> 0.11598820239201749`,
> b[2] -> 0.3680607966083864`, b[4] -> \(-0.07938566201357357`\)}}\)
>
>My problem is that a[i] and b[i] is only defines by a rule and not by the
>values, so evaluating f[1] doesn't put in the values of a[i] and b[i]. I
>want to assign the numbers to the a and b list so that
a[0]=-0.095833333,...
>
>Of course, you can do it manually. I thought that a simple loop would do
but
>the list is not sorted, b[3] is coming before b[2]. I have been looking in
>the Mathematica book, specially about Rule, Sort and equation but for no
>good.
>
>So, can you Sort or assign in a simple way
>
>FIA
>Martin
>
>ps. Is Mathematica written in C++ ?
>
>---------------------------------------
>Please remove PET to reply by email
>
>
>