matlab学习其五

===============================================================================================
1.层次分析法

目标层,准则层,方案层,
一致性检验
算数平均法,几何平均法,特征值,为了稳健,3个都一起用。
列归一,行求和,列归一。excel锁定f4
提出局限(n不能超过15个;专家的主观性太大max)。
变量区可以直接复制excel数据1

2.优劣解距离法topsis

正向化,标准化(消除量纲影响),归一化(公式变形)。d+ d-
给不同列赋权值可以结合层次分析法
熵权法权值修正 指标的变异性越低,信息量也就越低
信息量大小度量通过概率(清华)
信息熵的本质就是对于信息的期望值H(x)=-∑(p(xi)*ln(p(xi)))
I(p)信息量的大小=-ln(p(x)) //可能是mis的时候没有好好听吧,现在豁然开朗
特点:指标的权值由指标本身决定,避免专家的主观性,但是一些明显权重要大的指标可能变异性非常低
建模可用,论文不要用熵权法

3.插值算法(牛顿,拉格朗日,埃尔米特,样条插值)

适用数据较少,通过数学方法新增一些可靠的数据
原理:n+1个互不相同的点,有存在唯一的多项式,使的Ln(xi)=yi
拉格朗日插值
n变大,n次插值在边缘出现龙格现象
分段二次插值,也叫分段抛物插值,用与x最接近的3个点进行二次插值
牛顿插值 差商就是字面意思 二阶差商分母为系数最大的差,分子原则为大数减小数;k阶同理
上述两种缺点:满足被插值点,但不能反应函数形态,例如导数
埃尔米特插值
f(xi)=yi;f'(xi)=yi'
function [a]=lianxi() %加上function是在命令行工作区不留下记录;a是返回值,在命令行里变量名叫ans
x=-pi:pi;
y=sin(x);
newx=-pi:1:pi;
p=pchip(x,y,newx);
a=p;
plot(x,y,'o',newx,p,'p-')
三次样条插值更加平滑
function [a]=lianxi() %加上function是在命令行工作区不留下记录;a是返回值,在命令行里变量名叫ans
x=-pi:pi;
y=sin(x);
newx=-pi:0.1:pi;
p1=pchip(x,y,newx);
p2=spline(x,y,newx);
%a=p;
plot(x,y,'o',newx,p1,'p-',newx,p2,'b-')
legend('样本点','三次埃尔米特插值','三次样条插值','location','north')
插值算法可以用于短期预测(人口,尽量不要用,用拟合或者专门的预测算法);
//不知道哪里错了的一行代码
population=[133126,133770,134413,135069,135738,136427,137122,137866,138639,139538];
year 2009:2018;
p1=pchip(year,population,2019:2021)%分段三次埃尔米特插值预测
p2=spline(year,population,2019:2021)%三次样条插值预测
plot(year,population,'o',2019:2021,p1,'r*‐',2019:2021,p2,'bx‐')
legend('样本点','三次埃尔米特插值预测','三次样条插值预测','Location','SouthEast')
subplot 可用于在同一个图形中同时显示多幅 图像

4.拟合算法
当样本点n>30,龙格现象太严重,拟合的曲线是一条确定的曲线
直线:最小二乘法
可以直接加入路径:(加入环境变量的尝试失败)
例如:
fid = fopen('C:\Users\Desktop\知网.txt');%单引号必须得有
fidf06=fopen('pathname\filename');
拟合工具箱的使用cftool;
clear;clc
year = 1790:10:2000;
population = [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,251.4,281.4];
plot(year,population,'o')
cftool % 拟合工具箱
% (1) X data 选择 year
% (2) Y data 选择 population
% (3) 拟合方式选择:Custom Equation (自定义方程)
% (4) 修改下方的方框为:x = f(t) = xm/(1+(xm/3.9-1)*exp(-r*(t-1790)))
% (5) 左边的result一栏最上面显示:Fit computation did not converge:即没有找到收敛解,右边的拟合图形也表明拟合结果不理想
% (6) 点击Fit Options,修改非线性最小二乘估计法拟合的初始值(StartPoint), r修改为0.02,xm修改为500
% (7) 此时左边的result一览得到了拟合结果:r = 0.02735, xm = 342.4
% (8) 依次点击拟合工具箱的菜单栏最左边的文件—Generate Code(导出代码到时候可以放在你的论文附录),可以得到一个未命名的脚本文件
% (9) 在这个打开的脚本中按快捷键Ctrl+S,将这个文件保存到当前文件夹。
% (10) 在现在这个文件中调用这个函数得到参数的拟合值和预测的效果
[fitresult, gof] = createFit(year, population)
t = 2001:2030;
xm = 342.4;
r = 0.02735;
predictions = xm./(1+(xm./3.9-1).*exp(-r.*(t-1790))); % 计算预测值(注意这里要写成点乘和点除,这样可以保证按照对应元素进行计算)
figure(2)
plot(year,population,'o',t,predictions,'.') % 绘制预测结果图




猜你喜欢

转载自www.cnblogs.com/zlr585/p/12396961.html