yi
#include<stdio.h> #include<math.h> double min(double a,double b); double max(double a,double b); int main(){ //初始化参数 double c1=0,c2=0;//电池目前容量mah double v0=0;//充电器电压mV double v=4500;//电池充满电压mV double v1=3600,v2=3600,v3=0;//大小电池电压mV double i0=8,i1=0,i2=0,i3=0,i4=0;//电流A,i0 充电电流,i4放电电流 double r1=40,r2=200,r0=9,r3=55;//初始化充放电通路阻抗mΩ int t=0;//单位s int flag=0;//flag=1代表充电结束 //开始充电 scanf("%d",&flag); while(!flag){ //充电曲线 // if(v1<4000&&v2<4000) // v=min(v1+4*r1,v2+1.5*r2); // else if(max(v1,v2)<4400) // v=min(v1+3*r1,v2+r2); // else if(max(v1,v2)<4450) // v=min(v1+2*r1,v2+0.8*r2); // else // v=min(v1+1.5*r1,v2+0.5*r2); //满足充电电流为2A v3=(i0*r1*r3+i0*r1*r2+r3*v1+r2*v1+r1*v2)/(r1+r2+r3); v0=v3+2*r0; i1=(v3-v1)/r1; i2=(v3-v2)/(r2+r3); c1=c1+i1*0.2778; c2=c2+i2*0.2778; //V建模为V=4528-728(c/5000-1)^2 //v1=4528-730*(c1/5000-1)*(c1/5000-1); //v2=4528-730*(c2/5000-1)*(c2/5000-1); //电池电量建模为线性 v1=3600+0.2727*c1; v2=3600+0.9*c2; t++; if(v1>=v||v2>=v) flag=1; } printf("%f ",v1); printf("%f ",v2); printf("%d", t/60); } double min(double a,double b){ if(a>b) return b; else return a; } double max(double a,double b){ if(a<b) return b; else return a; }
#我想梦到的事#