非线性规划解决工资分配问题

news2024/11/23 19:03:36

来源:河北工业职业技术大学 安彤彤 彭金杉 张家硕

题目

薪资发放问题

一般公司给职员发放薪金,通常按每月等额发放。某公司即将改进薪金发放方案,允许任职5年以上的职员向公司财务部门申请工资每月可变额度发放,每月工资发放额度不超过年收入20%,前半年收入不超过年收入的80%, 剩余部分则作为年终奖在年底一次性发放。 职员们想通过调整每月的预发金额以及年终一次性发放金额,使得一年内个人的总收益最高。

针对以下各种情况。

  1. 请你查阅国家个人所得税税率表,为薪金年收入分别为8万元、12万元、18万元的职员们设计个人薪金领取方案,合理避税,使得一年的税后收入最高
  2. 该公司部分职员每月可以80%收入用于一些投资理财项目,如某些收益宝(百赚、余额宝等)、开放式基金、银行存款、债券、股票等, 请为他们设计个人薪金领取方案,使其年总收益最高。

注:个税税率2021

根据国家税务总局发布的最新个税税率表,2021年个税税率分为7级,具体如下:

级数

应纳税所得额(元)

税率(%)

速算扣除数(元)

1

0 - 36000

3

0

2

36000 - 144000

10

2520

3

144000 - 300000

20

16920

4

300000 - 420000

25

31920

5

420000 - 660000

30

52920

6

660000 - 960000

35

85920

7

960000以上

45

181920

速算扣除数

速算扣除数是用于简化计算个人所得税的方法,具体金额根据不同级数而定。速算扣除数的目的是为了减少纳税人缴税的工作量。

论文

基于非线性规划的最优薪金领取方案研究

摘要

本文通过理想化模型,非线性规划模型,设计了如何调整每月的预发金额以及年终一次性发放金额方案,使得一年内个人的总收益最高。该问题的研究为企业和个人,提供税务筹划和个人薪金领取方案,帮助其在合法的前提下进行合理避税,最大化收益。

针对问题一:首先通过直观的分析得出,需均匀分配年终奖奖金以及员工每月工资,使这两项同时达到税率临界点,再去分配个人薪金领取方案,才能最大限度达到合理避税。然后我们计算了年收入多少时,达到三档率上限。得到年收入与纳税额的关系,从而求出二者关系的局部分段函数,由此找到每个年收入对应的税率区间,再代入题中要求的年收入,得出最小纳税结果。最后通过matlab代码遍历奖金范围,输出最小纳税额,对以上结果进行检验。

针对问题二:为解决投资收益率的时效性问题,建立了投资理想化月收益率模型,再由此建立非线性规划模型分析月收益率与相对年收入的关系。得到了给定税前年收入,月薪如何分配以达到相对年收入最高的模型。通过matlab中的非线性规划求解器中的“内点法”进行遍历月收益率增长,可以得到税前年收入为一个确定的值时,相对年收入随月收益率增长,月薪的分配情况。我们给定税前年收入为8万,将月薪分配情况配情况填入了附本80000.xlsx文件。为了观察税前年收入固定时,月收益率在一定区间内,每增长0.01%时,相对年收入平均增长固定值的规律,我们通过matlab一段代码运算出来,在月收益率的变化区间内的分段函数表达式。最后,通过“决定系数"分析方法,对R²进行拟合度分析。

关键词: 理想化模型,非线性规划模型,matlab,分段函数

  • 问题重述

1.1问题背景

某公司为适应市场变化并激励长期服务于公司的核心人才,打破了传统的等额月度制度,优化其薪资管理体系。针对在公司连续工作满五年的资深员工,公司引入一项全新的薪资发放选择机制。符合条件的员工可以根据自身的经济需求和规划,向公司财务部门申请工资每月可变额度发放,但须确保任何单月的工资数额不超过其年薪的20%。同时,此机制还需满足半年内的总收入上限,即上半年所获工资总额不得超过年薪的80%。剩余未提前发放的部分将作为年终奖金,在每年年末一次性发放。员工们面临的关键决策在于如何最优化地调整每个月预领工资的数额以及接受年终一次性发放的奖金规模,从而在遵循公司上述规定的前提下,最大限度地提高自己全年度的总体收入水平。

1.2问题提出

针对以下各种情况

问题1 查阅国家个人所得税税率表,为年收入为8万元、12万元、18万元的职员,设计个人薪金领取方案,合理避税,使得一年的税后收入最高。

问题2 部分职员每月可以将80%收入用于投资理财项目,为他们设计个人薪金领取方案,使其年总收益最高。

1.3已知条件

2021年个税税率

根据国家税务总局发布的最新个税税率表,2021年个税税率分为7级,具体如下:

级数

应纳税所得额(元)

税率(%)

速算扣除数(元)

1

0 - 36000

3

0

2

36000 - 144000

10

2520

3

144000 - 300000

20

16920

4

300000 - 420000

25

31920

5

420000 - 660000

30

52920

6

660000 - 960000

35

85920

7

960000以上

45

181920

  • 问题分析

2.1 问题一

分配一年年收入在缴纳税后,收入最高的方案,必须在符合法律的前提下进行合理避税。这是合理实施纳税方案的前提。年总收入大于60000的人群,需考虑月工资起征点5000,12个月工资总额需不小于60000,才能最大限度避掉起征点不需要缴纳的税。把纳税总额分为2部分,一部分为十二个月工资总和部分所需上交的税额,另外一部分为年终奖部分所需上交的税额。要使纳税总额最小的就是保证月工资纳税和年终奖纳税总额最少。通过直观的分析,企业发放年终奖奖金以及员工每月工资的不均衡发放,必然导致个人所得税税负提高,实际到手的收入减少。每月均匀发放工资薪金会降低个人所得税的税率,会减少应纳个人所得税金额。企业在发放年终一次性奖金时,应抓住税率临界点。本方案即在寻找这个税率的临界点。

根据2021年中国个人所得税税率表,我们为不同年收入水平的职员制定相应的薪金领取方案以合理避税,使一年的税后收入最高:

年收入8万以及12万的职员:

年收入为8万以及12万时,需满足十二个月应纳税所得额总和不超过36000,且剩余年终奖也满足应纳税所得额不超过36000的情况时。总纳税额最小,年总收益最高。

年收入18万元的职员:

年收入为18万时,需满足十二个月应纳税所得额总和不超过144000,且剩余年终奖也满足应纳税所得额不超过36000的情况时。总纳税额最小,年总收益最高。

2.2 问题二

分配个人薪金领取方案,需要兼顾税收节省与投资收益的双重目标,使其最大限度的在每年年末总收益最高。

收益最高,首先要保证投资的本金达到最大值,也就是每月收入的80%全部都用来投资理财项目。而每个月的收入是不固定的,又考虑到每月工资发放额度不超过年收入20%,前半年收入不超过年收入的80%。所以既要让工资早并且多的拿到手里,还要考虑到薪金领取限制条件和避税问题。

在避税方面还需考虑如何能充分利用税收优惠政策,又能保障投资收益最大化的平衡点。使得盈利达到一个区间时,每月拿多少工资减去缴纳的税,可以使收益最大。又或是利率在达到一个值时,远远大于本金所需缴纳的税,此情况就要月薪金领取方案达到最大限制条件(即不需要考虑纳税金额)。再或是利率低于某一个值时,所需缴纳的税大于盈利,此时就与第一问的薪金领取方案所考虑的一致,需保证在最大程度避税的前提下,稳定取得较小投资收益。

投资理财产品需考虑理财产品的风险、收益率、回报率、流动性等。如股票债券,有时会上涨100%,有时会下跌300%;国债是相对来说很稳定的收益,全年活期收益率稳定在一个数值上下为浮动,基本不会超过1%;银行利息时最有保障最低收益的一种。并且还要考虑到像国债与银行存款等都分为死期与活期存款,死期又分三月期、六月期、全年期等。

还需考虑投资产品的风险程度及职员自身的现金流需求。若投资产品风险较高,建议预留一定比例的月度工资作为安全缓冲,以确保日常生活不受影响。这里务必注意投资市场的波动性和不确定性,不能单纯为了追求避税而忽略投资风险。

最后,考虑到投资收益率的时效性,我们建立了一个理想化模型,便于计算出年收入不同的收益额是多少。

  • 模型假设

3.1问题假设

1. 假设我们遵循2021年中国个人所得税税率表和年终奖的单独计税规则,年终奖采用一次性计税方式。

2. 假设本题中设计个人薪金领取方案不同年收入的职员的任职时间均满五年,员工已知其年收入,并且他们可以灵活调整每月工资发放额度,但不得超过年收入的20%,并且前6个月的累计收入不得超过年收入的80%。职员通过调整月度工资和年终奖发放比例,最大程度地减少个人所得税负担,从而提高全年税后收入。

3. 假设这部分职员将每月收入的80%投入投资理财项目。

4. 假设员工的生活开销可以从月度工资中得到充分满足,调整工资领取方案不影响正常生活需求,且不会产生额外借贷成本。

5. 假设不用考虑可以税前扣除的基本养老保险金、住房公积金和住房补贴,实际操作时应作为纳税筹划因。

3.2 理想化模型假设

1. 月收益率稳定性:假设每个月的收益率固定且一致,忽略实际市场中收益率可能出现的波动性,即不论市场条件如何变化,每个月的收益率始终不变。

2. 无复利效应:假设每个月产生的投资收益不会再次投资从而产生额外收益。

4. 无交易成本和税费:假设投资不计入交易成本,如手续费、管理费等,也不考虑税费对投资收益的影响。

5. 风险性:假设无投资风险,月收益率≥0。

6. 市场效率:假设投资收益不受市场波动的影响,所有投资者都能获得同样的固定收益率。

7. 月收益率变化区间 [0.00%,100.00%]

  • 符号说明

符号

意义

单位

T

年总纳税额

P

税前年收入

X

月收益率

/

Xt

t月税前工资(即月薪)

Xt′

t月所需缴纳的税

(Xt- Xt′)

每个月投资本金

A

税前年终奖

A′

年终奖所需缴纳税

M

相对年收入

Z

年总收入

  • 模型的建立与求解

5.1 问题一模型的建立与求解

研究年收入与应纳税额关系,首先根据题意,将年收入分为年终奖和十二个月工资总和来看,结合个税税率表我们发现:

当每月应纳税所得额恰好达到起征点时,起征点=5000*12=60000,即年收入≤60000时不需要缴纳税额;

当年终奖和十二个月的工资总合均恰好达到第一级税率上限时,年终奖应纳税所得额为36000,十二个月的工资总合应纳税所得额为8000*12=96000,即60000<年收入≤132000时应缴纳所得税需缴纳3%的税。

当年终奖和十二个月的工资总合均恰好达到第二级税率上限时,年终奖应纳税所得额为144000,十二个月的工资总合应纳税所得额为17000*12=204000,即132000<年收入≤348000时应缴纳所得额需缴纳10%的税,再减去第二级的速算扣除数。

以此类推,因为本题年收入不涉及到第二级税率之后的税率,所以之后的节点在这里不进行计算。

基于上述发现,处于这几个节点之内的年收入,只需确保分配年终奖与十二个月每月的月工资都不超过对应节点的税率级数,以及在月工资、前半年工资发放符合题目约束条件下,可任意分配。节点计算结果如表1所示

表1 特殊年收入节点明细

年收入

12个月工资总和

年终奖

纳税总额

60000

60000

0

0

132000

96000

36000

2160

348000

204000

144000

23760


取其变化趋势展示如图1:

图1

由上述图表可以看出,年收入在60000~132000之间,纳税额较缓慢增长;年收入达到132000以后,纳税额较急速增长。观察可得年收入与纳税额的关系符合分段函数的特点,且前后两段均为一次函数。

因此带入点的坐标,得到的分段函数表达示为:

公式1

其中,年总纳税额为T,税前年收入为P

将8万、12万、18万带入对应的分段函数表达式中,得到其对应的所需缴纳的税额分别为600、1800、6960。

据分段函数与图表分析,年收入为8万以及12万时,十二个月应纳税所得额和年终奖应纳税所得额都位于第一级税率范围内,即年收入全额适用3%的税率时,总纳税额最小,年总收益最高。年收入为18万时,十二个月应纳税所得额和年终奖应纳税所得额都位于第二级税率范围内时,即年收入全额适用10%的税率时,总纳税额最小,年总收益最高。

满足此情况的个人薪金领取方案有无数种,我们针对每月工资平分,设计了以下个人薪金领取方案。 设计方案如下表2:

表2合理避税一年后个人薪金领取方案

年收入(元)

80000

120000

180000

纳税额(元)

600

1800

6960

每月月工资(元)

5000

8000

12000

年终奖(元)

20000

24000

36000

年总收益(元)

79400

118200

173040


最后我们使用簇状柱形图来直观展示8万、12万、18万税前税后年收入的对比,如图2:

图2

我们针对以上总纳税额最小的情况编写了matlab代码。通过输入年收入totalIncome,遍历奖金范围从而寻找最优税收组合,即可输出总纳税额最小minTax元。

5.2 问题二模型的建立与求解

运用非线性规划模型对月收益率与年收入的关系进行分析。考虑到投资收益率的时效性,我们建立了一个投资理想化月收益率模型,便于分配月工资以得到最佳薪金领取方案。

非线性规划的思路是: 随着月收益率由0.00%到100.00%的变化,月工资分配是自变量,相对年收入是因变量。采取给定税前年收入8万,计算月薪如何分配以达到相对年收入最高的方案。优化目标为得到最优个人薪金领取方案,优化目标函数为:

公式2

其中,月收益率为X,投资额度为每月工资的80%,t月税前工资(即月薪)为Xt,t月所需缴纳的税为Xt′, 每个月投资本金为(Xt- Xt′),年终奖纳税前为A,年终奖所需缴纳的税为A′,相对年收入为M,年总收入Z,税前年收入为P

公式3

公式4

约束如下

关于约束条件的说明: 每月工资发放额度不超过年收入 20%

前半年收入不超过年收入的 80%。

税前年终奖不应超过税前年收入。

因为本题年总收入和月收益率都是变化的,所以我们带入了年收入8万、12万、18万,借助matlab遍历月收益率增长,计算不同月薪分配方案,和相应的税后收入和投资收益,可以得到关于8万、12万、18万相对年收入,随月收益率增长,月薪分配情况见附录

我们使用matlab中的非线性规划求解器中的“内点法“进行求解,了解到该方法的原理是将所有可能值依次代入,求出符合约束的最优解,因此会出现与实际值偏差较大的离群点,所以我们进行剔除离群点操作后,再通过采用“均值替补法”对空数据进行补充。

观察月收益率0每次增长0.01个百分点,一直增长到100个百分点这段图像。我们发现:税前年收入固定时,月收益率在一定区间内,每增长0.01%时,相对年收入平均增长固定值。此时个人薪金如何领取能达到相对年收入最大。

我们通过matlab利用非线性回归模型根据前面所述约束条件和纳税计算规则敲写代码(详见附录2.1代码),生成年收入8万、12万、18万在不同收益率下最优薪金领取方案表格,详见附件1、附件2、附件三。

下表是税前年收入8万时,我们通过matlab一段代码运算出来(附录几),在不同月收益率的变化区间内的一次函数表达式,展示的规律为税前年收入固定时,月收益率在一定区间内,每增长0.01%时,相对年收入平均增长固定值。

表3

区间

函数

0.00%~0.78%

y = 390512.82x-600.00

0.78%~0.96%

y = 394444.44x-630. 67

0.96%~1.26%

y = 403479.25x-717.49

1.26%~1.41%

y = 411447.70x-817.89

1.41%~1.45%

y = 452146.41x-1391.74

1.45%~1.70%

y = 456699.71x-1457.76

1.70%~1.77%

y = 460399.32x + -1520.66

1.77%~2.08%

y = 487449.41x-1999.44

2.08%~3.83%

y = 498519.71x-2229.71

3.83%~4.31%

y = 503967.88x-2438.37

4.31%~5.95%

y = 506156.62x-2532.71

5.95%~14.11%

y = 514510.12x-3029.74

14.11%~21.27%

y = 515999.40x-3239.88

21.27%~25.03%

y = 516975.94x-3447.59

25.03%~62.50%

y = 518984.55x-3950.34


取其变化趋势展示如图X

  • 模型检验

6.1问题一的检验

在matlab解决问题一的代码中依次将年收入(totalIncome)输入为8万、12万、18万,遍历奖金范围从0到年收入(totalIncome)从而输出总纳税额最小(minTax)元依次为600、1800、6960。对照函数图像x上相对应的点相同,由此可见分段函数模型的准确性。

6.2问题二的检验

为检验模型的准确性,“决定系数"分析方法,我们对R²进行拟合度分析

从1万个点中随机抽取了1000个数据计算残差


得到残差图如下

图X

我们可以直观地看出,绝大部分点的上下波动不超过0.2。

而后我们计算10000个数据的总残差平方和:

总平方和:

决定系数:

其中R^2几乎等于1

说明模型基本符合所求。

  • 模型的评价与推广

7.1模型的评价

7.1.1理想化模型
7.1.1.1模型的优点

1.有效性:能够反映所研究的问题核心要素为月收益率的变化与合理避税问题如何影响个人薪金领取方案,排除次要因素的影响,如无交易成本和税费,从而提炼出简洁且普适的规律。

2.简洁性:具备高度的简化性,去除不必要的细节,保留最重要的变量(月收益率的变化)和参数,以便于理解、分析、解决问题。

3.实用性:足够实用,能够在实际的合理避税问题方面提供一定指导。能够帮助人们更好地了解国家税收政策,并且合理避税。

4. 极限性:考虑到月薪分配的边界条件和极限情况,使模型在极端条件下依然能够得出合理并且符合限制条件的运算结果。

7.1.1.2模型的缺点

为了便于理解和解析问题,我们忽略掉不同理财产品具有不同的收益率,不考虑投资风险以及收益率是实时变化的情况,同时也不考虑投资收益再次投资从而产生额外收益的情况。

7.1.1.3模型的改进

在简化收益率模型的基础上,考虑更多影响因素,如考虑到投资收益会再次投资从而产生二次、三次收益等,以提高模型的现实贴合度。

在理想化模型中加入一些不确定因素分析,使个人薪金领取方案更具有现实参考性。

7.1.2非线性模型
7.1.2.1模型的优点

1. 能够准确地模拟复杂的税率体系,包括阶梯税率、扣除限额等各种非线性因素,这对于确定最优薪酬结构至关重要。

2. 全局优化:寻找个人所得税最小化的全局最优解,而非仅仅局限于某一局部最优解。

3. 灵活调整:当税率政策、个税起征点、扣除标准等因素发生变化时,模型可以迅速调整参数,重新进行优化,帮助个人制定出最新的最优薪酬领取策略。

4. 综合考虑多种收入类型:在实际薪酬发放中,可能涉及工资、奖金、福利、股票期权等多种形式的收入,每种收入类型的计税方式往往不同,非线性规划模型可以将不同的税收效应整合到一个模型中进行整体优化。

5.  建立模型之前,对附件中的数据进行了预处理,补充了缺失数据,校正了个别错误数据,建立了各类数据之间的联系,找出其规律,便于分析解决问题。

6. 文所有的数据处理均经过精确的分析、比对、效验,具有很强的准确性,真实性;模型求解结果进行了检验,可信度高,可靠性强。

7. 模型求解用到MATLAB、Excel 等多种软件,使求解过程更清晰、专业,运用多种绘图使得数据表达更加清晰明了

综上,非线性模型既能精细刻画实际情况,又能高效寻优,从而帮助企业和个人在合法合规的前提下,最大程度地减少税收负担。

7.1.2.2模型的缺点

模型需要持续跟踪政策动态,并随之更新。虽然强调的是“合理避税”,但在实际操作过程中,即便利用模型找出的方案仍可能存在模糊地带,容易触碰法律红线,造成不必要的税务争议和风险。

matlab非线性求解器使用内点法,容易陷入局部最优解,导致结果与实际有较大的偏差。需要引入其他方法,对模型中的自变量进行精细调整和优化,确保模型在处理具体问题时具有更高的预测精度。

7.1.2.3模型的改进

可以提炼关键因素和假设条件,适度的去简化模型,使其易于理解和求解。在模型中考虑除税收外的其他重要因素,比如社会保障、退休计划、员工激励效果等。多目标优化,使薪金领取方案在降低税负的同时,也能满足企业的激励需求和员工的期望。根据具体情境设定更多的约束条件,使模型更贴近实际情况。

7.2模型的推广

问题中建立的理想化模型,非线性规划模型贴近实际,适用于对合理避税分配薪资发放问题的分析与预测,有着广泛的通用性和借鉴意义,模型可操作性强,值得推广。

对于企业或个人而言,利用税收理想化模型,在合法合规的前提下进行税务筹划或调整个人薪金领取方案,在实际操作中能合理避税,最大化收益。

附录

1.1代码(matlab)
计算最少税收的薪资分配方案及其纳税额
%定义总收入(totalIncome)和个税起征点(taxThreshold)、最优税收(minTax)、月缴税(monthlyTax)
% 定义参数
totalIncome = 180000; % 税前年收入
taxThreshold = 5000; % 个税起征点(每月)
% 初始化变量
minTax = inf; % 最小税收值初始设为正无穷大
monthlyTax = 0; % 月工资缴税初始为空
salary=0;
% 遍历奖金范围寻找最优税收组合
for bonus = 0:totalIncome
% 计算月工资
salary = (totalIncome - bonus) / 12;
% 计算月工资对应的税收
if salary > taxThreshold
taxableSalary = salary - taxThreshold;
if taxableSalary < 3000
monthlyTax = taxableSalary * 0.03;
elseif taxableSalary < 12000
monthlyTax = taxableSalary * 0.1 - 210;
elseif taxableSalary < 25000
monthlyTax = taxableSalary * 0.2 - 1410;
elseif taxableSalary < 35000
monthlyTax = taxableSalary * 0.25 - 2660;
elseif taxableSalary < 55000
monthlyTax = taxableSalary * 0.3 - 4410;
elseif taxableSalary < 80000
monthlyTax = taxableSalary * 0.35 - 7160;
else % taxableSalary > 80000
monthlyTax = taxableSalary * 0.45 - 15160;
end
else
monthlyTax = 0;
end
% 计算年终奖对应的税收
annualBonus = bonus;
if annualBonus > 0
taxableBonus = annualBonus;
if taxableBonus < 36000
bonusTax = taxableBonus * 0.03;
elseif taxableBonus < 144000
bonusTax = taxableBonus * 0.1 - 210;
elseif taxableBonus < 300000
bonusTax = taxableBonus * 0.2 - 1410;
elseif taxableBonus < 660000
bonusTax = taxableBonus * 0.25 - 2660;
else % taxableBonus > 660000
bonusTax = taxableBonus * 0.45 - 15160;
end
else
bonusTax = 0;
end
% 计算并更新年度总税收
annualTax = monthlyTax * 12 + bonusTax;
% 如果当前税收小于已记录的最小税收,则更新最优税收
if annualTax < minTax
minTax = annualTax;
end
end
% 输出最佳税收分配结果
fprintf('最佳情况总的税收值: %.2f\n', minTax);

2.1代码(matlab)
计算一定工资下,月收益率增长所对应的分配方案以及相对年收入
D=zeros(15);
zonggongzi=180000;   
for i=0:0.0001:1
global shouyilv;
shouyilv = i
A = [1 1 1 1 1 1 0 0 0 0 0 0 0];
B = zonggongzi * 0.8;
aeq=[1 1 1 1 1 1 1 1 1 1 1 1 1 ];
beq=zonggongzi;
lb=[0,0,0,0,0,0,0,0,0,0,0,0,0];
ub=[zonggongzi*0.2;
    zonggongzi*0.2;
    zonggongzi*0.2;
    zonggongzi*0.2;
    zonggongzi*0.2;
    zonggongzi*0.2;
    zonggongzi*0.2;
    zonggongzi*0.2;
    zonggongzi*0.2;
    zonggongzi*0.2;
    zonggongzi*0.2;
    zonggongzi*0.2;
    zonggongzi
    ];
x0=[zonggongzi*0.2,zonggongzi*0.2,zonggongzi*0.2,zonggongzi*0.2,zonggongzi*0.2,zonggongzi*0.2,zonggongzi*0.2,zonggongzi*0.2,zonggongzi*0.2,zonggongzi*0.2,zonggongzi*0.2,zonggongzi*0.2,zonggongzi];

options = optimoptions('fmincon', 'Algorithm', 'interior-point','ConstraintTolerance', 1e-10,'MaxFunctionEvaluations', 100000000000000000000);
[x,fval] = fmincon(@nianshouyi,x0,A,B,aeq,beq,lb,ub,[],options); % 使用 options 结构作为额外参数

C=[shouyilv fval x];
D=[D;C];

end

% 指定Excel文件名
excelFileName = 'Example3.xlsx';

% 使用writematrix函数将数值数组写入Excel文件
writematrix(D, excelFileName);

function f = nianshouyi(x)
global shouyilv;
gongzinashui=zeros(12);
touzishouyi=zeros(12);
nashuihougongzi=zeros(12);
for i=1:12
if x(i)<5000
gongzinashui(i) = 0;
elseif x(i) <= 8000
gongzinashui(i) = (x(i)-5000) * 0.03;
elseif x(i) <= 17000
gongzinashui(i) = (x(i)-5000) * 0.1 - 210;
elseif x(i) <= 30000
gongzinashui(i) = (x(i)-5000) * 0.2 - 1410;
elseif x(i) <= 40000
gongzinashui(i) = (x(i)-5000) * 0.25 - 2660;
elseif x(i) <= 60000
gongzinashui(i) = (x(i)-5000) * 0.3 - 4410;
elseif x(i) <= 85000
gongzinashui(i) = (x(i)-5000) * 0.35 - 7160;
else
gongzinashui(i) = (x(i)-5000) * 0.45 - 15160;
end
nashuihougongzi(i)=x(i)-gongzinashui(i);
touzishouyi(i)=nashuihougongzi(i)*0.8*shouyilv*(12-i);
x(i)=touzishouyi(i)-gongzinashui(i);
end

if x(13) <= 36000
nianzhongjiangnashui = x(13) * 0.03;
elseif x(13) <= 144000
nianzhongjiangnashui = x(13) * 0.1 - 2520;
elseif x(13) <= 300000
nianzhongjiangnashui = x(13) * 0.2 - 16920;
elseif x(13) <= 420000
nianzhongjiangnashui = x(13) * 0.25 - 31920;
elseif x(13)<= 660000
nianzhongjiangnashui = x(13) * 0.30 - 52920;
elseif x(13)<= 960000
nianzhongjiangnashui = x(13) * 0.35 - 85920;
else
nianzhongjiangnashui = x(13) * 0.45 - 181920;
end
x(13)=-nianzhongjiangnashui;

f=-sum(x);
end

2.2代码(matlab)
计算函数表达式
%% 设置导入选项并导入数据
opts = spreadsheetImportOptions("NumVariables", 2);

% 指定工作表和范围
opts.Sheet = "Sheet2";
opts.DataRange = "A1:B17";

% 指定列名称和类型
opts.VariableNames = ["VarName1", "VarName2"];
opts.VariableTypes = ["double", "double"];

% 导入数据
S1 = readtable("E:\MATLAB\R2023a\bin\80000.xlsx", opts, "UseExcel", false);

%% 转换为输出类型
S1 = table2array(S1);

%% 清除临时变量
clear opts

for i=1:16
% 已知两个点的坐标
x1 = S1(i,1);
y1 = S1(i,2);
x2 = S1(i+1,1);
y2 = S1(i+1,2);

% 计算斜率 m
m = (y2 - y1) / (x2 - x1);

% 计算y轴截距 b
b = y1 - m * x1;

% 显示一次函数的表达式
fprintf('第%d段: y = %f*x %f\n',i, m, b);

end


2.3.1代码(matlab)
选取1000个数据计算残差
%% 设置导入选项并导入数据
opts = spreadsheetImportOptions("NumVariables", 2);

% 指定工作表和范围
opts.Sheet = "Sheet1";
opts.DataRange = "A3:B10002";

% 指定列名称和类型
opts.VariableNames = ["VarName1", "VarName2"];
opts.VariableTypes = ["double", "double"];

% 导入数据
Untitled = readtable("E:\MATLAB\R2023a\bin\80000.xlsx", opts, "UseExcel", false);

%% 转换为输出类型
Untitled = table2array(Untitled);

%% 清除临时变量
clear opts


e = zeros(1, 1000); % 初始化残差数组

for l=1:1000
x = randi([1, 10000], 1, 1);
c=x;
x=x/10000;
if x<0.0078
y = 390488.283505*x -600.000000;
elseif x<0.0096
y = 394500.454141*x -631.294931;
elseif x<0.0126
y = 403479.251638*x -717.491387;
elseif x<0.0141
y = 411447.704867*x -817.893898;
elseif x<0.0145
y = 452146.415812*x -1391.745722;
elseif x<0.0170
y = 456699.718246*x -1457.768607;
elseif x<0.0177
y = 460399.320019*x -1520.661837;
elseif x<0.0208
y = 487449.417579*x -1999.448564;
elseif x<0.0383
y = 498519.718725*x -2229.710828;
elseif x<0.0431
y = 503967.881965*x -2438.375480;
elseif x<0.0595
y = 506156.626476*x -2532.710369;
elseif x<0.1411
y = 514510.122171*x -3029.743362;
elseif x<0.2127
y = 515999.401217*x -3239.880636;
elseif x<0.2503
y = 516975.947511*x -3447.592033;
elseif x<0.6250
y = 518984.553957*x -3950.346226;
else
y = 519784.000008*x -4450.000008;
end

y1=Untitled(c,2);
e(l)=y1-y;
end
% 指定Excel文件名
excelFileName = 'cancha.xlsx';

% 使用writematrix函数将数值数组写入Excel文件
writematrix(e, excelFileName);


2.3.2代码(matlab)
计算所有数据的残差
%% 设置导入选项并导入数据
opts = spreadsheetImportOptions("NumVariables", 2);

% 指定工作表和范围
opts.Sheet = "Sheet1";
opts.DataRange = "A3:B10002";

% 指定列名称和类型
opts.VariableNames = ["VarName1", "VarName2"];
opts.VariableTypes = ["double", "double"];

% 导入数据
Untitled = readtable("E:\MATLAB\R2023a\bin\80000.xlsx", opts, "UseExcel", false);

%% 转换为输出类型
Untitled = table2array(Untitled);

%% 清除临时变量
clear opts

e = zeros(1, 10000); % 初始化残差数组

for l=1:10000

x=l/10000;
if x<0.0078
y = 390488.283505*x -600.000000;
elseif x<0.0096
y = 394500.454141*x -631.294931;
elseif x<0.0126
y = 403479.251638*x -717.491387;
elseif x<0.0141
y = 411447.704867*x -817.893898;
elseif x<0.0145
y = 452146.415812*x -1391.745722;
elseif x<0.0170
y = 456699.718246*x -1457.768607;
elseif x<0.0177
y = 460399.320019*x -1520.661837;
elseif x<0.0208
y = 487449.417579*x -1999.448564;
elseif x<0.0383
y = 498519.718725*x -2229.710828;
elseif x<0.0431
y = 503967.881965*x -2438.375480;
elseif x<0.0595
y = 506156.626476*x -2532.710369;
elseif x<0.1411
y = 514510.122171*x -3029.743362;
elseif x<0.2127
y = 515999.401217*x -3239.880636;
elseif x<0.2503
y = 516975.947511*x -3447.592033;
elseif x<0.6250
y = 518984.553957*x -3950.346226;
else
y = 519784.000008*x -4450.000008;
end

y1=Untitled(l,2);
e(l)=y1-y;
end
% 指定Excel文件名
excelFileName = 'cancha.xlsx';

% 使用writematrix函数将数值数组写入Excel文件
writematrix(e', excelFileName);



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1827087.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

笔记本开机原理

从按下开机键开始&#xff0c;机器是如何开到OS的呢&#xff1f;今天这篇文章和大家极少EC-BIOS-OS的整个开机流程。首先大家要对笔记本的基本架构有所了解&#xff0c;基本架构如下图所示&#xff08;主要组成部分为大写黑体内容&#xff09;。 一、按下PowerButton按钮&#…

css入门宝典

3.1.4 通配符选择器 语法 : *{} 作用 : 让页面中所有的标签执行该样式,通常用来清除间距 例子 : *{ margin: 0; //外间距 padding: 0; //内间距 } 一 CSS基本语法 1基础知识 1.1概述 Css (层叠样式表)是种格式化网页的标准方式&#xff0c; 用于控制设置网页的样式&#xff…

AOP面向切面(方法)编程

AOP面向切面(方法)编程 快速入门&#xff1a;以下示例是计算DeptServiceImpl每一个方法执行的时间 package com.example.aop;import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspec…

springboot集成shardingsphere

导入maven依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spr…

时代巨兽!深度神经网络如何改变我们的世界?

深度神经网络 1、 简介1.1 定义深度神经网络1.2 深度学习的发展历程1.3 深度神经网络的应用领域 2、深度神经网络的基本原理2.1 神经元层2.1.1 神经元2.1.2 神经元层 2.2 前向传播2.3 反向传播2.4 激活函数2.4.1、作用2.4.2、常见激活函数2.4.3、选择激活函数的考虑 2.5 损失函…

Qt QListView自定义树状导航控件

大部分的软件都有多个页面&#xff0c;这时候就需要一个导航栏控件&#xff0c;通过在导航栏中选择某一栏&#xff0c;同时显示对应的页面。 本文代码效果如下&#xff1a; 本文的导航栏控件基于大佬 feiyangqingyun 的导航栏控件博客Qt/C编写自定义控件46-树状导航栏_qt之实现…

24年最新版基础入门大模型辅助Python编程指南

今天这篇文章只会聊 Python 入门基础&#xff0c;如何通过大模型辅助Python 编程&#xff0c;在 后续的文章里慢慢聊。 一点点 python都不会。又想用大模型带飞&#xff0c;辅助 python 编程&#xff0c;提升数据分析能力和效率&#xff0c;怎么办&#xff1f; 一点都不需要担…

Dify源码本地部署启动

背景 Dify是一个开源LLM应用程序开发平台。Dify的直观界面结合了人工智能工作流、RAG管道、代理功能、模型管理、可观察性功能等&#xff0c;让您快速从原型到生产。 Dify提供在线试用功能&#xff0c;可以直接在线体验其功能。同时也支持docker部署&#xff0c;源码部署等方…

C++多线程:生产者消费者模式

文章目录 一、模式简介二、头文件、全局变量2.1 仓库类的设计2.1.1 关于仓库类的分析2.1.2 仓库类的设计代码 2.2 工厂类的设计2.2.1 关于工厂类的分析2.2.2 工厂类的设计代码a 将产品item放到仓库repob 将产品item从仓库repo取出c 生产者操作d 消费者操作 2.2.3 主函数代码 三…

Github 2024-06-14 开源项目日报Top10

根据Github Trendings的统计,今日(2024-06-14统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量JavaScript项目2Python项目2非开发语言项目2TypeScript项目1Dart项目1Rust项目1Lua项目1Java项目1Jupyter Notebook项目1从零开始构建你喜爱的技…

Jira,一个强大灵活的项目和任务管理工具 Python 库

目录 01初识 Jira 为什么选择 Jira? 02安装与配置 安装 jira 库 配置 Jira 访问 获取 API token: 配置 Python 环境: 03基本操作 创建项目 创建任务 查询任务 更新任务 删除任务 04高级操作 处理子任务 搜索任务 添加附件 评论任务 05实战案例 自动化创建…

java:spring actuator扩展原有info endpoint的功能

# 项目代码资源&#xff1a; 可能还在审核中&#xff0c;请等待。。。 https://download.csdn.net/download/chenhz2284/89437506 # 项目代码 【pom.xml】 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId&…

DomoAI让你轻松变身视频达人!支持20s完整视频生成!

账号注册 官网&#xff1a;https://www.domoai.app/zh-Hant/library 功能 支持不同风格的视频类型&#xff0c;支持图片转视频&#xff0c;支持文字转图片&#xff0c;支持静态图片变为动态。 可以切换语言为中文 风格转换 选择不同风格的 支持生成20s&#xff0c;目前接触…

牛客网金九银十最新版互联网Java高级工程师面试八股文出炉!面面俱到,太全了

前言 作为一个 Java 程序员&#xff0c;你平时总是陷在业务开发里&#xff0c;每天噼里啪啦忙敲着代码&#xff0c;上到系统开发&#xff0c;下到 Bug 修改&#xff0c;你感觉自己无所不能。然而偶尔的一次聚会&#xff0c;你听说和自己一起出道的同学早已经年薪 50 万&#x…

IDEA创建web项目

IDEA创建web项目 第一步&#xff1a;创建一个空项目 第二步&#xff1a;在刚刚创建的项目下创建一个子模块 第三步&#xff1a;在子模块中引入web 创建结果如下&#xff1a; 这里我们需要把这个目录移到main目录下&#xff0c;并改名为webapp&#xff0c;结果如下 将pom文件…

贪心算法学习四

例题一 解法&#xff08;暴⼒解法 -> 贪⼼&#xff09;&#xff1a; 暴⼒解法&#xff1a; a. 依次枚举所有的起点&#xff1b; b. 从起点开始&#xff0c;模拟⼀遍加油的流程 贪⼼优化&#xff1a; 我们发现&#xff0c;当从 i 位置出发&#xff0c;⾛了 step 步…

如何在 Windows 上安装 MySQL(保姆级教程2024版)

MySQL 是最流行的数据库管理系统 (DBMS) 之一。它轻量、开源且易于安装和使用&#xff0c;因此对于那些刚开始学习和使用关系数据库的人来说是一个不错的选择。 本文主要系统介绍Windows的环境下MySQL的安装过程和验证过程。 目录 1 安装过程 1.1 前置要求 1.2 下载并安装 …

【three.js】旋转、缩放、平移几何体

目录 一、缩放 二、平移 三、旋转 四、居中 附源码 BufferGeometry通过.scale()、.translate()、.rotateX()、.rotateY()等方法可以对几何体本身进行缩放、平移、旋转,这些方法本质上都是改变几何体的顶点数据。 我们先创建一个平面物体,样子是这样的。 一、缩放 // 几何…

基于Matlab的人脸表情识别系统(GUI界面)【W5】

简介&#xff1a; 该系统是一个基于Matlab开发的人脸表情识别应用程序&#xff0c;旨在识别输入图像中的人脸表情&#xff0c;并通过直观的图形用户界面&#xff08;GUI&#xff09;向用户展示识别结果。系统结合了图像处理、机器学习和用户交互技术&#xff0c;使用户能够轻松…

【PL理论】(24) C- 语言:有块的作用域 | 更新的语法 | 新的语义域 | 环境 vs. 内存

&#x1f4ad; 写在前面&#xff1a;我们将再次扩展之前的C语言&#xff0c;让我们向这种语言引入“作用域”的概念。 目录 0x00 C- 语言&#xff1a;有块的作用域 0x01 C- 语言&#xff1a;更新的语法 0x02 新的语义域 0x03 环境 vs. 内存 0x00 C- 语言&#xff1a;有块的…