zoukankan      html  css  js  c++  java
  • C语言迭代求解

    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

     1 # include "stdio.h"
     2 # include "math.h"
     3 
     4 #define E   2.7182818
     5 #define Vps 5
     6 #define Vt 0.026
     7 #define Is 1e-13
     8 #define R 2e3
     9 #define precision  0.001
    10 
    11 int main ()
    12 {                                     
    13   float  Vd ;
    14   float y ;
    15   float temp=1 ;
    16   float updata=Vps ;
    17   float downdata = 0;
    18 
    19   Vd= Vps /2.0;
    20   while (temp > precision)
    21 //  if (temp > precision)
    22   {  
    23      y = Vd / Vt;                                   
    24      temp = Is * R * ( pow (E , y)-1) + Vd ;   
    25      temp = Vps - temp ;                           
    26      
    27      if (temp < 0) 
    28      {
    29        updata = Vd;
    30        Vd = Vd - (updata -downdata)/2;
    31      }
    32      else 
    33      {
    34       downdata = Vd;
    35        Vd = Vd + (updata - downdata)/2;
    36      }
    37      
    38      temp = fabs (temp);           
    39 
    40   }
    41   
    42   printf ("Vd = %.16lf
    ",Vd);
    43   system ("pause");
    44 } 


    if   else 中决定了 下一次 进入运算的Vd. 最后打印出的数据要求小数点后16位

  • 相关阅读:
    数据库多表查询
    链表的经典习题
    数据库基本概念及简单的单表操作
    Categrory
    2021春招冲刺练习目录
    2012春招冲刺-01.01 关于Cookie、什么是闭包、BFC与盒模型
    2021春招冲刺
    JS中bind,call,apply以及new的用法与实现
    2021春招冲刺-12.30 POST与GET | JS异步任务 | 判断变量类型
    2021春招冲刺-12.29-算法、原型与原型链、文档流
  • 原文地址:https://www.cnblogs.com/sepeng/p/3252762.html
Copyright © 2011-2022 走看看