MATLAB数学实验报告
实验日期:2012.5 学院:能源与动力工程 班级:化工11
组员:王旭 2110308015 陆清华 2110308011 仲秋晨 2110308024
一、 实验目的
1. 学习MATLAB软件的循环和选择结构,进一步提高MATLAB编程能力; 2. 通过对一些基础数学实验的学习和实践,了解级数逼近和数值积分、用最小二乘法进行数据拟合等的数学思想和数学方法,开拓数学视野,提高数学水平。
二、 实验内容
1.(1)问题:对于数列{√n},n=1,2,·,求当其前n项和不超过1000时的值以及和的大小。
(2)分析:这个问题书上已有例题解答,不过书上的程序运行结果最后一行结果并不是我们所要求的解的答案,而倒数第二行则是所求问题的解。以下是修改后的程序已解决此问题。 (3)程序:
clear;clc; n=1; s=1;
while s<=1000
fprintf('n=%.0f,s=%.4f\\n',n,s) n=n+1; s=s+sqrt(n);
end
(4)运行结果 ···
n=123,s=914.7651
n=124,s=925.9007 n=125,s=937.0810 n=126,s=948.3060 n=127,s=959.5754 n=128,s=970.8891 n=129,s=982.2469 n=130,s=993.6487
2.(1)问题:1790年到1980年各年美国人口数的统计数据如下表: 美国人口统计数字(单位:百万) 年份 统计 年1890 1900 1910 1920 1930 1940 1950 1960 1970 1980 3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4 38.6 50.2 1790 1800 1810 1820 1830 1840 1850 1860 1870 1880 份 统计 是根据前100年的数据,分别用Malthas模型和Logistic模型建立美国人口增长的近似曲线(设美国人口总容纳量为10亿),并预测后00年的人口数,通过与实际数据相比较,对两种预测结果进行分析。
(2)分析:根据题目要求分别用Malthas模型和Logistic模型建立美国人口增长的近似曲线。 (3)程序: %Malthas clear;clf t=1790:10:1980;
N=[3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4 38.6 50.2 62.0 72.0 92.0 106.5 123.2 131.7 150.7 179.3 204.0 226.5]; plot(t,N,'k.','markersize',20); axis([1790 2080 3 400]); grid;hold on pause(0.5) n=20; a=sum(t(1:n)); b=sum(t(1:n).*t(1:n)); c=sum(log(N(1:n)));
62.0 72.0 92.0 106.5 123.2 131.7 150.7 179.3 204.0 226.5 d=sum(t(1:n).*log(N(1:n))); A=[n a;a b]; B=[c;d]; p=inv(A)*B x=1790:2000; y=exp(p(1)+p(2)*x); plot(x,y,'r-','linewidth',2)
%Logistic clear;clf t=1790:10:1980;
N=[3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4 38.6 50.2 62.0 72.0 92.0 106.5 123.2 131.7 150.7 179.3 204.0 226.5]; plot(t,N,'k.','markersize',20); axis([1790 2080 0 1000]); grid;hold on pause(0.5) n=20; k=1000; M=N.^-1-k^-1; a=sum(t(1:n)); b=sum(t(1:n).*t(1:n)); c=sum(log(M(1:n))); d=sum(t(1:n).*log(M(1:n))); A=[n a;a b]; B=[c;d]; p=inv(A)*B x=1790:10:2080;
y=1./((1./k)+exp(p(1)+p(2)*x)); plot(x,y,'r-','linewidth',2)