I have a list of solutions that depends on a parameter b3
and I'd like to get the solution for which the x
value is minimal when the parameter value is substituted. for example:
b3 =.;
f[x_] := x^2 - b3
solutions = Solve[f[x] == 0, x]
{{x -> -Sqrt[b3]}, {x -> Sqrt[b3]}}
I'm trying to get the element for which x/.element
is minimal (which should be b3
-depended). I started with:
f[x_] := x^2 - b3
solutions = Solve[f[x] == 0, x]
minsol := Pick[solutions, x /. solutions, Min[x /.solutions]]
pickminimum = minsol /. {b3 -> 2}
but when trying the above I got:
Pick::incomp: "Expressions {{x->-\[Sqrt]b3},{x->\[Sqrt]b3}} and {-\[Sqrt]b3,\[Sqrt]b3} have incompatible shapes."
Pick::incomp: "Expressions {{x->-\[Sqrt]2},{x->\[Sqrt]2}} and {-\[Sqrt]2,\[Sqrt]2} have incompatible shapes"
Then I tried to remove the extra {}
:
f[x_] := x^2 - b3
solutions = Solve[f[x] == 0, x]
minsol := Pick[((#[[1]]) & /@ solutions), x /. solutions, Min[x /. solutions]]
pickminimum = minsol /. {b3 -> 2};
for which I got:
Rule::argr: Rule called with 1 argument; 2 arguments are expected
Rule::argrx: Rule called with 0 arguments; 2 arguments are expected.
Trying just to see if it works for some list, also got me nowhere:
f[x_] := x^2 - b3
solutions = Solve[f[x] == 0, x];
minsol := Pick[{1, 2}, x /. solutions, Min[x /. solutions]]
minsol /. {b3 -> 2}
{}
I think I understand why I get the first error - but I have no idea why the second/third won't work.
clarification I'd like to have an expression for any value of b3. this is because later I'm interested at various quantities which are related to this point for many values of b3 (for example draw the first derivative of this 'minimal point' as a function of b3). so I'm less interested in a solution for a particular value of b3
Answer
Your updated request makes no sense me unless you mean something much simpler that you appeared to be attempting. Perhaps all you want is this:
min = Min[x /. solutions]
Min[-Sqrt[b3], Sqrt[b3]]
min /. b3 -> 2
-Sqrt[2]
I hope this helps. If not I'm at a loss.
There are a couple of problems here. First, as Nasser comments your replacement is done out of order. If you correct that to:
Pick[solutions, #, Min@#] &[x /. solutions /. b3 -> 2]
Pick::incomp: Expressions {{x->-Sqrt[b3]},{x->Sqrt[b3]}} and {-Sqrt[2],Sqrt[2]} have incompatible shapes. >>
Pick[{{x -> -Sqrt[b3]}, {x -> Sqrt[b3]}}, {-Sqrt[2], Sqrt[2]}, -Sqrt[2]]
You still get an error because Pick
wants matching structures for the first two arguments. It is IMHO the wrong tool for this particular task.
Instead I would use Position
:
solutions ~Extract~ Position[#, Min@#] &[x /. solutions /. b3 -> 2]
{{x -> -Sqrt[b3]}}
Or a bit more advanced, Ordering
:
solutions ~Extract~ Ordering[x /. solutions /. b3 -> 2, 1]
{x -> -Sqrt[b3]}
Comments
Post a Comment