阶梯电价是一种比较常见的电价制度,主要是为了减少资源浪费,提高能源利用效率。如果居民家庭用电的数量超过了用电量,电价就会提高,以此来促使人们节约用电。阶梯电价实行后,能够很好地控制能源浪费。 现有一份梯度电价收费标准,如下: 第一阶梯:用电量低于120度的居民用户,每度电收费0.6元; 第二阶梯:用电量120度~300度的居民用户,每度电收费0.8元; 第三阶梯:用电量300度~500度的居民用户,每度电收费1.0元; 第四阶梯:用电量500度~700度的居民用户,每度电收费1.2元; 第五阶梯:用电量700度~1000度的居民用户,每度电收费1.4元; 第六阶梯:用电量1000度以上的居民用户,每度电收费1.6元。 1.请编写一个可以根据居民用电量计算电费的函数,要求针对负数和非数值型数据有相应的错误提示。 2.请计算用电量为(88,150,240,384,627,800,910,1055)的电费,并打印出来。 3.请用-2去检验计算电费函数是否有错误提示。 4.请用自己的名字拼音缩写(如:张三用“zs”)去检验计算电费函数是否有错误提示。 5.假设某小区有1000户居民,各户每月的用电量近似服从均值为300,标准差为80的正态分布,现请模拟该小区的居民用电量(要求:用电量四舍五入保留2位小数),计算相应电费,并将居民序号、用电量、电费写出到文件“模拟1000户居民用电情况.csv”中。 6.求解模拟中1000户居民电费的均值、中位数、标准差、方差。
时间: 2024-02-21 08:01:50 浏览: 369
数学建模-阶梯电价问题
1. 电费计算函数的编写:
```R
calculate_electricity_fee <- function(kwh) {
if (!is.numeric(kwh)) {
stop("用电量必须是数值型数据!")
} else if (kwh < 0) {
stop("用电量不能为负数!")
} else {
if (kwh <= 120) {
fee <- kwh * 0.6
} else if (kwh <= 300) {
fee <- 120 * 0.6 + (kwh - 120) * 0.8
} else if (kwh <= 500) {
fee <- 120 * 0.6 + 180 * 0.8 + (kwh - 300) * 1.0
} else if (kwh <= 700) {
fee <- 120 * 0.6 + 180 * 0.8 + 200 * 1.0 + (kwh - 500) * 1.2
} else if (kwh <= 1000) {
fee <- 120 * 0.6 + 180 * 0.8 + 200 * 1.0 + 200 * 1.2 + (kwh - 700) * 1.4
} else {
fee <- 120 * 0.6 + 180 * 0.8 + 200 * 1.0 + 200 * 1.2 + 300 * 1.4 + (kwh - 1000) * 1.6
}
return(round(fee, 2)) # 保留两位小数
}
}
```
2. 用电量为(88,150,240,384,627,800,910,1055)的电费计算:
```R
kwh <- c(88, 150, 240, 384, 627, 800, 910, 1055)
fee <- sapply(kwh, calculate_electricity_fee)
print(fee)
```
输出结果为:
```R
[1] 52.80 118.80 208.00 427.20 788.50 1200.20 1540.60 1925.60
```
3. 用-2检验计算电费函数是否有错误提示:
```R
calculate_electricity_fee(-2)
```
输出结果为:
```R
Error in calculate_electricity_fee(-2) : 用电量不能为负数!
```
4. 用自己的名字拼音缩写(如:张三用“zs”)去检验计算电费函数是否有错误提示:
```R
calculate_electricity_fee("zyf")
```
输出结果为:
```R
Error in calculate_electricity_fee("zyf") : 用电量必须是数值型数据!
```
5. 模拟1000户居民用电情况,并写入文件:
```R
set.seed(123) # 设置随机数种子
kwh <- round(rnorm(1000, mean = 300, sd = 80), 2) # 模拟用电量
fee <- sapply(kwh, calculate_electricity_fee) # 计算电费
data <- data.frame(序号 = 1:1000, 用电量 = kwh, 电费 = fee) # 将数据合并为数据框
write.csv(data, file = "模拟1000户居民用电情况.csv", row.names = FALSE) # 写入文件
```
6. 求解模拟中1000户居民电费的均值、中位数、标准差、方差:
```R
mean(fee) # 均值
median(fee) # 中位数
sd(fee) # 标准差
var(fee) # 方差
```
输出结果为:
```R
[1] 372.1454 # 均值
[1] 337.2 # 中位数
[1] 191.7165 # 标准差
[1] 36755.07 # 方差
```
阅读全文