当前位置:
首页 > temp > 简明python教程 >
-
Python3与线性代数的随笔之初等变换
初等变换(elementary transformation)是三种基本的变换,即交换(switching),相乘(multiplication)和相加(addition)。
以下是关于实现初等变换的Python3代码,不需要用numpy和matlib等第三方模块。可能这不是最好,最简单的,但能实现功能,抛砖引玉。
其中程序已定义了一个二维列表变量matrix,并满足矩阵的条件,如[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
交换:
1 switch_num = input("请输入需要交换的那两行的编号:").split() 2 a, b = int(switch_num[0])-1, int(switch_num[1])-1 3 for num in range(len(matrix[0])): 4 matrix[a][num], matrix[b][num] = matrix[b][num], matrix[a][num]
相乘:
1 command = input("按格式:[行编号] [*或/] [乘数或除数]来输入:").split() 2 row_num, sign, k = int(command[0])-1, command[1], float(command[2]) 3 if k == 0: 4 raise MathError("Can't be multiplied by a zero constants.") 5 else: 6 for num in range(len(matrix[0])): 7 if sign == "*": 8 matrix[row_num][num] *= k 9 elif sign == "/": 10 matrix[row_num][num] /= k
说明一下,第4行我自定义了一个错误。因为规定,做相乘运算时,乘数不可为0,自然除数也不能为0,所以要引发错误来提醒用户。
自定义的错误:
1 class MathError(Exception): 2 def __init__(self, value): 3 self.value = value 4 5 def __str__(self): 6 return self.value
相加:
1 command = input("按格式:[行编号] [+或-] [系数] [另一个行编号]来输入:").split() 2 row_num_a, sign, k, row_num_b = int(command[0])-1, command[1], float(command[2]), int(command[3])-1 3 if row_num_a == row_num_b: 4 raise MathError("Can't operate in the same row/column.") 5 else: 6 for num, item in enumerate(matrix[row_num_b]): 7 if sign == "+": 8 matrix[row_num_a][num] += k * item 9 elif cmd[2] == "-": 10 matrix[row_num_a][num] -= k * item
说明,规定不能对同一行进行加减,若用户输入的两个行编号相同,则引发自定义错误
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程
检测数据类型的四种方法
js中数组的方法,32种方法
前端操作方法
数据类型
window.localStorage.setItem 和 localStorage.setIte
如何完美解决前端数字计算精度丢失与数