高斯消元法的python实现
高斯消元法是解线性方程组的一种常见的方法,下面是高斯消元法的实现过程,下面的算法仅能解决各主元素不为0的情况。
下面是算法的实现思路:
1.算法总共分为两大步骤,第一个步骤是将增广矩阵消元形成上三角矩阵,第二个步骤是从下向上进行回带完成解方程的步骤。
2.在第一个步骤里总共有三重循环
1>第一重循环是要控制一共要有多少次消元。如下图要将左边的矩阵变成右边的矩阵要进行2次消元。
2>第二重循环是要将当前消元的主元素变成一,同时该主元素所在的行同时缩小相应的倍数。例如:将a11这一行的元素同时除以a11,这行元素变为1,a12/a11,a13/a11,b1/a11
3>第三重循环将主元素所在的列,完成消元归零的操作。将a11所在的列都变成0,a21-a21*1 ,a22-a21*a12/a11,a23-a21*a13/a11,b32-a21*b1/a11
3.回带
import matplotlib.pyplot as plt
from pylab import mpl
import math"""利用高斯消元法,求解方程组的解。方程组如下:6x1+15x2+55x3=152.615x1+55x2+225x3=585.655x1+225x2+979x3=2488.8"""def calculate_parameter(data):# i用来控制列元素,line是一行元素,j用来控制循环次数,datas用来存储局部变量。保存修改后的值i = 0;j = 0;line_size = len(data)# 将行列式变换为上三角行列式while j < line_size - 1:line = data[j]temp = line[j]templete = []for x in line:x = x / temptemplete.append(x)data[j] = templete# flag标志应该进行消元的行数flag = j + 1while flag < line_size:templete1 = []temp1 = data[flag][j]i = 0for x1 in data[flag]:if x1 != 0:x1 = x1 - (temp1 * templete[i])templete1.append(x1)else:templete1.append(0)i += 1data[flag] = templete1flag += 1j += 1# 求相应的参数值parameters = []i = line_size - 1# j标识减去元素个数# flag_rol标识除那一列flag_j = 0rol_size = len(data[0])flag_rol = rol_size - 2# 获得解的个数while i >= 0:operate_line = data[i]if i == line_size - 1:parameter = operate_line[rol_size - 1] / operate_line[flag_rol]parameters.append(parameter)else:flag_j = (rol_size - flag_rol - 2)temp2 = operate_line[rol_size - 1]# result_flag为访问已求出解的标志result_flag = 0while flag_j > 0:temp2 -= operate_line[flag_rol + flag_j] * parameters[result_flag]result_flag += 1flag_j -= 1parameter = temp2 / operate_line[flag_rol]parameters.append(parameter)flag_rol -= 1i -= 1return parametersparemeters=[[6,15, 55,152.6], [15, 55, 225, 585.6], [55,225,979,2488.8]]
results=calculate_parameter(paremeters)
print(" x1="+str(results[2])+"\n x2="+str(results[1])+"\n x3="+str(results[0]))
高斯消元法的python实现相关推荐
- 列主元高斯消元法(Python实现)
列主元素消去法是为控制舍入误差而提出来的一种算法,列主元素消去法计算基本上能控制舍入误差的影响,其基本思想是:在进行第 k(k=1,2,...,n-1)步消元时,从第k列的 akk及其以下的各元素中选 ...
- 高斯消元法python编程_高斯消元法的Python实现
高斯消元法 节约内存的算法: 例1:用高斯消元法求解线性方程组: # -*- coding: utf-8 -*- """ 求解线性方程组: [12 -3 3] [x1] ...
- 高斯消元法求解方程组(要有python基础和线性代数的基础)
本人这学期开的是一门数值分析课,老师要求用python写出实现某些算法的代码,当遇到第一个高斯消元法,印象深刻的是这个编程与以往的编程不一样,从这几点来讲:首先,我是在上这门课之前就将python的基 ...
- 高斯消元法python编程_Python 实现顺序高斯消元法示例
我就废话不多说,直接上代码吧! # coding: utf8 import numpy as np # 设置矩阵 def getInput(): matrix_a = np.mat([[2, 3, 1 ...
- 高斯消元法python编程_Python基于高斯消元法计算线性方程组示例
本文实例讲述了Python基于高斯消元法计算线性方程组.分享给大家供大家参考,具体如下: #!/usr/bin/env python # coding=utf-8 # 以上的信息随自己的需要改动吧 d ...
- 高斯消元法python实现
高斯消元法 消元结果 依次回代 代码 import numpy as npdef gauss(a,b):n,m = a.shapex = np.empty(m) # 解#一共要有(行-1)次消元for ...
- 高斯消元法解线性方程组数学原理及Python手工实现
一.基本思想 先逐次消去未知数,将方程化为同解的上三角形方程组,此过程称为消元.然后按方程相反顺序求解上三角形方程组,得到原方程组的解,此过程称为回代.这种方法称为高斯消元法. 二.例子 消元过程如 ...
- 高斯消元法求解线性方程组(附python代码)
输入:a是m×n的系数矩阵,b是m×1的(列)向量. 输出:方程组的通解. 用高斯消元法(行化简法)解线性方程组步骤 1.构造方程组的增广矩阵 2.从最左边列往右,使用行化简算法把增广矩阵化为阶梯形, ...
- 【Python算法】数值分析—列主元高斯消元法——附源码
一.背景 线性方程组有很多种解法,可以最简单的直接代入消元计算,但是运算量较大,且过程复杂不直观. 高斯消元法目的是预处理方程组的系数矩阵,将系数矩阵变换为上三角矩阵,这样整个方程就变得清晰直观很多, ...
最新文章
- (十二) 完整注释的代码摘录
- 一个免费分享绘图代码的网站
- 阿里人工智能实验室新入职两名首席科学家,年薪百万美元
- 【BZOJ3527】【ZJOI2014】力
- java高级用法之:JNA类型映射应该注意的问题
- 优化案例(part5)--sparse subspace clustering via Low-Rank structure propagation
- (优秀文章保存)Quartz优秀文章保存
- 2010伊始就这么忙
- matlab imagesc 白色,[转载]matlab 中imagesc的用法
- Xcode Undefined symbols 错误
- 改进left函数,截取varchar需要的字符串长度
- 字体图标和变形 transform属性的使用
- Flex ikev2
- 罗马仕荣获中国质量认证中心、CESI颁发的全国首批“双新认证”证书
- c语言程序设计 大学考试题库,广东工业大学《C语言程序设计》考试复习重点题库.pdf...
- Microsoft Windows CredSSP 远程执行代码漏洞CVE-2018-0886
- C# 闹钟「定时提醒,整点报时」
- IDC销售是什么?难在哪里?
- Background sticky concurrent mark sweep GC freed 842(58KB) AllocSpace objects
- Android手机拍照APP闪退问题及应对措施
热门文章
- Pause Giant AI Experiments: An Open Letter(暂停大型人工智能实验: 一封公开信)
- 如何解决数据关联查询
- 第二次作业:《国际贸易学》—自由贸易理论
- 暑假实习 + 提前批 +校园招聘(更新中)
- 机器学习算法(七): 基于LightGBM的分类预测(基于英雄联盟10分钟数据判断红蓝方胜负)
- Python爬虫实战:爬取维基百科
- LVGL misc log日志系统(lv_log.h)
- 2022上海市安全员C证考试题库模拟考试平台操作
- 2021年氯化工艺复审考试及氯化工艺作业模拟考试
- commons-codec使用简介