数学建模学习


在这里插入图片描述
熵权法仅是用于客观确定权重的方法

层次分析法

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

层次分析法上机

matlab速学


https://ww2.mathworks.cn/help/?s_tid=gn_supp

算数平均法求权重

n=3;
A=[1,2,5;1/2,1,2;1/5,1/2,1];
Sum_A=sum(A);
SUM_A=repmat(Sum_A,n,1);
Stand_A=A./SUM_A;
wl=sum(Stand_A,2)./n;

特征法求权重

n=3;
A=[1,2,5;1/2,1,2;1/5,1/2,1];
[V,D]=eig(A);
Max_eig=max(max(D));%D
[r,c]=find(D == Max_eig,1);
w2=V(:,c)./sum(V(:,c));
CI=(Max_eig-n)/(n-1);
%RI=0.52;需查表
CR=CI/RI;
若CR<0.10 则通过了一致性检验

模糊综合评价

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

一级模糊综合评价

评语集带有评价色彩型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评语集不带有评价色彩型

在这里插入图片描述
在这里插入图片描述

多级模糊综合评价


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结

在这里插入图片描述

模糊综合评价上机

`matlab下标从1开始!!!!

熵权法(客观


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
长相:区间型指标
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

总结

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

熵权法上机

TOPSIS(客观)

法一:距离法

在这里插入图片描述
在这里插入图片描述

法二:优劣解

在这里插入图片描述
在这里插入图片描述

引入权重,因为上述没有引入权重

在这里插入图片描述

topsis上机

%clear;clc;
%X = [89,1; 60,3; 74,2; 99,0]
%X=[99;100;98;97]
%X=[0.030;0.028;0;0.007]
%X=[99,0.030;100,0.028;98,0;97,0.007]
%X=[99,0.010;100,0.012;98,0.040;97,0.033]
%X = [35.2;35.8;36.5;37.2;38.0]
%X = [0.6;0.75;0.89;0.95]
%X = [180;175;170;185;190]
%X = [60;90;95;81;79]
X = xlsread('工作簿1.xlsx');
%% 正向化
disp('***************正在进行正向化...***************');
vec = input('请输入要正向化的向量组,请以数组的形式输入,如[1 2 3]表示1,2,3列需要正向化,不需要正向化请输入-1\n') %注意输入函数这里是单引号
if (vec ~= -1)
    for i = 1 : size(vec,2)
        flag = input(['第' num2str(vec(i)) '列是哪类数据(【1】:极小型 【2】:中间型 【3】:区间型),请输入序号:\n']);
        if(flag == 1)%极小型
           X(:,vec(i)) = Min2Max(X(:,vec(i)));
        elseif (flag == 2) % 注意这里的else和if是连在一起的
            best = input('请输入中间型的最好值:\n');
            temp = X(:,vec(i));
            X(:,vec(i)) = Mid2Max(X(:,vec(i)), best);
        elseif (flag == 3)
            arr = input('请输入最佳区间,按照“[a,b]”的形式输入:\n')
            X(:,vec(i)) = Int2Max(X(:,vec(i)), arr(1), arr(2));
        end
    end
    disp('所有的数据均已完成正向化!')
end
%% 标准化
disp('***************正在进行标准化...***************');
[n,m] = size(X)
% 先检查有没有负数元素
isNeg = 0;
for i = 1:n
    for j = 1 : m
        if(X(i,j) < 0)
            isNeg = 1;
            break;
        end
    end
end
if (isNeg == 0)
    squere_X = (X.*X)
    sum_X = sum(squere_X,1).^0.5 %按列求和,再开方
    stand_X = X./repmat(sum_X, n, 1)
else
    max_X = max(X,[],1); %按照列找出最大元素
    min_X = min(X,[],1); %按照列找出最小元素
    stand_X = X - repmat(min_X,n,1) ./ (repmat(max_X,n,1) - repmat(min_X,n,1));
end

%% (法一)用距离法打分
disp('***************正在用距离法打分...***************');
max_x = max(stand_X,[], 1) %按照列找出最大元素
min_x = min(stand_X,[], 1) %按照列找出最小元素

(stand_X - repmat(min_x,n,1)) ./ (max_x - min_x)


%% (法二)用优劣解打分
disp('***************正在用优劣解打分...***************');
tmp = ones(m);% 这个矩阵很有用,要掌握哦
w_j = tmp(:,1);
is_need_w = input('是否需要指定权值,如需要请输入1,否则请输入0:\n');
if (is_need_w == 1)
    w_j = input('请按列输入各指标的权值:(如[0.1;0.2;0.3;0.4])')
end
Z_plus = repmat(max_x,n,1);
Z_sub = repmat(min_x,n,1);
D_plus = sum(((stand_X - Z_plus).^2) * w_j, 2).^0.5 %注意是按行求和
D_sub = sum(((stand_X - Z_sub)).^2 * w_j, 2).^0.5

S = D_sub ./ (D_sub + D_plus)

%将结果归一化
res_topsis = S ./ sum(S)
%xlswrite('res_topsis.xlsx',res_topsis) %写入excel文档
%disp('已完成打分,请到当前目录下res_topsis.xlsx文件中取出结果!')

灰色关联分析

例子:结婚率,目标为找出最大影响因素

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

定义

在这里插入图片描述

在这里插入图片描述

步骤

在这里插入图片描述

灰色关联分析用于综合评价(不推荐)

先正向化+标准化,然后找出每行最大值,作为虚拟供应商,该列就是母序列,1~6供应商为子序列。得出主要影响母序列的子序列,即为最佳供应商
在这里插入图片描述

线性规划

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

整数线性规划

在这里插入图片描述若为01整数规划,则只需将lb为0,ub为1
在这里插入图片描述

非线性规划(最高阶不为1次)

在这里插入图片描述
在这里插入图片描述

图论与最短路径算法

在这里插入图片描述

旅行商问题(TSP)

插值算法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

上机

在这里插入图片描述

拟合算法(不需要经过所有点,与插值算法不同)

当拟合函数为线性
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

实际操作

用matlab -> app -> curve fitting tool拟合
在这里插入图片描述
例题
在这里插入图片描述
在这里插入图片描述

%% 黄河小浪底调水调沙问题
%save('water.mat','water')
load('water.mat')
load('sand.mat')
t = []
for i = 1 : 24
    t = [t 3600*(12*i - 4)];   
end

total_sand = sand .* water; %排沙量

pp = spline(t,total_sand); %返回三次样条插值结果
f = @(t) ppval(pp,t);% 定义了一个匿名函数f,该函数使用ppval函数计算分段多项式的值。
                     % 这个匿名函数可以作为被积函数传递给MATLAB的integral函数,从而计算分段多项式的积分。

q = integral(f,t(1),t(24));% 被积函数、积分上下限

% 绘图看一看
subplot(1,2,1)
plot(water(1:11),total_sand(1:11),'*')
xlabel('水流量');
ylabel('排沙量');
title('第一阶段')
subplot(1,2,2)
plot(water(12:24),total_sand(12:24),'*')
xlabel('水流量');
ylabel('排沙量');
title('第二阶段');

% 拟合
x1 = water(1:11);
y1 = total_sand(1:11);
x2 = water(12:24);
y2 = total_sand(12:24);

微分方程

在这里插入图片描述
例子
在这里插入图片描述
在这里插入图片描述

常见微分方程模型-SI模型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

时间序列(量化方向常用)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 逆天了孩子,怎么这么难我去,不想往下看了,等必要的时候再来补吧~~

聚类分析

在这里插入图片描述
在这里插入图片描述

Kmeans算法网站1

Kmeans算法网站2

在这里插入图片描述
DBSCAN聚类算法网站

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值