# How to make FindRoot work with PolyLog functions

I have the following code:

q = 1.6*10^-19;
hbar := 6.63/(2*\[Pi])*10^-34;
m0 = 9.1*10^-31;
kb = 1.38*10^-23;
Cap := 4.5*10^-3;
W := 50*10^-6;
mu := 4.3*10^-4;
n := 20;
vth = ((3*kb*300)/m0)^0.5;
vt := -3.5;
Rex := 15 ;
vg = 0;
Plot[id /.
FindRoot[(id - (Cap*W*mu*(n*vth)^2)/(
7*10^-6)*(PolyLog[2, -Exp[(vd - id - vg + vt)/(n*vth)]] -
PolyLog[2, Exp[(id - vg + vt)/(n*vth)]])), {id,
10^-6}], {vd, -1, .872}, ImageSize -> Large,
AxesLabel -> {vd, id}, LabelStyle -> {15, Bold, Black}]


It shows this error:

How can I specify the correct AccuracyGoal and PrecisionGoal for my problem. Also I want to plot the $$id$$ as a function of $$vd$$ for different $$vg$$, is there a way to automate it?

• For your first question, you can look them up in the docs for FindRoot. – Michael E2 Mar 1 at 1:05

Maybe with some or all of these changes [update: changed starting points to complex numbers ±10^6(1±I)]:

ReImPlot[                        (* solution is complex-valued *)
id /. FindRoot[(id - (Cap*W*mu*(n*vth)^2)/(7*10^-6)*(PolyLog[
2, -Exp[(vd - id - vg + vt)/(n*vth)]] -
PolyLog[2, Exp[(id - vg + vt)/(n*vth)]])),
{id, Sign[vd] 10^6 + 10^6 I}  (* better starting point *)
],
{vd, -10^8, 10^8},              (* larger plot domain *)
ImageSize -> Large, AxesLabel -> {vd, id},
LabelStyle -> {15, Bold, Black}]


Changing the starting point to Sign[vd] 10^6 - 10^6 I gives conjugate solutions.

• If I just want the solution from {vd,-10,0}, how do I decide what estimate of id I should give? Is there some way to estimate that or automate that? When I try plotting the solution for {vd,-10,0} I get the same error I showed in my original question. – Indeterminate Mar 1 at 3:21
• Thanks, it clears a lot of confusion. Do you have any recommendations on how to solve it for different vg as in for vg={0,1,2,3,4,5,6} and plot id-vd? – Indeterminate Mar 1 at 3:48
• @Indeterminate From PolyLog[2, Exp[(id - vg + vt)/(n*vth)]], it follows that no real solution exists for id - vg + vt > 0. – bbgodfrey Mar 1 at 4:49
• @Indeterminate Turns out FindRoot wasn't looking for complex solutions for small negative vd. Add an imaginary part to the starting point to force that. Then there are conjugate solutions for vd above around -1.4 * 10^7 judging from the graph. – Michael E2 Mar 1 at 14:20