前言
厌烦了练习二中随意拼凑的无意义的程序?这章会有更有意义的程序,但仍然需要你去按照之前的情况,在实现之后每行加上注释,明白每一行命令是什么,如果你在某一命令卡住了,这章也有相应办法,让你熟悉matlab中自带的文档功能。
练习是学习语言的最好途径。
保存为ex3_exp.m
t = 1790:10:1980;
x_t = [3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4 38.6 50.2 62.9 76.0 92.0 106.5 123.2 131.7 150.7 179.3 204.0 226.5];
y = log(x_t);
a = polyfit(t, y, 1)
r = a(1)
x_0 = exp(a(2))
x_1 = x_0 .* exp(r .* t);
plot(t, x_t, t, x_1);
>>ex3_exp
以下保存为Mycurv.m
function [f] = Mycurv(a, t)
f = a(1) ./(1+(a(1)/3.9-1)*exp(-a(2)*(t-1790)))
以下保存为ex3_logi.m
x = 1790:10:1990;
y = [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 226.5 251.4];
plot(x,y,'*',x,y);
hold on;
a_0 = [0.001, 1];
a = lsqcurvefit('Mycurv',a_0,x,y);
disp(['a=' num2str(a)]);
x_i = 1790:5:2020;
y_i = Mycurv(a, x_i);
plot(x_i,y_i,'r');
x_1 = 2010;
y_1 = Mycurv(a, x_i);
hold off
>>ex3_logi
尝试
1.想往常一样,阅读文档,加上注释,如果你不明白那些新来的函数(不包括你自己定义的),就用matlab自带的help 来查阅资料。如
help plot
2.注释出背后的数学逻辑。如ex3_exp.m:
%
背景补充:这是马尔萨斯人口模型,数据来源是美国人口从1790年到1990年间的人口数据,具体可以查阅相关资料深入了解
加分习题
1.使用help查询一下glmfit。
2.进一步的,如果你想进一步了解某一函数,就使用doc指令,找到对应的文档,还有demo指令,能够给你提供一些简明的例子。
3.使用lookfor找到plot相关的一 些函数,试图用上述方法弄明白其中的一个两个。