人口问题数据拟合的MATLAB程序Word格式文档下载.docx

上传人:b****6 文档编号:21783683 上传时间:2023-02-01 格式:DOCX 页数:11 大小:18.45KB
下载 相关 举报
人口问题数据拟合的MATLAB程序Word格式文档下载.docx_第1页
第1页 / 共11页
人口问题数据拟合的MATLAB程序Word格式文档下载.docx_第2页
第2页 / 共11页
人口问题数据拟合的MATLAB程序Word格式文档下载.docx_第3页
第3页 / 共11页
人口问题数据拟合的MATLAB程序Word格式文档下载.docx_第4页
第4页 / 共11页
人口问题数据拟合的MATLAB程序Word格式文档下载.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

人口问题数据拟合的MATLAB程序Word格式文档下载.docx

《人口问题数据拟合的MATLAB程序Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《人口问题数据拟合的MATLAB程序Word格式文档下载.docx(11页珍藏版)》请在冰豆网上搜索。

人口问题数据拟合的MATLAB程序Word格式文档下载.docx

y1=log(y);

[b1,r,j,R]=regress(y1'

A)b=[exp(b1

(1))b1

(2)]

z=b

(1).*exp(b

(2).*x);

z1=z-1.96*e;

z2=z+1.96*eplot(x,y,'

x,z,x,z1,x,z2)%用非线性函数拟合(缺点初值不合适,就得不到解)x=[49545964697479848994];

fun=inline('

b

(1).*exp(b

(2).*x)'

'

b'

);

b0=[20.01];

[b,r,j]=nlinfit(x,y,fun,b0)

x,z)

nlintool(x,y,fun,b0)%拟合曲线图。

%预报

[b,c,r,j,R]=regress(y'

A)

e=sqrt(sum((z-y).^2)/8)

x1=[x19992005]

zz=b

(1)+b

(2).*x1;

y99=[zz(11)-1.96*ezz(11)+1.96*e]y05=[zz(12)-1.96*ezz(12)+1.96*e]z1=[z+j(:

y99

(1)y05

(1)];

z2=[z+j(:

y99

(2)y05

(2)];

x1,zz,x1,z1,x1,z2),xlabel('

%人员疏散问题

x=[2550100200500];

y=[1.93.44.95.66.1];

b0=[23];

%参数初值

fun=inline('

b

(1).*x./(b

(2)+x)'

%拟合函数

%拟合函数的系数、残差

z=b

(1).*x./(b

(2)+x);

z1=z+j(:

z2=z+j(:

*r'

x,z,x,z1,x,z2)

e=sqrt(sum((y-z).^2)/3)

x,z,'

r'

x,zz1,x,zz2)

clf

y=[5.466.778.19.19.810.311.111.8];

.r'

MarkerSize'

20),xlabel('

%解代数方程

[x1,x2]=size(x);

a=[ones(x2,1),x'

b=a\y'

%线性回归

b=regress(y'

a)

y1=b

(1)+b

(2).*x

n=1;

%一阶多项式模型

P=polyfit(x,y,n)

y2=polyval(P,x)

%指数模型转化为线性模型

yl=log(y);

Pl=polyfit(x,yl,1)

y3=exp(Pl

(2)).*exp(Pl

(1).*x)b2=exp(Pl

(2))

%指数模型非线性拟合(失败)

b0=[0.0001,-30],

[deta,r,j]=nlinfit(x'

y'

fun,b0);

%非线性拟合

xx=[2550100200500];

yy=[1.93.44.95.66.1];

beta0=[2,3];

fun1=inline('

b

(1).*xx./(b

(2)+xx)'

xx'

[beta,r,j]=nlinfit(xx,yy,fun1,beta0)

plot(x,y1,x,y2,x,y3,x,y,'

解方程零点的MATLAB语言零点

%解方程51=30*0.5/w+sqrt(0.5^2-w^2)

%用内联函数求零点

51-30*0.5/w-sqrt(0.5^2-w^2)'

w'

w0=fzero(fun,0.3)

%用函数文件求零点

functiony=fun(w)

y=51-30*0.5/w-sqrt(0.5^2-w^2);

w0=fzero(@fun,0.3)

%用循环语句搜寻零点

fori=1:

100

w=0.3-0.001*i;

y=30*0.5/w+sqrt(0.5^2-w^2);

ify>

=51

w0=w,

break;

end;

w0

%一元函数直接赋值做图

w=0.2:

0.001:

0.4;

y=51-30.*0.5./w-sqrt(0.5.^2-w.^2);

x=zeros(size(w));

plot(w,y,w,x),grid

%一元函数用内联函数赋值做图

y=inline('

-51+30*0.5/w+sqrt(0.5*2-w*2)'

w=0.1:

0.01:

0.5;

y_char=vectorize(y);

Y=feval(y_char,w);

plot(w,Y)

求解微分方程的MATLAB语言程序微分方程

%一阶微分方程

%求表达式(符号运算)

S=dsolve('

Dx=r*x*(1-x/k)'

)S1=dsolve('

x(0)=0.01'

%转换为函数值

r=0.3;

k=8;

C1=0.01;

s=subs(S)

t=0:

100;

ss=subs(s,'

t'

t);

plot(t,ss),grid

%求数值解

%建立函数文件fun.m:

functiony=fun(x,t)

y=0.3*x*(1-x/8);

%调用ode23(二、三阶龙格库塔法)解微分方程

[t,x]=ode23(@fun,[0,20],0.01)plot(t,x)

%高阶微分方程初值问题

%求数值解要化为一阶方程组

%建立M文件funs.M

functionfyy=funs(t,y)

fyy=[y

(1).*(1-y

(2).^2)-y

(2);

y

(1)];

[t,y]=ode23(funs'

[0,25],[0.25,0];

plot(t,y)

plot(t,y(:

1),t,y(:

2),'

%高阶微分方程边值问题

Z=dsolve('

x*D2y-3*Dy=x^2'

y

(1)=0'

y(5)=0'

x=1:

5;

s=subs(Z);

plot(x,s)

%lorentz方程组

%周期轨线

functiondot=odone(t,y)

dot=[10*(y

(2)-y

(1));

28*y

(1)-y

(2)-y

(1)*y(3);

y

(1)*y

(2)-8/3*y(3)];

[tt,yy]=ode45(@odone,[0200],[1;

2;

3]);

plot3(yy(:

1),yy(:

2),yy(:

3));

%奇怪吸引子

functiondot1=odoneq(t,y)

dot1=[10*(y

(2)-y

(1))-3*(28*y

(1)-y

(2)-y

(1)*y(3));

28*y

(1)-y

(2)-y

(1)*y(3);

[t1,y1]=ode45(@odoneq,[0200],[1;

plot3(y1(:

1),y1(:

2),y1(:

3),'

试卷合理的均衡分配方案的计算机程序(MATLAB)原题:

在大学生数学建模竞赛的评卷工作中,M个评委(M个评委来自不同的学校)要完成N份试卷的打分,竞赛试卷来自K个学校,第j个学校有竞赛试卷lj份,N=?

lj(j,1:

k)为节省人力,每份试卷只要由其中p(p<

M<

K<

<

N)个评委进行打分就行,1。

根据回避原则,要求评委不能阅自己学校的试卷,请给出试卷合理的均衡分配方案的数学模型,使各评委阅卷工作量均衡;

试卷分配均衡分散。

2。

给出试卷合理的均衡分配方案的计算机程序,要求用MATLAB或C语言编写。

输入参数为p,M,k,n,输出参数为各评委分别阅卷的号码,就下列实例给出问题的答案。

实例:

某省由竞赛试卷568份,32个评委阅卷,40所学校,3<

lj<

30自己设定,给出问题的答案。

程序:

l=[1416102018192510219

191714131211168148615151515151571587

15241515915161517];

%我自己随便定的

M=zeros(32,32);

h=1%h评委的代码

j=1

b=0

f=3%f是一份卷子f个人评阅

a=0;

b=l(n);

forn=1:

40

fori=a+1:

b

ifh==n%规避原则

h=h+f

ifh>

32

h=h-32;

end

M(h,j)=i;

h=h+1;

ifh==33

h=1;

j=j+1

a=b;

ifn==40

break

b=b+l(n+1);

M=M%即所求矩阵

求数列2/13/25/38/513/821/13。

的前n(,100)项和

求数列2/1,3/2,5/3,8/5,13/8,21/13。

a

(1)=2;

a

(2)=3;

b

(1)=1;

b

(2)=2;

n=100;

sum=0;

n

a(i+2)=a(i)+a(i+1);

b(i+2)=b(i)+b(i+1);

sum=sum+a(i)/b(i);

end

sum

结果

sum=

162.1030

差分方程的matlab解法

差分方程的一般形式为:

a(n+1),r*a(n),b

计算程序:

a

(1)=a0;

%赋初值

b=b0;

r=r0;

n=n0;

n-1

a(i+1)=r*a(i)+b;

%通项公式

a%输出a数列的各项值

实例:

比如要计算差分方程a(n+1),0.85*a(n),11,a

(1),2.33的前10项,

可写入下列代码:

a

(1)=2.33;

b=11;

r=0.85;

n=10;

n-1%注意i不能取到10,否则n,10时a(i+1)=a(11).

运行结果

a=

2.330012.980522.033429.728436.269141.828846.554550.571353.985656.8878

张丘建算经百鸡问题及其解(程序)<

张丘建算经>

百鸡问题及其解(程序)

问题:

鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问鸡翁母雏各几何?

列出方程式:

x+y+z=100

6*x+3*y+(1/3)*z=100

程序1:

只有兩個式子,所以

沒有辦法使用標準的方法去求解。

使用程式設計的方法,是使用暴力法

xyz=[];

forx=0:

fory=0:

z=100-x-y;

sum=6*x+310*y+(1.0/3.0)*z;

ifsum-100==0

xyz=[xyzxyz];

else

xyz%如果输出的是xyz=[],则表明方程无整数解!

程序2

原方程变形为:

z=100-x-y

y=(100-7*x)/4

编程序如下

x=0;

whilex<

=100

ifmod(100-7*x,4)==0&

100-7*x>

0

y=(100-7*x)/4;

z=100-x-y;

x=x+1;

xyz

-----------------------------------

因为100-7*x>

0,即x<

14.

所以可将whilex<

=100改为whilex<

14.这样会提高程序的效率.

对程序2的改进:

程序2'

14%由z=100-x-y

ifmod(100-7*x,4)==0%由y=(100-7*x)/4

计算所有小于1000的Fibonnaci数列%计算所有小于1000的Fibonnaci数

f=[1;

1];

i=1;

whilef(i)+f(i+1)<

1000f(i+2)=f(i)+f(i+1);

i=i+1;

f=f'

i

%运行结果

f=

Columns1through12

1123581321345589

144

Columns13through16

233377610987i=

15

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1