Java教程

[MATLAB/编程]报童的诀窍/报童问题-图解法和二分法

本文主要是介绍[MATLAB/编程]报童的诀窍/报童问题-图解法和二分法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

MATLAB编程题目 : 报童的诀窍

关于每天报纸购进量的优化模型:

已知b为每份报纸的购进价,a为零售价,c为退回价(a>b>c),每天报纸的需求量为r份的概率是f( r )(r=0,1,2,…)。求每天购进量n份,使日平均收入,即
在这里插入图片描述
达到最大。

视r为连续变量,f( r )转化为概率密度函数p( r ),则所求n*满足

在这里插入图片描述

实验要求:

已知b=0.75,a=1,c=0.6,r服从均值=500(份),均方差=50(份)的正态分布。报童每天应购进多少份报纸才能使平均收入最高,这个最高收入是多少?

1.在这里插入图片描述的图解法(编程)。

参考实验12-1的实验要求2,编写程序,求出n*。

初始根区间为[450,550],增量取0.01,随着根区间变小可改为0.001。

clc;
clear;

syms y1 y2 a b c z
a = 1;
b = 0.75;
c = 0.6;
z = 450:0.01:550;

y1 = (a-b)/(a-c);
y2 = normcdf(z,500,50)-normcdf(0,500,50); %分布函数

plot([450,550],[y1,y1])
hold on;
plot(z,y2);

grid on;

% 输出交点
fsolve(@(z) (a-b)/(a-c) - normcdf(z,500,50)-normcdf(0,500,50),[450 550])

下图可见,交点在520左侧

在这里插入图片描述

补充:

关于匿名函数

@运算符创建句柄,@(x)为函数的入口,指定函数当中的变量x为函数的输入,在接受函数和进行求解时,对象为x。

如下例子,

sqr = @(z) 2.*z
sqr(3)

% 输入的变量默认输入到z当中
-> 6

关于fsolve

fsolve(@(x) f(x))解决的问题为f(x)=0

如下例子

fsolve(@(z) (a-b)/(a-c) - normcdf(z,500,50)-normcdf(0,500,50),[450 550])

解释 : 在z = [450,550]之间,寻找(a-b)/(a-c) - normcdf(z,500,50)-normcdf(0,500,50) = 0的解

2.在这里插入图片描述的数值解法(二分法。编程)

参考实验12-1的实验要求3,编写程序,求出n和G(n)。

初始根区间为[450,550]。

erfen.m

function y=erfen(a,b)  %二分法
if fun(a)*fun(b)<0    
    c=(a+b)/2;
    while abs(fun(c))>1.0e-4    % 二分分界点
        if fun(a)*fun(c)<0
            b=c; c=(a+b)/2;
        elseif fun(c)*fun(b)<0
            a=c; c=(a+b)/2;
        end
    end
    y=c;
elseif fun(a)==0
    y=a;
elseif fun(b)==0
    y=b;
else
    disp('区间中不存在根');
end
return;

main.m

function main()
clc;
n = erfen(450,550) 
return;

fun.m

function y=fun(z)  %方程
a = 1;
b = 0.75;
c = 0.6;
y = (a-b)/(a-c) - normcdf(z,500,50) - normcdf(0,500,50); % 构造函数差,方便二分查找
return;

1.计算正态变量的概率密度函数的调用形式为:Y=normpdf(X,mu,sigma)

正态变量的概率密度函数为在这里插入图片描述

其中:X是x的一组值,Y对应一组函数值。

mu为μ,sigma为σ。

当μ=0,σ=1时,为标准正态变量的概率密度函数。

2.计算正态变量的分布函数的调用形式为:P=normcdf(X,mu,sigma)

正态变量的分布函数为在这里插入图片描述在这里插入图片描述
标准正态变量的概率密度函数对应标准正态变量的分布函数。

这篇关于[MATLAB/编程]报童的诀窍/报童问题-图解法和二分法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!