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;
} #我想梦到的事#
小红书公司福利 950人发布
查看12道真题和解析