一,电压与电能消耗百分比图像
分析图像可知,当电池电压小于3.6V以后,电池电量迅速减少。
二,实验数据
容量百分比% | 电池电压 V |
100 | 4.2 |
90 | 4.08 |
80 | 4 |
70 | 3.93 |
60 | 3.87 |
50 | 3.82 |
40 | 3.79 |
30 | 3.77 |
20 | 3.73 |
15 | 3.7 |
10 | 3.68 |
5 | 3.5 |
0 | 2.5 |
这里的数据我是参考CSDN另一位博主的结果,后面参考资料有提到。
三,最小二乘法构造函数
这里,我们的得到了电池电量剩余百分比与电压的关系,那我们就可以利用最小二乘法来构造,以剩余电量百分比为因变量,电池电压为自变量的构造函数。
以下代码是MATLAB仿真。
x=[4.2,4.08,4,3.93,3.87,3.82,3.79,3.77,3.73,3.7,3.68,3.5,2.5];%电压
y=[100,90,80,70,60,50,40,30,20,15,10,5,0];%电量百分比
a=polyfit(x,y,1);
y1=polyval(a,x); %一次构造函数
b=polyfit(x,y,2);
y2=polyval(b,x);%二次构造函数
plot(x,y,'k');
hold on;
plot(x,y1,'b');
hold on;
plot(x,y2,'g');
text(4.2,100,"原曲线");
text(4.2,70,"一次构造");
text(4.2,110,"二次构造");
由图像可知,绿色曲线为二次构造函数,由于原函数的图像突变过于严重,对于结果的误差很大。
因此,我们使用分段函数的思想,就是把(3.68,10)作为断点,把函数分成两个部分。
于是,先丢弃比x=3.68还小的数据,得:
x=[4.2,4.08,4,3.93,3.87,3.82,3.79,3.77,3.73,3.7,3.68];%电压
y=[100,90,80,70,60,50,40,30,20,15,10];%电量百分比
a=polyfit(x,y,1);
y1=polyval(a,x); %一次构造函数
b=polyfit(x,y,2);
y2=polyval(b,x);%二次构造函数
plot(x,y,'k');
hold on;
plot(x,y1,'b');
hold on;
plot(x,y2,'g');
text(4.2,100,"原曲线");
text(4.2,70,"一次构造");
text(4.2,110,"二次构造");
接一下的部分是我们查看一下,二次构造函数,,双击点开我们的变量b
由图可知,其中a、b、c从左到右分别为图上三个参数,值得一提的是,“e+03”=10^3=1000
这样就可以构造出,电池电量百分比与电压的关系了。
但是,我们还有另一部分没有完成。后面这部分由于还剩下两个点,我们直接用两个求函数公式计算即可:
代入数据计算得:
y=5*x-12.5; //当电池电压小于3.68V公式,y为电池电量百分比单位为%
y=-263.2*x*x+2249.2*x-4705.2;//当电池电压大于或等于3.68V的公式