人口问题数据拟合的MATLAB程序
更新时间:2023-08-15 14:51:01 阅读量: 人文社科 文档下载
人口问题数据拟合的MATLAB程序
拟合
%拟合数据 人口问题
x=[1949 1954 1959 1964 1969 1974 1979 1984 1989 1994];
y=[5.4 6.0 6.7 7.0 8.1 9.1 9.8 10.3 11.3 11.8];
% 1 线性模型
%用一阶多项式
b=polyfit(x,y,1)
z=b(2)+b(1).*x;
plot(x,y,'r*',x,z),xlabel('x')
%用矩阵运算
A=[ones(size(x))', x'];
b=A\y'
z=b(1)+b(2).*x;
plot(x,y,'r*',x,z),xlabel('x')
%用线性回归
A=[ones(size(x))', x'];
[b,c,r,j,R] =regress(y',A)
% b 回归系数 c 回归系数的置信区间 r 残差 j 拟合数据的置信区间 R 相关系数 F值、p值
z=b(1)+b(2).*x;
z1=z+j(:,1)';
z2=z+j(:,2)';
plot(x,y,'r*',x,z,x,z1,x,z2),xlabel('x')
e=sqrt(sum((y-z).^2)/8)
zz1=z-1.96*e; zz2=z+1.96*e;
plot(x,y,'r*',x,z,x,zz1,x,zz2)
% 2 非线性模型 y=b(2)exp(b(1)x)
%转化为线性函数
A=[ones(size(x))', x'];
y1=log(y);
[b1,r,j,R]=regress(y1',A)
b=[exp(b1(1)) b1(2)]
z=b(1).*exp(b(2).*x);
e=sqrt(sum((y-z).^2)/8)
z1=z-1.96*e; z2=z+1.96*e
plot(x,y,'r*',x,z,x,z1,x,z2)
%用非线性函数拟合(缺点 初值不合适,就得不到解)
x=[49 54 59 64 69 74 79 84 89 94];
y=[5.4 6.0 6.7 7.0 8.1 9.1 9.8 10.3 11.3 11.8];
fun=inline('b(1).*exp(b(2).*x)','b','x');
b0=[2 0.01];
[b,r,j]=nlinfit(x,y,fun,b0)
z=b(1).*exp(b(2).*x);
plot(x,y,'r*',x,z)
nlintool(x,y,fun,b0) %拟合曲线图。
%预报
x=[1949 1954 1959 1964 1969 1974 1979 1984 1989 1994];
y=[5.4 6.0 6.7 7.0 8.1 9.1 9.8 10.3 11.3 11.8];
A=[ones(size(x))', x'];
[b,c,r,j,R] =regress(y',A)
z=b(1)+b(2).*x;
e=sqrt(sum((z-y).^2)/8)
x1=[x 1999 2005]
zz=b(1)+b(2).*x1;
y99=[zz(11)-1.96*e zz(11)+1.96*e]
y05=[zz(12)-1.96*e zz(12)+1.96*e]
z1=[z+j(:,1)' y99(1) y05(1)];
z2=[z+j(:,2)' y99(2) y05(2)];
plot(x,y,'r*',x1,zz,x1,z1,x1,z2),xlabel('x')
%人员疏散问题
x=[25 50 100 200 500];
y=[1.9 3.4 4.9 5.6 6.1];
b0=[2 3]; %参数初值
fun=inline( 'b(1).*x./(b(2)+x)','b','x');
%拟合函数
[b,r,j]=nlinfit(x,y,fun,b0)
%拟合函数的系数、残差
z=b(1).*x./(b(2)+x); z1=z+j(:,1)'; z2=z+j(:,2)';
plot(x,y,'*r',x,z,x,z1,x,z2)
e=sqrt(sum((y-z).^2)/3)
zz1=z-1.96*e; zz2=z+1.96*e;
plot(x,y,'*r',x,z,'r',x,zz1,x,zz2)
nlintool(x,y,fun,b0) %拟合曲线图。
clf
x=[1949 1954 1959 1964 1969 1974 1979 1984 1989 1994];
y=[5.4 6 6.7 7 8.1 9.1 9.8 10.3 11.1 11.8];
plot(x,y,'.r','MarkerSize',20),xlabel('x')
%解代数方程
[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))
%指数模型非线性拟合(失败)
fun=inline('b(1).*exp(b(2).*x)','b','x');
b0=[0.0001,-30],
[deta,r,j]=nlinfit(x',y',fun,b0);
%非线性拟合
xx=[25 50 100 200 500];
yy=[1.9 3.4 4.9 5.6 6.1];
beta0=[2,3];
fun1=inline('b(1).*xx./(b(2)+xx)','b','xx');
[beta,r,j]=nlinfit(xx,yy,fun1,beta0)
plot(x,y1,x,y2,x,y3,x,y,'.r','MarkerSize',20),xlabel('x')
解方程零点的MATLAB语言
零点
% 解方程 51=30*0.5/w+sqrt(0.5^2-w^2)
%用内联函数求零点
fun=inline('51-30*0.5/w-sqrt(0.5^2-w^2)','w');
w0=fzero(fun,0.3)
%用函数文件求零点
function y=fun(w)
y=51-30*0.5/w-sqrt(0.5^2-w^2);
w0=fzero(@fun,0.3)
%用循环语句搜寻零点
for i=1:100
w=0.3-0.001*i;
y=30*0.5/w+sqrt(0.5^2-w^2);
if y >=51
w0=w,
break;
end;
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');
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('Dx=r*x*(1-x/k)','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:
function y=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
function fyy=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),'r')
%高阶微分方程边值问题
Z=dsolve('x*D2y-3*Dy=x^2','y(1)=0','y(5)=0','x')
x=1:0.01:5;
s=subs(Z);
plot(x,s)
% lorentz 方程组
%周期轨线
function dot=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,[0 200],[1; 2; 3]);
plot3(yy(:,1),yy(:,2),yy(:,3));
%奇怪吸引子
function dot1=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); y(1)*y(2)-8/3*y(3)];
[t1,y1]=ode45(@odoneq,[0 200],[1; 2; 3]);
plot3(y1(:,1),y1(:,2),y1(:,3),'r');
试卷合理的均衡分配方案的计算机程序(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=[14 16 10 20 18 19 25 10 21 9 19 17 14 13 12 11 16 8 14 8 6 15 15 15 15 15 15 7 15 8 7 15 24 15 15 9 15 16 15 17];%我自己随便定的
M=zeros(32,32);
h=1%h评委的代码
j=1
b=0
f=3 %f是一份卷子f个人评阅
a=0;
b=l(n);
for n=1:40
for i=a+1:b
if h==n %规避原则
h=h+f
if h>32
h=h-32;
end
end
M(h,j)=i;
h=h+1;
if h==33
h=1;
j=j+1
end
end
a=b;
if n==40
break
end
b=b+l(n+1);
end
M=M %即所求矩阵
求数列2/1 3/2 5/3 8/5 13 /8 21/13 。。。。的前n(=100)项和 求数列2/1, 3/2 ,5/3 ,8/5 ,13 /8 ,21/13 。。。的前n(=100)项和
a(1)=2;a(2)=3;
b(1)=1;b(2)=2;
n=100;
sum=0;
for i=1: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;%赋初值
for i=1:n-1
a(i+1)=r*a(i)+b; %通项公式
end
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;%赋初值
for i=1:n-1 %注意i不能取到10,否则n=10时a(i+1)=a(11).
a(i+1)=r*a(i)+b; %通项公式
end
a %输出a数列的各项值
运行结果
a =
2.3300 12.9805 22.0334 29.7284 36.2691 41.8288 46.5545 50.5713 53.9856 56.8878 张丘建算经 百鸡问题及其解(程序)
<张丘建算经>百鸡问题及其解(程序)
问题:
鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问鸡翁母雏各几何? 列出方程式 :
x + y + z = 100
6*x + 3*y + (1/3)*z= 100
程序1:
只有兩個式子,所以
沒有辦法使用標準的方法去求解。
使用 程式設計的方法,是 使用暴力法
xyz=[];
for x=0 :100
for y=0 :100
z= 100 - x - y;
sum= 6*x + 310*y + (1.0/3.0)*z;
if sum-100==0
xyz=[xyz x y z];
else
end
end
end
xyz %如果输出的是xyz=[],则表明方程无整数解!
程序2
原方程变形为:
z = 100-x-y
y=(100-7*x)/4
编程序如下
x=0;
xyz=[];
while x<=100
if mod(100-7*x,4)==0 & 100-7*x>0
y=(100-7*x)/4;
z=100-x-y;
xyz=[xyz x y z];
end
x=x+1;
end
xyz
-----------------------------------
因为 100-7*x>0 ,即x<14.
所以可将 while x<=100 改为while x<14. 这样会提高程序的效率. 对程序2的改进:程序2'
x=0;
xyz=[];
while x<14 %由z = 100-x-y
if mod(100-7*x,4)==0 %由y=(100-7*x)/4
y=(100-7*x)/4;
z=100-x-y;
xyz=[xyz x y z];
end
x=x+1;
end
xyz
计算所有小于1000的Fibonnaci数列 % 计算所有小于1000的Fibonnaci数 f=[1;1];
i=1;
while f(i)+f(i+1)<1000
f(i+2)=f(i)+f(i+1);
i=i+1;
end
f=f',i
%运行结果
f =
Columns 1 through 12
1 1 2 3
144
Columns 13 through 16
233 377 610 987
i =
15
5 8 13 34 89 21 55
正在阅读:
人口问题数据拟合的MATLAB程序08-15
行政管理学复习资料附答案05-30
教学效果自我评价(精选多篇)04-09
大学物理习题1解答04-18
建筑企业统计模拟试题104-06
- 粮油储藏基础知识
- 论文范文(包括统一封面和内容的格式)
- 经典解题方法
- 综合部后勤办公用品管理办法+领用表
- 学生宿舍突发事件应急预案
- 16秋浙大《生理学及病理生理学》在线作业
- 四分比丘尼戒本(诵戒专用)
- 浙江财经大学高财题库第一章习题
- 九大员岗位职责(项目经理、技术负责人、施工员、安全员、质检员、资料员、材料员、造价员、机管员)
- 旅游财务管理习题(学生版)
- 德阳外国语高二秋期入学考试题
- 投资学 精要版 第九版 第11章 期权市场
- 控制性详细规划城市设计认识
- bl03海运提单3国际贸易答案
- 2010-2011学年湖北省武汉市武珞路中学七年级(上)期中数学试卷
- VB程序填空改错设计题库全
- 教师心理健康案例分析 - 年轻班主任的心理困惑
- 民间借贷司法解释溯及力是否适用?
- 三联书店推荐的100本好书
- 《化工原理》(第三版)复习思考题及解答
- 拟合
- 人口
- 程序
- 数据
- MATLAB
- 问题
- 感冒速愈外治法
- 图式理论与中学语文阅读理解-最新范文
- 河南省机关事业单位工勤技能岗位等级考核报考申请表
- 七年级数学假期作业
- 2009年上海交通大学材料科学基础考研真题
- 实&183;虚&183;玄——《秦腔》艺术手法散论
- 浙江省建设工程施工取费定额(2010版)_定稿
- 桥式起重机主起升机构设计
- 学科门类(二级类) 医学(基础医学类)
- 流化床富氧燃烧技术的研究进展
- BIOS工作原理1
- 基于视频的人脸识别研究进展
- 总结几种常见薄膜的表面特性和印刷适性
- J2EE技术架构
- 计算设备、生物特征识别方法和模板注册方法
- (完整word版)第1章习题解答
- 中考英语试卷及答案(纯WORD版)2
- 胸椎段脊柱相关疾病
- 西安科技五路周边房价
- 教师教学质量自评报告