[Date Index]
[Thread Index]
[Author Index]
how to plot nminimized result
*To*: mathgroup at smc.vnet.net
*Subject*: [mg113502] how to plot nminimized result
*From*: tarun dutta <tarunduttaz at gmail.com>
*Date*: Sun, 31 Oct 2010 02:09:22 -0500 (EST)
p = 0.01;
q = 1;
n = 5;
CompNum[i_] := a[i] + I b[i];
TCompNum[i_] := a[i] - I b[i];
f = Sum[SetPrecision[
Sqrt[i + 1] p CompNum[i] TCompNum[i + 1] +
p CompNum[i + 1] TCompNum[i] + (q*i + i (i - 1)) CompNum[
i] TCompNum[i], Infinity], {i, 0, n}];
c = \!\(
\*UnderoverscriptBox[\(\[Sum]\), \(i = 0\), \(n\)]
\*SuperscriptBox[\(Abs\ [CompNum[i]]\), \(2\)]\) ==
1; c // TraditionalForm;
dp = {a[n + 1] -> 0, b[n + 1] -> 0};
var = Table[CompNum[i], {i, 0, n}] /. a_ + I b_ -> {a, b} // Flatten;
prob = Join[ComplexExpand[f] /. a_ + I b_ -> {a^2 + b^2} /. dp, {c}];
{val, res} =
NMinimize[prob, var, MaxIterations -> 10000,
AccuracyGoal -> 30]; // AbsoluteTiming
this is my main program.for fixed value of p and q.I got the minimized
value and also the variable like a[o],a[1]..etc for example(from above
program)
In[12]:= val
Out[12]= 5.25767*10^-6
In[13]:= res
Out[13]= {a[0] -> -0.805443, b[0] -> 0.591251, a[1] -> -0.00824279,
b[1] -> 0.0402093, a[2] -> 0.0000547477, b[2] -> -0.000202243,
a[3] -> -1.11872*10^-7, b[3] -> 3.84618*10^-7,
a[4] -> 6.22738*10^-10, b[4] -> 8.88902*10^-11,
a[5] -> 3.02522*10^-10, b[5] -> 3.02899*10^-10}
now I want to vary the value of p from 0 to 2 for a fixed value of q.q
will also vary from 0 to 5.so, program will start taking the first
value of q as 0 and scan p from 0 to 2 in steps 0.01.every time i will
get the corresponding {val,res}.for example
q=1 p=0.01 val 5.25767*10^-6 res a[0] -> -0.805443,
b[0] -> 0.591251, a[1] -> -0.00824279,
b[1] -> 0.0402093, a[2] -> 0.0000547477, b[2] ->
-0.000202243,
a[3] -> -1.11872*10^-7, b[3] -> 3.84618*10^-7,
a[4] -> 6.22738*10^-10, b[4] -> 8.88902*10^-11,
a[5] -> 3.02522*10^-10, b[5] -> 3.02899*10^-10}
q=1 p=0.02 val= res =
now i want to check the result of res----if any a[i] and b[i] of all
a[i] and b[i] is nearly equal to 1(or > o.1) and other a[i] are zero
then print 'true' and also print the corresponding value of p and q
if more than one a[i] and b[i] have value nearly equal to 1 then print
'false'
from above example..
q=1 p=0.01 res=True because only a[0] and b[0] have nearly = to 1.we
ignore all other a[i] and b[i] cause they have value in order of 10^-2
or more.
so there will be some kind of table as
q=1 p=0.01 res true
q=1 p=0.02 res true
q=1 p=0.03 res true
q=1 p=0.04 res false
now we only consider only the last value of p for which we get
res=true after that point we get false
from above example we note the value of p=0.03 for q=1
similarly
q=1.1 res true p=0.01
q=1.1 res true p=0.02
q=1.1 res false p=0.03
here we note the value p=0.02,q=1.1
in this way we get a table of true value like
q=1 p=0.03
q=1.1 p=0.02
....
.....
now I want to plot(contour) q vs p.......
this is my problem....so how will I do all this in mathematica...
help
if the problem is not clear to you people just mail me...
with regards,
tarun
Prev by Date:
**Re: Assertions in Mathematica?**
Next by Date:
**It would be nice to have DiagonalMatrix accept a matrix as building**
Previous by thread:
**Re: Adding labels to a GraphicsGrid object**
Next by thread:
**It would be nice to have DiagonalMatrix accept a matrix as building**
| |