# NSolve not giving a solution

I have a parameter set

paramFinal2 = {\[Beta] -> 0.2, \[Alpha] -> 0.5 , c -> 0.150, b -> 0.1, \[Kappa] -> 1};


I define the following variable

{y} = {(1/(c - b))^(-(\[Beta]/(1 - \[Beta]))) (((c - b) k)/\[Alpha])^(-(\[Beta]/(1 - \[Beta]))) (k)^(\[Alpha]/(1 - \[Beta])) (x)^(\[Beta]/(1 - \[Beta])) \[Kappa]^(-(1/(1 - \[Beta])))};


Then, I use NSolve but I do not have any solution neither an error just {} as a result.

NSolve[{-(y)^((1/\[Beta])) (k)^(-(\[Alpha]/\[Beta])) \[Kappa]^(-(1/\[Beta])) + ((c - b)/\[Beta]) x == 0 /. paramFinal2, \[Beta] (y) - ((c - b) k)/\[Alpha] == 0 /.paramFinal2}, {k, x}]


What am I missing? I have used FindRoot but the solution is very sensible with respect to the values around which I search for k and x.

These equations are not independent and depend on branch cuts and should be solved with accurate numbers. That is, you must rationalize your input like:

paramFinal2 = {\[Beta] -> 0.2, \[Alpha] -> 0.5, c -> 0.150,
b -> 0.1, \[Kappa] -> 1} // Rationalize;


Now you can define y:

y = (1/(c -
b))^(-(\[Beta]/(1 - \[Beta]))) (((c -
b) k)/\[Alpha])^(-(\[Beta]/(1 - \[Beta]))) \
(k)^(\[Alpha]/(1 - \[Beta])) (x)^(\[Beta]/(1 - \[Beta])) \
\[Kappa]^(-(1/(1 - \[Beta])));


and set up the equations:

eq = {-(y)^((1/\[Beta])) (k)^(-(\[Alpha]/\[Beta])) \[Kappa]^(-(1/\
\[Beta])) + ((c - b)/\[Beta]) x ==
0, \[Beta] (y) - ((c - b) k)/\[Alpha] == 0} /.
paramFinal2  // FullSimplify


Now we solve the equations and choose the branch cuts by specifying that we want real answers:

Reduce[eq, {k, x}, Reals]


You see that your 2 equations do not uniquely determine x and k.

If you want complex solutions for x and k, substitute k-> r Exp[I phi]

paramFinal2 = {\[Beta] -> 0.2, \[Alpha] -> 0.5, c -> 0.150,
b -> 0.1, \[Kappa] -> 1} // Rationalize[#, 0] &;

y = (1/(c -
b))^(-(\[Beta]/(1 - \[Beta]))) (((c -
b) k)/\[Alpha])^(-(\[Beta]/(1 - \[Beta]))) (k)^(\[Alpha]/(1 \
- \[Beta])) (x)^(\[Beta]/(1 - \[Beta])) \[Kappa]^(-(1/(1 - \[Beta])));

feqs = {-(y)^((1/\[Beta])) (k)^(-(\[Alpha]/\[Beta])) \[Kappa]^(-(1/\
\[Beta])) + ((c - b)/\[Beta]) x, \[Beta] (y) - ((c -
b) k)/\[Alpha]} /. paramFinal2 // Together // Numerator

Reduce[Thread[feqs == 0], {k, x}, Reals]

(*   Reduce::useq: "The answer found by Reduce contains unsolved equation(s) {0==1/2 (2^(1/4)\ k^(5/8)-2^(1/4)\ (k^(5/2))^(1/4))}"   *)

fk = (1/2 (2^(1/4) k^(5/8) - 2^(1/4) (k^(5/2))^(1/4)) /.
k -> r E^(I phi))

fk2 = fk // Together // Numerator //
PowerExpand[#, Assumptions -> r > 0 && 0 < phi < 2 Pi] & //
Simplify[#, Assumptions -> r > 0 && 0 < phi < 2 Pi] &

Reduce[0 == fk2 && r > 0 && 0 < phi < 2 Pi]

(*   (r > 0 && 0 < phi <= (2 \[Pi])/5) ||
(r > 0 && (8 \[Pi])/5 < phi < 2 \[Pi])   *)

Clear["Global*"]

paramFinal2 = {β -> 0.2, α -> 0.5, c -> 0.150,
b -> 0.1, κ -> 1} // Rationalize

(* {β -> 1/5, α -> 1/2, c -> 3/20, b -> 1/10, κ -> 1} *)


In the definition for y, you are not dealing with a List and there is no reason to use List brackets.

y = (1/(c -
b))^(-(β/(1 - β))) (((c -
b) k)/α)^(-(β/(1 - β))) (k)^(α/(1 - \
β)) (x)^(β/(1 - β)) κ^(-(1/(1 - β)));

eqns = {-(y)^((1/β)) (k)^(-(α/β)) κ^(-(1/β)) \
+ ((c - b)/β) x == 0, β (y) - ((c - b) k)/α == 0} /.
paramFinal2 // Simplify

(* {x^(1/4) == (2^(3/4) Sqrt[x])/k^(5/8),
k^(3/4) == 2^(3/4) k^(1/8) x^(1/4)} *)

NSolve[eqns, {x, k}]

(* {{x -> -0.202283 + 1.37786 I, k -> 2.02847 + 1.66269 I}} *)


Reduce is a more powerful solver

Reduce[eqns, {k, x}]

(* Reduce::useq: The answer found by Reduce contains unsolved equation(s)
{0==1/2 (2^(1/4) k^(5/8)-2^(1/4) (k^(5/2))^(1/4))}. A likely reason for
this is that the solution set depends on branch cuts of Wolfram Language
functions.

0 == 1/2 (2^(1/4) k^(5/8) - 2^(1/4) (k^(5/2))^(1/4)) && k != 0 &&
x == k^(5/2)/8 *)


Restrict the domain to Reals

sol = Reduce[eqns, {k, x}, Reals]

(* k > 0 && x == Sqrt[k^5]/8 *)


Verifying,

Assuming[sol[[1]], eqns /. (sol[[-1]] // ToRules) // Simplify]

(* {True, True} *)


Graphically,

ContourPlot[Evaluate@eqns, {k, 0, 5}, {x, 0, 7},
ContourStyle -> {Automatic, Dashed},
FrameLabel -> Automatic,
PlotLegends -> Placed["Expressions", {.4, .5}]]
`