I don't now if your simulation is correct, but you could make it less beta-dependant by increasing negative local feedback, by for example emitter degradation, such as increasing R1 and R2.
By using a Darlington or Sziklai pair, R4 and R5 can be increased while still maintaining output current. Discussion of thermal properties: https://sound-au.com/articles/cmpd-vs-darl.htm#s4
If some crossover distortion is acceptable, the biasing voltage could be lowered so that the quiescent current through Q1, Q2 is 0.
On the difference between 'load-flow' and 'phasor' studies
A loadflow (power-flow) simulation is a phasor simulation. It is a phasor simulation of a power system at nominal frequency (50Hz or 60Hz.) It assumes that the system is at sinusoidal steady state and that nothing is changing.
The distinction between a 'load flow' study and a 'phasor study' is that a phasor study can be performed at any arbitrary frequency, say 50Hz, 100Hz, 150Hz, whereas a load-flow study is nearly always performed at the power system nominal frequency (50 or 60Hz.)
The generalised 'phasor study' is useful in the study of power system harmonics, which requires simulation of the power system at 50Hz and its harmonic frequencies 100Hz, 150Hz, 200Hz, 250Hz, ... and so on. This is done by running one separate 'phasor study' for each harmonic frequency of interest.
On the difference between load-flow/phasor and dynamic/transient studies
A load-flow study evaluates steady state operation of a power system. We do load-flow studies to check that elements like transformers, overhead lines, and cables won't be overloaded, and that system voltage regulation is within acceptable limits (-6%, +10% for Australian domestic power supply.)
The time scale of interest is hours to days.
The loadflow study is just an exercise in solving a lot of simultaneous linear equations. There is no time dependent element, no differential equations, or anything exciting. You multiply some big matrices together and that's it.
A dynamic/transient study evaluates the behaviour of the power system when a change occurs. The change could be an increase or decrease in load, a line fault, a change in generator output, or a big motor starting.
The objective is to determine if there will be any detrimental effects on the scale of milliseconds to minutes. Detrimental effects might include - voltage spikes/dips, generator frequency slip, protection relay operation.
A dynamic/transient study must take account of the time-dependent response of the electrical and mechanical parts of the power system.
- Generators and motors have a mechanical inertia
- Capacitors and inductors have energy storage
- Iron-cored transformers have remanence/hysteresis
- Protection relays are digital signal processors which decide whether the power system is healthy or not, based on the history of the signals they see.
- Generators have control systems with sophisticated transfer functions for calculating output voltage set point and governor (throttle) set point
Therefore a transient study involves simulating a system of differential equations evolving over time, with a typical time step of 1 millisecond.
The electrical quantities are still voltages and currents, but there are also a lot of variables in things like 'generator inertial energy' and 'motor rotational speed'.
PS: I do power system studies for a living.
Best Answer
A brute force solution can be implemented using the following number system.
This described method will cover the minimum and maximum result.
For example, using a decimal number system, you can specify the tolerance by 10 values.
The number of digits is the number of components you want to vary.
Now, using the LSpice directive
.step param run 0 9999 1
you can use therun
parameter to define the value of each component.Using floor() you can select the component, e.g. component C is selected by
floor(run/10)-floor(run/100)*10
.(Note that the divisors are powers of 10, because a decimal number system is used. For other number systems, corresponding divisors must be used).
In the decimal number system, we have 10 tolerance values. Spreading them evenly, the digit has to be subtracted and then divided by (10-1)/2. So, digit value "0" gives -1, digit value "9" gives +1.
With these notes, if the value for component B is e.g. 680Ω 1% the LTspice resistor value becomes
R={ 680 * (1 + 0.01*( floor(run/10)- floor(run/100)*10 -4.5)/4.5 )}
Below is a comparative result. I didn't have the diode, so I left it out. The first waveform is the total result, the second waveform zoomed in at the maximum values, the third waveform zoomed in at the minimum values, the last waveform is showing the values of the resistors.