【数学建模】模糊数学矩阵运算——python实现
一、矩阵运算
续上一篇有关模糊数学的运算中的内容,这一篇文章将进行模糊矩阵自反性判断、对称性判断、传递性的判断以及来计算传递闭包矩阵。这里事实上也是聚类分析等前操步骤。可以参考之前有关模糊聚类分析的内容,其中也有一些比较有参考意义的代码。
① 模糊矩阵自反性判断:
都默认为nxn阶模糊方阵
即rii=1
def zfar(M):a=[]for i in range(len(M)):m=M[i]if m[i]!=1:a.append('0')if len(a)==0:return 'True' else:return 'False'
print(zfar(ma))
ma=[[1,0,0],[0,1,0],[0,0,1]]
#输出结果为
True
② 模糊矩阵对称性判断:
即rij=rji
def dcar(M):Mt=np.stack(M,axis=1)print(Mt)a=[]for i in range(len(M)):m=M[i]mt=Mt[i]for j in range(len(m)):if m[j]!=mt[j]:a.append('1')if len(a)==0:return 'True'else:return 'False'
ma=[[1,0,0],[0,1,0],[0,0,1]]
print(dcar(ma))
输出结果为:
True
③ 模糊相似矩阵判断:
即同时满足自反性和对称性:
def arlike(M):if zfar(M) == 'True' and dcar(M) == 'True':return 'Ture'else:return 'False'
print(arlike(ma))
④ 模糊矩阵传递性判断
def jzhc(M,N):#必须是m*s,s*n的矩阵输入R=[]N=np.stack(N,axis=1)#实现转置for i in range(len(M)):mr=[]for j in range(len(N)):r=(arjj([M[i]],[N[j]]))[0]mr.append(max(r))R.append(mr)return Rdef cdar(M):hcar=jzhc(M,M)#使用矩阵合成代码print(hcar)a=[]for i in range(len(M)):m=M[i]n=hcar[i]for j in range(len(m)):if m[j]>n[j]:a.append('1')if len(a)==0:return 'True'else:return 'False'
print(cdar(ma))
⑤ 模糊等价矩阵判断:
即同时满足对称、自反和传递矩阵
def djar(M):if arlike(M) == 'Ture' and cdar(M) == 'True':return 'True'else:return 'False'
print(djar(ma))
⑥ 传递闭包矩阵计算:
返回传递闭包矩阵和幂数
#相等矩阵的判断
def ddar(M,Mt):a=[]for i in range(len(M)):m=M[i]mt=Mt[i]for j in range(len(m)):if m[j]!=mt[j]:a.append('1')if len(a)==0:return 'True'else:return 'False'#传递闭包矩阵
def bbar(M):if arlike(M)!='True':return 'Array False'else:b=Mc=2while ddar(b,M)!='True':M=jzhc(b,b)b=Mc=c+2break return b,c
R=[[1,0.1,0.2],[0.1,1,0.3],[0.2,0.3,1]]
print(bbar(R))
##输出结果为:
([[1, 0.1, 0.2], [0.1, 1, 0.3], [0.2, 0.3, 1]], 2)
二、总结
① 理论先行
② 代码自写(不要复制粘贴),以上代码全部都是以最基础的逻辑运算来写的,只要会python基础就能实现,不涉及任何需要调动库中复杂的函数的理解。全是for if while def
③ 标准化的方式将于后文继续介绍。
④ 代码总结
def dcar(M):Mt=np.stack(M,axis=1)print(Mt)a=[]for i in range(len(M)):m=M[i]mt=Mt[i]for j in range(len(m)):if m[j]!=mt[j]:a.append('1')if len(a)==0:return 'True'else:return 'False'
ma=[[1,0,0],[0,1,0],[0,0,1]]
print(dcar(ma))def zfar(M):a=[]for i in range(len(M)):m=M[i]if m[i]!=1:a.append('0')if len(a)==0:return 'True' else:return 'False'
print(zfar(ma))def arlike(M):if zfar(M) == 'True' and dcar(M) == 'True':return 'True'else:return 'False'
print(arlike(ma))def cdar(M):hcar=jzhc(M,M)a=[]for i in range(len(M)):m=M[i]n=hcar[i]for j in range(len(m)):if m[j]>n[j]:a.append('1')if len(a)==0:return 'True'else:return 'False'
print(cdar(ma))def djar(M):if arlike(M) == 'Ture' and cdar(M) == 'True':return 'True'else:return 'False'
print(djar(ma))#相等矩阵的判断
def ddar(M,Mt):a=[]for i in range(len(M)):m=M[i]mt=Mt[i]for j in range(len(m)):if m[j]!=mt[j]:a.append('1')if len(a)==0:return 'True'else:return 'False'#传递闭包矩阵
def bbar(M):if arlike(M)!='True':return 'Array False'else:b=Mc=2while ddar(b,M)!='True':M=jzhc(b,b)b=Mc=c+2break return b,c
R=[[1,0.1,0.2],[0.1,1,0.3],[0.2,0.3,1]]
print(bbar(R))
【数学建模】模糊数学矩阵运算——python实现相关推荐
- 数学建模——灰色预测模型Python代码
数学建模--灰色预测模型Python代码 """ Spyder Editor This is a temporary script file. ""& ...
- 数学建模可以用python吗_Python中常用的数学建模Scipy
Python中常用的数学建模Scipy 发布时间:2020-09-10 16:56:48 来源:亿速云 阅读:116 本篇文章为大家展示了Python中常用的数学建模Scipy,代码简明扼要并且容易理 ...
- 集货运输优化:数学建模步骤,Python实现蚁群算法(解决最短路径问题), 蚁群算法解决旅行商问题(最优路径问题),节约里程算法
目录 数学建模步骤 Python实现蚁群算法(解决最短路径问题) 蚁群算法解决旅行商问题(最优路径问题) 节约里程算法
- python做灰色关联度分析_【数学建模】通过python实现灰色关联度计算
1.关联分析 关联分析主要作用为对系统的因素进行分析,其主要作用为分辨因素中哪些因素对系统的影响是显著的,哪些影响是次要的.通常而言因素分析的主要方式为回归分析等,但其存在数据量要求大,计算量大等诸多 ...
- 数学建模问题的python相关代码
文章目录 1. 环境搭建 1.1 使用anaconda 2. numpy库 3. pandas库 4. matplotlib库 5. 规划问题 5.1 线性规划 5.2 整数规划 5.3 非线性规划 ...
- 数学建模——运输问题(Python实现)
目录 1.概述 (1)运输问题 (2)基本思想 (3)表上作业法求解运输问题步骤 2.知识点细讲 (1)运输问题及其数学模型 (2)表上作业法求解运输问题--思想 (3)表上作业法求解运输问题--寻 ...
- 【数学建模】聚类分析——python实现
目录 一.储备知识 (1)何为聚类分析: (2)分类方法: 二.聚类分析的一般步骤 三.聚类实操--python实现 四.代码总结 一.储备知识 (1)何为聚类分析: 聚类分析又称为群分析,是研究问题 ...
- 数学建模--数学规划模型Python实现
线性规划scipy.optimize.linprog from scipy.optimize import linprog 一般形式 官方文档:https://docs.scipy.org/doc/s ...
- 数学建模——减肥模型Python实现
注:本模型代码在Jupyter编译 一.模型分析 通常,当体内能量守恒被破坏时就会引起体重的变化.人们通过饮食吸收热量,转化为脂肪等,导致体重增加:又由于代谢和运动消耗热量,引起体重减少.只要作适当的 ...
最新文章
- pandas使用iloc函数将dataframe的所有数据行反序(reverse the order of rows in dataframe)
- finalshell Linux 传输文件 xftp
- 每个软件工程师都应该尝试的5件事
- Linux kernel分析前的准备
- 3.1.9 OS之二级页表的原理和地址结构
- RabbitMQ MQTT协议和AMQP协议
- apache/nginx/nodejs原理简析
- ROS入门笔记(十):编写与测试简单的消息发布器和订阅器(C++)
- 国家开放大学2021春1070组织行为学题目
- 用netbeans开发Swing程序,添加自定义控件
- ElasticSearch学习(三):配置与集群
- 【java】彩票中奖码生成器:java.util.Random里的方法public int nextInt(int bound)
- 电脑和服务器之间怎么传送大文件夹,WIN10两台电脑之间快速传输大量文件 - 卡饭网...
- 新中大财务软件虚拟化解决方案
- 关闭WPS广告弹窗骚扰(Kingsoft Office 推荐)
- 大学生学完python靠几个接单网站兼职,实现经济独立
- nexus3安装配置
- Linux下安装SVN服务端(全)
- 排列组合-9.1 排列组合系列问题
- Kinect_1:设备连接
热门文章
- Linux Cron表达式每半个小时执行一次
- 判断网页是否在微信浏览器中打开
- python dialogflow_如何在Python中通过Dialogflow实现从Google Assis...
- Vue3 + Ant Design Vue Modal 对话框可拖拽指令
- c++进制转换_PLC常用数制及转换方法,让你轻松掌握PLC编程
- 在微信上搞色情?终于要凉了!
- 图片怎么去底色变透明?怎么把图片变透明背景?
- 蓄电池维护——蓄电池的日常检测与维护
- ceph rbd mysql_ceph-rbd 常用命令
- 性能测试之JMeter断言