前言
厌烦了练习二中随意拼凑的无意义的程序? 这章会有更有意义的程序, 但仍然需要你去按照之前的情况, 在实现之后每行加上注释, 明白每一行命令是什么, 如果你在某一命令卡住了, 这章也有相应办法, 让你熟悉 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 相关的一些函数, 试图用上述方法弄明白其中的一个两个.
补充解答
来源: http://www.jianshu.com/p/9c039d7eb3bf