date : 2013/8/12 desinger :pengxiaoen
今天看 国外电子信息科学经典教材系列 《电子电路分析与设计》 电子工业出版社的 的19页。看到里面的 求二极管的电流电压公式
Vps = Vd + Id * R
= IsR【e ^(Vd/(n *Vt)) - 1】 + Vd
其中反向饱和电流 Is 为常量数值在10^-15 ~ 10^-13之间 ,取 10 ^-13A
Vt 为热力学电压 ,室温下 V = 0.026V
n为理想因素 ,1<= n <=2 .取值 1
在Vps = 5v 情况下 R = 2kΩ 如图 求出Vd 。因为是超越方程。所以可以用C 语言 采用 二分法 求解
程序中精度控制在 0.001 。就是允许有0.001 的误差。
常量 e=2.7182818
# include "stdio.h"
# include "math.h" #define E 2.7182818
#define Vps 5
#define Vt 0.026
#define Is 1e-13
#define R 2e3
#define precision 0.001 int main ()
{
float Vd ;
float y ;
float temp= ;
float updata=Vps ;
float downdata = ; Vd= Vps /2.0;
while (temp > precision)
// if (temp > precision)
{
y = Vd / Vt;
temp = Is * R * ( pow (E , y)-) + Vd ;
temp = Vps - temp ; if (temp < )
{
updata = Vd;
Vd = Vd - (updata -downdata)/;
}
else
{
downdata = Vd;
Vd = Vd + (updata - downdata)/;
} temp = fabs (temp); } printf ("Vd = %.16lf\n",Vd);
system ("pause");
}
if else 中决定了 下一次 进入运算的Vd. 最后打印出的数据要求小数点后16位