章绍辉数学建模第一章

发布 2023-05-18 06:49:28 阅读 6459

一。x=-1:.05:1;y=sqrt(1-x.^2);

plot(x,[y;-y],'k',2.*x,[y;-y;2.*y;-2.*y],'k');

xlabel('x'),ylabel('y');

axisequal

holdon;

x1=0:.05:20;

y1=x1;

x2=0.1:.05:3;

y2=exp(x2);

plot(x1,y1,'k');

plot(x2,y2,'k',y2,x2,'k');

holdoff;

xlabel('x'),ylabel('y');

axisequal

n=input('max n=')x=y=

for q=2:n

for p=1:(q-1)

ifgcd(q,p)==1

x=[x,p./q];

y=[y,1./q];

endend

endplot(x,y,'k.')

axis([0,1,0,1]);

xlabel('x');ylabel('y')

title('riemann function');

二。一) 算法。

输入模拟试验次数n;

输出打赌者赢的概率p;

第1步初始化计数器k=0;

第2步对n=1,2…n循环进行3~7步;

第3步产生两个1~6的随机数求和并赋值给x;

第4步如果x是3或11,那么k加1,进入下一步循环;否则做第5步;

第5步如果产生4,5,6,8,9和10,则进入第6步;否则直接进入下一步循环;

第6步产生两个1~6的随机数求和并赋值给y;

第7步若y的值等于之前x的值,则跳出此步循环;若y的值为7,那么k加1,跳出此步循环;

第8步计算p=k./n。

二)matlab程序。

n=1000;

k=0;m=zeros(1,n);

fori=1:n

x=sum(randi(6,1,2));

switch x

casek=k+1;

caseflag=true;

while flag

y=sum(randi(6,1,2));

switch y

case x;

flag=false;

case 7;

k=k+1;

flag=false;

endend

endm(i)=k;

endfigure;p=m./(1:n);plot(m,p,'b');xlabel('n'),ylabel('p');p=k./n;

上图为不同的n值打赌者赢的概率变化图。

三)理论计算及收敛分析。

每个骰子的点数有 6 种结果:1,2,3,4,5,6. 掷两个骰子,掷出的点数组合( x, y )共有 6×6=36 种结果。

定义pi是点数之和x+y=i(i=2,3,…,12)的概率,则。

p2=p12= p3=p11= p4=p10= p5=p9= p6=p8= p7=

玩双骰子游戏,第 1 次掷出的点数之和为 3 或 11,则打赌者赢,可算得此情形打赌者赢的的概率a为。

a=p11+ p3=

当第 1 次掷出的点数之和是 4,5,6,8,9 或 10,继续掷骰子,直到掷出的点数之和是 7 或原来的值为止,如果先得到的点数之和是 7,则打赌者赢,利用条件概率,可算得此情形打赌者赢的概率b为。

b==所以打赌者赢的理论概率 p 为。

p=a+b=

就上图所示,收敛于。四。

i)程序。t=1790:10:2000;

x=[3.9,5.3,7.

2,9.6,12.9,17.

1,23.2,31.4,38.

6,50.2,62.9,76,92,106.

5,123.2,131.7,150.

7,179.3,204.0,226.

5,251.4,281.4];

ea=@(b,t)3.9.*exp(b(1).*t-1790));

ba=nlinfit(t,x,ea,0.03);

ssea=sum((x-ea(ba,t)).2);

eb=@(b,t)b(2).*exp(b(1).*t-1790));

bb=nlinfit(t,x,eb,[0.03,3.9]);

sseb=sum((x-eb(bb,t)).2);

ec=@(b,t)b(2).*exp(b(1).*t-b(3)))

bc=nlinfit(t,x,ec,[0.03,3.9,1790]);

ssec=sum((x-ec(bc,t)).2);

bb(1)-bc(1),sseb-ssec,eb(bb,1790)-ec(bc,1790)];

结果分析:i) 取定x0=3.9,t0=1790,拟合r,则得 r =0.021194,误差平方和等于 17418,最大;

ii) 取定t0=1790 ,拟合x0和 r ,则得x0 =14.994 ,r =0.014223,误差平方和等于 2263.9;

iii) 若拟合t0,x0,r,则得t0=1743.6,x0=x(1743.6)=7.

7507,r =0.014223,误差平方和等于 2263.9,r 、误差平方和以及 x (1790)的计算结果与方法 b 的误差都非常微小,但是 matlab 给出警告信息,指出条件存在病态,参数未必能拟合得好,拟合效果图如下。

plot(t,x,'k+',t,eb(bb,t),'ko')

axis([1780,2010,0,300])

xlabel('年份 t'),ylabel('美国人口 x (百万)')

title('指数增长模型非线性化拟合效果图')

legend('实际值','理论值',2)

2)对x(t)=x0er(t-t0)两边求导数得lnx(t)=r(t-t0)+lnx0,当t0=1790时令y=lnx(t),x=t-t0,β1=r,β0=lnx0,则转化为一次多项式y=β1x+β0,计算数据(ti,xi),计算得(xi,yi),其中。

xi=ti -1790,yi=lnxi(i=1,2,…,22)

用polyfit计算β1,β0最小二乘估计b1,b0,程序如下。

t=1790:10:2000;

x=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6,50.2,62.9,76,92,..

x=t-1790;

y=log(x);

b=polyfit(x,y,1)

r=b(1)

x_0=exp(b(2))

eb=@(a,t)a(2).*exp(a(1).*t-1790));

xhat=eb([r,x_0],t);

sse=sum((x-xhat).^2)

plot(t,x,'k+',t,xhat,'ko')

axis([1780,2010,0,300])

xlabel('年份 t'),ylabel('美国人口 x (百万)')

title('指数增长模型线性化拟合效果图')

legend('实际值','理论值',2)

拟合得x0=6.045,r=0.020219,误差平方和等于 34892,拟合效果图为:

3)绘图程序。

plot(x,x-eb(bb,t),'bo',x,x-xhat,'bh',[0,300],[0,0],'k')

xlabel('美国人口(百万)')ylabel('拟合误差')

title('指数增长模型的拟合误差比较图')

legend('非线性拟合','线性化拟合',3)

原因:因为对于x(t)数值越大的数据,y=lnx(t)由于求对数带来的损失越大,以至于线性化拟合的误差越大。

4)程序如下。

t=1790:10:2000;

x=[3.9,5.3,7.

2,9.6,12.9,17.

1,23.2,31.4,38.

6,50.2,62.9,76,92,106.

5,123.2,131.7,150.

7,179.3,204.0,226.

5,251.4,281.4];

za=@(b,t)b(1).*3.9./(3.9+(b(1)-3.9).*exp(-b(2).*t-1790)))

ba=nlinfit(t,x,za,[300,.02]);

ssea=sum((x-za(ba,t)).2);

zb=@(b,t)b(1).*b(3)./b(3)+(b(1)-b(3)).exp(-b(2).*t-1790)))

bb=nlinfit(t,x,zb,[300,.02,3.9]);

sseb=sum((x-zb(bb,t)).2);

zc=@(b,t)b(1).*b(3)./b(3)+(b(1)-b(3)).

exp(-b(2).*t-b(4)))bc=nlinfit(t,x,zc,[300,.02,3.

9,1790]);

ssec=sum((x-zc(bc,t)).2);

由上程序得到结果。

i)若取定x0=3.9,t0=1790,拟合r和n,则得r=0.027353, n =342.44,误差平方和等于1224.9;

ii)若取定t0=1790,拟合x0、r和n,则得x0=7.6981,r=0.021547, n =446.57,误差平方和等于 457.74;

iii)若拟合t0、x0、r和n,得t0=1771.3,x0=5.1752,r =0.021547, n =446.57,误差平方和等于 457.74.

综上(ii)最好,拟合程序及图如下:

plot(t,x,'b+',t,zb(bb,t),'bo')

axis([1780,2010,0,300])

xlabel('年份 t'),ylabel('美国人口 x (百万)')

title('阻滞增长模型非线性拟合效果图')

legend('实际值','理论值',2)

数学建模第一章

第一章方程 组 模型。本章学习目的 1 复习求解方程的基本原理和方法,掌握解方程的图形放 和迭代算法 2 能利用matlab软件编写迭代算法程序,了解迭代过程的图形表示 3 熟练掌握用matlab软件的函数来求解方程和方程组 4 通过范例展现求解实际问题的初步建模过程和matlab程序设计。1.1 ...

数学建模第一章

模型构成 在前面工作的基础上,将问题涉及的各个量符号化,以及各变量之间的内在联系形式化,利用适当的数学工具,将所关心的实际对象抽象为某个数学结构。可以是一个方程组的求解问题,也可以是一个最优化问题,也可以是其它。从简单的角度讲,这一环节要求用尽可能简洁清晰的符号 语言和结构将经过简化的问题进行整理性...

数学建模第一章

第一篇线性规划模型及应用。第一章线性规划问题的数学模型及其解的性质。1 1 1线性规划问题的数学模型。引例 某工厂生产某种型号的机床,每台机床上需要2.9米 2.1米和1.5米长的三种轴各一根,这些轴需要用同一种圆钢制作,圆钢的长度为7.4米。如果要生产100台机床,应如何下料,才能使得用料最省?分...