并联充电模型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;
}


全部评论

相关推荐

牛客吹哨人:哨哥晚点统一更新到黑名单:能救一个是一个!26届毁意向毁约裁员黑名单https://www.nowcoder.com/discuss/1525833
点赞 评论 收藏
分享
10-03 17:08
已编辑
西安电子科技大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务