广告费用和效应

来源:互联网 发布:句读之不知的知 编辑:程序博客网 时间:2024/04/27 18:06

题目

某装饰公司欲以每桶二元的价格购入一批彩漆。现必须对彩漆的售价做出合理的决定。一般来说,售价越高,销售量就越少。经测算售价与销售量的关系如表一所示。但如果投入一定的广告费用后,销售量将会有所增长,增长量可由增长因子刻划。例如投入3万元的广告费增长因子为1.85;即投入3万元的广告费后,销售量将会是预售量的1.85倍。表二是广告公司提供的广告费与增长因子的关系。现请你帮装饰公司定出售价和投入广告的费用,使得所获得的利润最大。

表一   (元、千桶)

售价

2.00

2.50

3.00

3.50

4.00

4.50

5.00

5.50

6.00

预期销售量

41

38

34

32

29

28

25

22

20

表二

广告费(元)

0

10.000

20.000

30.000

40.000

50.000

60.000

70.000

增长因子

1.00

1.40

1.70

1.85

1.95

2.00

1.95

1.80

x---预期销售量    y----售价    z------广告费    k-----销售增长因子  

s----实际销售量    s=k*x      c-----油漆单价c=2  r----利润

matlab求解过程

首先根据数据求预期销售量和售价的关系,增长因子和广告费用的关系。根据数据画出图像可知

x=a0*y+a1;线性关系

k=b0*(z^2)+b1*z+b2;二次曲线增长因子和广告费用

要求值为

max r=(y-c)*s-z (售价-单价)*实际销售数量-广告费用

r=(y-c)*(k*x)-z=(y-c)*(b0*(z^2)+b1*z+b2)*(a0*y+a1)-z;

 

x=a0*y+a1;线性关系

 

>> tx=[2.002.503.003.504.004.505.005.506.00]tx =    2.0000    2.5000    3.0000    3.5000    4.0000    4.5000    5.0000    5.5000    6.0000>> ty=[413834322928252220]ty =    41    38    34    32    29    28    25    22    20>> px=polyfit(tx,ty,1)px =   -5.1333   50.4222



 

k=b0*(z^2)+b1*z+b2;二次曲线增长因子和广告费用

>> tx=[0 10 20 30   40  50   60  70] tx =     0    10    20    30    40    50    60    70>> ty=[1.001.401.701.851.952.001.951.80]ty =    1.0000    1.4000    1.7000    1.8500    1.9500    2.0000    1.9500    1.8000>> pk=polyfit(tx,ty,2)pk =   -0.0004    0.0409    1.0187


变量为yz

r=(y-c)*(k*x)-z=(y-c)*(b0*(z^2)+b1*z+b2)*(a0*y+a1)*1000-z;

带入c=2、a0=-5.1333、a1=50.4222、b0=-0.0004、b1=0.0409、b2=1.0187

r=(y-2)*(-0.0004*(z^2)+0.0409*z+1.0187)*(-5.1333*y+50.4222)*1000-z;

要求r极大,是求-r极小。

-r=(y-2)*(-0.0004*(z^2)+0.0409*z+1.0187)*(-5.1333*y+50.4222)*1000-z;

.m文件

function [r,g]=fsolvefun(x)%UNTITLED Summary of this function goes here%   r=(y-c)*(k*x)-z=(y-c)*(b0*(z^2)+b1*z+b2)*(a0*y+a1)-z; c=2% x1价格y  x2广告费用=z% 求-r极小值r=x(2)-(x(1)-2)*(-0.0004*(x(2)^2)+0.0409*x(2)+1.0187)*(-5.1333*x(1)+50.4222)*1000;if nargout>1     g(1)=-(1000*(-0.0004*(x(2)^2)+0.0409*x(2)+1.0187)*((-5.1333*2)*x(1)+2*5.1333+50.4222));     g(2)=-((x(1)-2)*(-5.1333*x(1)+50.4222)*1000*(-0.0004*2*x(2)+0.0409)-1);%x2广告偏导helend


 

>> x0 =[ 2       10000]x0 =           2       10000>> options=optimset('Display','iter','tolfun',1e-18,'GradObj','on');>> [r,fval]=fminunc('fsolvefun',x0,options);


错误,不知道是什么原因?

>> [r,fval]=fminunc('fsolvefun',x0,options);??? Error using ==> fevalUndefined function or method 'fsolvefun' for input arguments of type 'double'.Error in ==> fminunc at 236        [f,GRAD(:)] = feval(funfcn{3},x,varargin{:});Caused by:    Failure in initial user-supplied objective function evaluation. FMINUNC cannot continue.


 

原创粉丝点击