// Tube Equation Test // Copyright 2008 Les Hall // This software is protected by the GNU General Public License float Vin, Vo, Ia, Vak, Vgk, Vo_prev, Vsum, Verror; int i; 100 => float Vaa; 100000 => float Ra; 100 => float Rk; 100000 => float Rl; 0.000001 => float K; 100 => float mu; // do the calculations Vaa/2 => Vo; Vo/100 => Vgk; Vo/2 => Vak; for (-10 => int j; j < 11; j++) { // sweep the input voltage j / 10.0 => Vin; Vo => Verror; 0 => i; while ( (Math.fabs(Verror) > 0.5) & (i < 100) ) { // iterate over solution i++; // increment iteration counter Vo => Vo_prev; // save previous guess at output Vo - Verror => Vo; // walk output along solution curve Vin - Rk*Ia => Vgk; // calculate tube input voltage Vo - Rk*Ia => Vak; // calculate tube output voltage mu * Vgk + Vak => Vsum; // calculate interior term of Ia if (Vsum <= 0) { // apply zero region 0 => Vsum; } K * Math.pow (Vsum, 1.5) => Ia; // calculate tube output current (1 / (1/Ra + 1/Rl)) * (Vaa/Ra - Ia) => Vo; // calculate output voltage Vo - Vo_prev => Verror; // calculate error voltage 100::samp => now; } //<<>>; <<<0.1, (Vaa/2 - Vo) / (Vaa/2)>>>; }