怎么用MATLAB数学建模?

作者&投稿:颛径 (若有异议请与网页底部的电邮联系)
~

【求解答案】阿珍应选择产品A;阿强应选择产品B。

【求解思路】该题型属于经济学的不确定情况下消费者行为的问题。

1、题中的决策者可以认为是消费者;

2、运用预期效用函数来计算,即

3、比较E的大小,选择E值大的。就是决策者应选择的产品。

4、用matlab实现上述要求,可以这样书写其程序。

1)创建一个x从0到10的数组

2)创建u1(x),u2(x)效用函数

3)用plot绘图函数,绘制决策者的效用函数曲线

4)用xlabel和ylabel函数,标注坐标轴的名称

5)用legend函数,标注图例的名称

6)根据题意,创建p=[0.3,0.2,0.5];x=[5,8,9];数组

7)运用for循环语句,求出产品A和产品B的E值

8)运用if条件语句,分别判断产品A和产品B的最大E值

9)最后运用if条件语句,判断决策者阿强和决策者阿珍所选择的产品

【matlab代码及其解】

x=0:0.1:10;

u1=x;

u2=0.2*x.^2.*(x>=0 & x<=5)+(-10+4*x+0.2*x.^2).*(x>=5 & x<=10);

figure(1)

plot(x,u1,'r'),hold on

plot(x,u2,'g'),hold on

xlabel('x','FontSize',10);

ylabel('u(x)','FontSize',10);

legend('决策者阿强的效用函数u_1(x)','决策者阿珍的效用函数u_2(x)')

title('效用函数曲线') 

p=[0.3,0.2,0.5];x=[5,8,9];

%决策者阿强选择产品A

E11=0;

for i=1:3

u1=x(i);

E11=E11+p(i)*u1;

end

%决策者阿强选择产品B

E12=8; 

%决策者阿珍选择产品A

E21=0;

for i=1:3

if and(x(i)>=0,x(i)<=5)

u2=0.2*x(i)^2;

E21=E21+p(i)*u2;

else

u2=-10+4*x(i)+0.2*x(i)^2;

E21=E21+p(i)*u2;

end

end

%决策者阿珍选择产品B

E22=8; 

if E11>E12

disp('决策者阿强选择产品A')

else

disp('决策者阿强选择产品B')

end 

if E21>E22

disp('决策者阿珍选择产品A')

else

disp('决策者阿珍选择产品B')

end

【求解过程】

【本题知识点】

1、效用。效用是指消费者在商品和劳务的消费中获得的满足感。效用的大小取决于商品满足人们欲望和需求的能力,也取决于消费者对商品的需求程度以及消费者对其满足程度的主观心理评价。

2、效用函数。效用函数通常是用来表示消费者在消费中所获得的效用与所消费的商品组合之间数量关系的函数,以衡量消费者从消费既定的商品组合中所获得满足的程度。

效用函数的定义是设f是定义在消费集合X上的偏好关系,如果对于X中任何的x,y,xfy当且仅当u(x)≥u(y),则称函数u:X→R是表示偏好关系f的效用函数。

3、总效用。总效用是指消费者在一定时间内,连续消费一定数量商品所得到的总的满足感,用TU表示。

效用函数 TU=U(X)

4、边际效用。边际效用是指在一定的时间内,消费者每增加一个单位商品消费所得到的效用增加量,用MU表示。

边际效用函数  MUx=ΔTUΔ/X

5、期望效用函数理论。期望效用函数理论, 是20世纪50年代,冯·诺依曼和摩根斯坦在公理化假设的基础上,运用逻辑和数学工具,建立了不确定条件下对理性人选择进行分析的框架。

该理论是将个体和群体合而为一的。阿罗和德布鲁将其吸收进瓦尔拉斯均衡的框架中,成为处理不确定性决策问题的分析范式,进而构筑起现代微观经济学并由此展开的包括宏观、金融、计量等在内的宏伟而又优美的理论大厦。

如果某个随机变量X以概率Pi取值xi,i=1,2,…,n,而某人在确定地得到xi时的效用为u(xi),那么,该随机变量给他的效用便是:

U(X) = E[u(X)] = P1u(x1) + P2u(x2) + ... + Pnu(xn)

其中,E[u(X)]表示关于随机变量X的期望效用。因此U(X)称为期望效用函数,又叫做冯·诺依曼—摩根斯坦效用函数(VNM函数)。另外,要说明的是期望效用函数失去了保序性,不具有序数性。



首先,我们需要根据题目给出的信息,计算出每个产品在不同获利情况下的效用值。然后,我们可以使用MATLAB的绘图功能来画出两个决策者的效用曲线。
假设阿强和阿珍的效用函数分别为 u_A(x) 和 u_B(x) ,其中 x 为获利金额。对于产品A,我们可以列出如下效用函数:
u_A(5) = 0.3
u_A(8) = 0.2
u_A(9) = 0.5
对于产品B,其效用函数为 u_B(8) = 1。
现在我们可以使用MATLAB来画出这两个效用曲线。首先,我们需要定义这些效用值,然后使用 MATLAB 的 plot 函数来绘制这些曲线。
以下是MATLAB代码的示例:
matlab% 定义阿强的效用函数
prob_A_profit_5 = 0.3;
prob_A_profit_8 = 0.2;
prob_A_profit_9 = 0.5;
profit_A = [5 8 9];
utility_A = [prob_A_profit_5 prob_A_profit_8 prob_A_profit_9];

% 定义阿珍的效用函数
profit_B = 8;
utility_B = [1];

% 绘制阿强的效用曲线
x_A = linspace(min(profit_A), max(profit_A));
y_A =interp1(profit_A, utility_A, x_A, 'linear');
plot(x_A, y_A, 'r', 'LineWidth', 2);
hold on;

% 绘制阿珍的效用曲线
x_B = linspace(min(profit_B), max(profit_B));
y_B = interp1(profit_B, utility_B, x_B, 'linear');
plot(x_B, y_B, 'b', 'LineWidth', 2);
xlabel('Profit (万元)');
ylabel('Utility');
legend('阿强', '阿珍');
title('决策者的效用曲线');
grid on;
这段代码会生成一个图,显示了阿强和阿珍的效用曲线。
接下来,我们需要编写一个函数来找到最大化每个决策者效用的产品选择。我们可以使用 MATLAB 的 fminsearch 函数来找到这个最优解。以下是相应的 MATLAB 代码:
matlab% 阿强的最优产品选择
profit_A = [5 8 9]; % 产品A的获利金额
utility_A = [0.3 0.2 0.5]; % 阿强在产品A不同获利情况下的效用值
profit_B = 8; % 产品B的获利金额
utility_B = [1]; % 阿强在产品B的获利情况下的效用值

% 将阿强的效用函数转化为可计算的形式
util_func_A = @(x) max(interp1(profit_A, utility_A, x));
util_func_B = @(x) max(interp1(profit_B, utility_B, x));

% 为fminsearch函数设置初始猜测值,这里假设阿强和阿珍的初始猜测值均为8万元
x0 = 8;
[x, fval] = fminsearch(@(x) util_func_A(x), x0);
utility_max_A = max(interp1(profit_A, utility_A, x));
if utility_max_A > max(utility_B) % 如果阿强的最优选择带来的效用大于阿珍的最优选择带来的效用,则选择产品A;否则选择产品B。
disp('阿强应选择产品A');
else
disp('阿强应选择产品B');
end


如何用MATLAB把数值存入到一个定义好行数和列数的空矩阵中
以下代码可以用于处理任意n个数据,并存到任意指定的r行c列矩阵中 (前提:r*c=n)clcclear allclose alln = 8;x = randi(10, 1, n); % 随机生成n个数 (仅为举例,自行修改)disp('x:');disp(x);r = 2; % 行数c = n\/r; % 列数m = zeros(r,c); % 定义矩阵for ...

MATLAB 里怎么表示导数
操作方法如下:第一步首先看一下matlab常用的求导,求偏导函数。第二步在我们的电脑上打开matlab,在命令行窗口中输入syms x,f(x)=sin(x)+x^2 ,diff(f(x)对f(x)函数进行求导。第三步按回车键,可以看见求导的结果是2*x+cos(x)。第四步在命令行窗口中输入diff(f(x),3),按回车键求f...

已知一组数据服从正态分布,怎么用matlab画出其正态分布曲线
>> %先求出这一组数据的方差σ,均值μ;%然后调用函数 y=gaussmf(x,[σ μ],正态分布又被称为高斯分布%代码如下%比如一组数据:data=[2 4 6 8 10 12]data = 2 4 6 8 10 12 >> %求出均值u>> u=mean(data)u = 7>> %求出标准差s,然后平方得方差sq>> s=st...

如何用matlab对数组中每个数开方
写成一个for loop,对A中每一个数执行运算,不能直接对矩阵这样运算的 具体如下:A=[6 10 10 16 18 25]for i = 1:6 B(i) = ((A(i)*0.45)^(1\/3))\/20 end 这样应该就行了

如何用matlab将十进制(正整数)转化为十六进制
用函数dec2hex 语法str = dec2hex(d)d是数字, str是十六进制的字符串 例子:dec2hex(1023)ans = 3FF dec2hex(1023, 6)ans = 0003FF 以上~楼主说的是10进制转16进制, 不是十进制转 8 进制 而且数学上的10进制转8进制也不是kswuqq那么转的.把abc试出来? 1个方程3个未知数.还得求1-10内的...

怎么用matlab求商函数
函数的使用语法为x1=mod(y,z);返回的x为y除以后剩余数。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。

MATLAB怎么读取EXCEL中矩阵形式的数据,并存放在一个二维数组中_百度知 ...
1.如果数据文件为excel文件(xls或者xlsx格式的文件),如下图所示的数据文件。2.只需要使用MATLAB中提供的系统函数xlsread函数即可,其主要的调用形式为:a=xlsread('filename.xls');3.其中a表示读入文件所保存的变量名称,filename.xls(或者filename.xlsx)表示excel数据文件,help帮助文档中对xlsread...

如何用matlab标注函数最大值
函数最大值可以通过max函数获取。使用格式为 y = max(x);y保存最大值,x是函数值集合 为了在图上进行标注,可以采用text函数 text([a,b],num2str(y));其中,a,b分别对应了对话框的横纵坐标,num2str是将数值转换为字符输出

采用matlab生成随机数列,证明将一枚均匀硬币掷N次,当N很大时,正面出现...
r=rand(1,N);生成了N个在0~1之间的随机数。for i=1:N if r(i)>0.5 x=x+1;end end 这一段判断了这N个数大于0.5的个数x。最后x\/N就是概率。说白了就是大于0.5是正面,小于0.5是反面。新建个文件coin.m,下面的复制进去 function f=coin(N)r=rand(1,N);x=0;for i=1:N...

用MATLAB求函数的导数怎么输入
用MATLAB求函数的导数,可以diff()函数来求解。即 1、求函数y=ln[ln(lnx)]的一阶导数 >>syms x >>y=log(log(log(x)));>>dy=diff(y,1)dy =1\/(x*log(log(x))*log(x)) %计算结果 2、求函数y=x^4+exp(-x)+sin(x)的三阶导数 >>syms x >>y=x^4+exp(-x)+sin(x);...

云岩区18262763324: MATLAB怎么进行数学建模? -
孙典阿替: 一、数学建模的一般步骤 数学建模并不是新东西,粗略地说, 数学建模是一个多次迭代的过程,每一次 迭代大体上包括:实际问题的抽象、简化, 做出假设,明确变量和参数;形成明确的 数学问题;以解析形式或者数值形式求解 该数学模型...

云岩区18262763324: 如何用MATLAB进行数学建模 -
孙典阿替: MATLAB的含义是矩阵实验室(MATRIX LABORATORY),主要用于方便矩阵的存取,其基本元素是无须定义维数的矩阵.MATLAB自问世以来,就是以数值计算称雄.MATLAB进行数值计算的基本单位是复数数组(或称阵列),这使得...

云岩区18262763324: matlab在数学建模中的应用! -
孙典阿替: 看是哪种建模了,我知道的有M文件编程,这主要是通过相应函数编程的,还有simulink仿真,界面直观.至于你说的函数及主要单词的用法,这是一个很复杂的工程,要看你i偏向哪个方向,还有,一点悬赏分不给就想让别人告诉你函数的用法(个人觉得你这方面应该还没接触吧),我觉得不现实...

云岩区18262763324: matlab 怎么用.关于数学建模 怎么把很多的数据输入再画图 -
孙典阿替: 用x,y定义数据,然后倒入数据,倒入数据用代码load 加文件名,最好是.txt格式,然后在最上方有个路径选择,选好文件所在的地方,最后输入代码plot(x,y)就行.

云岩区18262763324: MATLAB编程(数学建模)
孙典阿替: ---------------- function dx=appollo(t,x) mu=1/82.45; mustar=1-mu; r1=sqrt((x(1)+mu)^2+x(3)^2); r2=sqrt((x(1)-mustar)^2+x(3)^2); dx=[x(2) 2*x(4)+x(1)-mustar*(x(1)+mu)/r1^3-mu*(x(1)-mustar)/r2^3 x(4) -2*x(2)+x(3)-mustar*x(3)/r1^3-mu*x(3)/r2^3]; --------------...

云岩区18262763324: 怎样快速掌握matlab以应对数学建模的需要
孙典阿替: 简单的可以Simulink工具就可以了,这个是个基于图形的建模工具.再费事一点的,推荐用Matlab提供的各种建模命令进行建模操作.但是,我强烈推荐您用m文件来编写您的建模程序,这个有利于修改和开发新的建模算法.

云岩区18262763324: matlab在数学建模中都会用到哪些东西.. -
孙典阿替: 数学建模中,用的比较多的是算法,像模拟退火、遗传算法、神经网络算法等等,当然还有很重要的一方面,一些模拟仿真也需要使用matlab,matlab博大精深,如果仅仅是为了数学建模,那么了解一些简单的算法,能够编一些简单的仿真,都是可以的.

云岩区18262763324: 如何用matlab建立数学模型 -
孙典阿替: 我的理解,matlab只是工具,他可不会建模哦,模型是自己把把一些问题用严谨的数学符号表示出来.

云岩区18262763324: MATLAB数学建模
孙典阿替: a=[5 1 -1 0;1 0 3 -1;-1 -1 0 5;0 0 2 4]; b=[1;2;3;1]; x=a\b y=det(a) x = 1.0000 -3.6429 0.3571 0.0714 y =70y为系数矩阵的行列式值

云岩区18262763324: MATLAB 数学建模 -
孙典阿替: (提示:牛顿第二定律f=ma,其中f为力,m为质量,a为加速度.重力加速度9.8米/平方秒.) 答案:第一级火箭:模型建立 设时间变量t,高度为h(t).第一级火箭模型为 令: ,则有 计算结果:第一级火箭燃烧完毕瞬间:t=53.333秒,高度:...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网