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;
}

#我想梦到的事#
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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