›››  Screenshot


Free Analog Circuit Simulation

Triangle to Sine Waveform

The circuit

Let us now consider a circuit depicted below, which converts triangular signal waveform to sine waveform. We would like to set the resistances in the circuit so that the purest possible sine signal can be obtained at the output.

We will try to solve circuit analytically and calculate the values of the unknown resistors. The first problem is where to choose the break points. The relative error on one section is:

assuming b - a < p/2.

This result tells us that the best choice are equidistant break points. If we assume ideal diodes with cutin voltage ~ 0.5V and rupi << rupoutj, than resistor values can be calculated (see teble below).

Now we will optimise our circuit with the optimize command. Because of symmetry of the circuit we will observe only one half of the circuit in one quarter of a period. In this case we have 12 parameters to optimise rup1 ... rup6, rupout1 ... rupout6. The explicit constraints (see table below) are set around analytically calculated values. There are no implicit constraints. Let the cost function be defined as normalised square area between the real and ideal response:

It is a positive scalar and the circuit with ideal sine response would have its value zero.

The initial point of optimisation method is approximately the center of the explicitly constrained parameter space.

Table 1: Resistor values (all values are rounded)

analytic explicit
initial optimised
rupout1 17.0kW 10 20 kW 15kW 10.1kW
rupout2 87.6kW 50 150 kW 100kW 98.5kW
rupout3 216kW 100 300 kW 200kW 244kW
rupout4 432kW 200 600 kW 400kW 500kW
rupout5 828kW 400 1200 kW 800kW 1.07MW
rupout6 1.89MW 1 3 MW 2MW 2.62MW
rup1 4.57kW 2.5 7.5 kW 5kW 4.50kW
rup2 511W 250 750 W 500W 578W
rup3 824W 400 1200 W 800W 883W
rup4 1.09kW 500 1500 W 1kW 1.13kW
rup5 1.31kW 500 1500 W 1kW 1.18kW
rup6 1.46kW 500 1500 W 1kW 1.22kW

We ran the optimisation with different optimisation methods from the same initial point. The parameters of all methods were set to their default values. So results (see table below) with the particular method could be improved by fine tuning method parameters. Anyway we can see that gradient methods have local character. They are quickly trapped in a local minimum, which can be just a consequence of numerical noise. Random and genetic algorithm search across whole parameter space but they need a lot of iterations to get satisfying results. Direct search methods performed better. Hooke-Jeeves's method was the best among direct search methods for this example. On the other hand Powell's method converged very fast and constrained simplex method gave slightly better result, but it did not manage to converge in 4000 iterations. Time needed for optimisation was measured on 200Mhz Pentium personal computer running Windows 95. Optimal parameter values obtained by Hooke-Jeeves's method are shown in the table above.

Table 2: Optimisation statistics

number of iterations cost value time [s]
initial point 4.05 10-3
analitical point 3.26 10-5
steepest descent 174 1.72 10-5 4.07
newton 480 2.28 10-3 10.6
davidon_fletcher_powell 103 9.44 10-5 2.30
monte_carlo 4000 1.07 10-5 88.2
grid_search 4097 3.98 10-3 85.9
axis_search 871 8.47 10-6 19.6
powell 362 8.81 10-6 8.07
hooke_jeeves 1625 3.39 10-6 35.3
complex 4001 3.21 10-6 89.5
genetic 2550 1.03 10-5 60.6

To check if we improved analytically calculated circuit, we will take a closer look after the harmonic distortion of the output signal. We can see (table below) that optimisation method starting from initial circuit, which is worse than analytical circuit, gave better results than analytically calculated. The reason is in taking real diodes into account instead of ideal diodes in analytic circuit.

Table 3: Harmonic distortion (normalised magnitudes)

initial analytic optimised
f0 1 1 1
3f0 1.91 10-2 4.59 10-3 9.23 10-4
5f0 2.01 10-3 2.87 10-3 5.44 10-4
7f0 4.29 10-4 1.16 10-3 4.04 10-4
9f0 1.17 10-3 1.27 10-3 1.19 10-3