并联充电模型2.0
充电模型2.0
#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 v=0;//充电器电压mV
double v0=4460;//电池充满电压mV
double v1=3800,v2=3800;//大小电池电压mV
double i1=0,i2=0;//大小电池电流A
double r1=90,r2=100;//充电阻抗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);
i1=(v-v1)/r1;
i2=(v-v2)/r2;
c1=c1+i1*1000/3600;
c2=c2+i2*1000/3600;
//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);
t++;
if(v1>=v0||v2>=v0)
flag=1;
}
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;
}
查看14道真题和解析
小红书公司福利 950人发布