'Outputting results of loop of a loop

I am iteratively solving this implicit equation

(here)

using fsolve within a for loop over a range of values of the independent variable, V.

I also want to vary I_L and run the for loop over each value and generate an individual text files.

I know how to use the open and write text files, what I'm struggling with is setting loops up correctly to output what I want.

I have coded a simpler example below to allow for ease of understanding since it's just the loops I'm stuck on.

import numpy as np
from scipy.optimize import fsolve
import scipy.constants as sc

x = np.linspace(-1, 1, 1001)

C_vary = [0, 1, 2, 3]

def equation(y, x, C):
    return C - np.exp(x+y) - y

for C in C_vary:
    
    y = []
    
   Solve equation at each value of C_vary and output y values to new list of
   results


Solution 1:[1]

I have introduced an initial guess for the function y(x), but you can check the details further. The output y is a list, with each element corresponding to a value of the C_vary parameters, for each x.

import numpy as np
from scipy.optimize import fsolve
import scipy.constants as sc

x = np.linspace(-1, 1, 1001)
C_vary = [0, 1, 2, 3]

def equation(y, x, C):
    return C - np.exp(x+y) - y

y0 = np.exp( 0.5*x ) #initial guess 
y  = [ fsolve( equation, y0, (x,ci) ) for ci in C_vary ]
  

Solution 2:[2]

If you are after I as a function of V and other parameters, you can solve the equation by means of the Lambert W function.

It has the form

z = e^(a z + b)

where z is linear in I, and this is

- a z e^(- a z) = - a e^b

or

z = - W(-a e^b) / a.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Zarathustra
Solution 2