Python基於高斯消元法計算線性方程組樣本,python線性方程組

來源:互聯網
上載者:User

Python基於高斯消元法計算線性方程組樣本,python線性方程組

本文執行個體講述了Python基於高斯消元法計算線性方程組。分享給大家供大家參考,具體如下:

#!/usr/bin/env python# coding=utf-8# 以上的資訊隨自己的需要改動吧def print_matrix( info, m ): # 輸出矩陣  i = 0; j = 0; l = len(m)  print info  for i in range( 0, len( m ) ):    for j in range( 0, len( m[i] ) ):      if( j == l ):        print ' |',      print '%6.4f' % m[i][j],    print  printdef swap( a, b ):  t = a; a = b; b = tdef solve( ma, b, n ):  global m; m = ma # 這裡主要是方便最後矩陣的顯示  global s;  i = 0; j = 0; row_pos = 0; col_pos = 0; ik = 0; jk = 0  mik = 0.0; temp = 0.0  n = len( m )  # row_pos 變數標記行迴圈, col_pos 變數標記列迴圈  print_matrix( "一開始 de 矩陣", m )  while( ( row_pos < n ) and( col_pos < n ) ):    print "位置:row_pos = %d, col_pos = %d" % (row_pos, col_pos)    # 選主元    mik = - 1    for i in range( row_pos, n ):      if( abs( m[i][col_pos] ) > mik ):        mik = abs( m[i][col_pos] )        ik = i    if( mik == 0.0 ):      col_pos = col_pos + 1      continue    print_matrix( "選主元", m )    # 交換兩行    if( ik != row_pos ):      for j in range( col_pos, n ):        swap( m[row_pos][j], m[ik][j] )        swap( m[row_pos][n], m[ik][n] );   # 地區之外?    print_matrix( "交換兩行", m )    try:      # 消元      m[row_pos][n] /= m[row_pos][col_pos]    except ZeroDivisionError:      # 除零異常 一般在無解或無窮多解的情況下出現……      return 0;    j = n - 1    while( j >= col_pos ):      m[row_pos][j] /= m[row_pos][col_pos]      j = j - 1    for i in range( 0, n ):      if( i == row_pos ):        continue      m[i][n] -= m[row_pos][n] * m[i][col_pos]      j = n - 1      while( j >= col_pos ):        m[i][j] -= m[row_pos][j] * m[i][col_pos]        j = j - 1    print_matrix( "消元", m )    row_pos = row_pos + 1; col_pos = col_pos + 1  for i in range( row_pos, n ):    if( abs( m[i][n] ) == 0.0 ):      return 0  return 1if __name__ == '__main__':  matrix = [[2.0,  0.0, - 2.0,  0.0],       [0.0,  2.0, - 1.0,  0.0],       [0.0,  1.0,  0.0, 10.0]]  i = 0; j = 0; n = 0  # 輸出方程組  print_matrix( "一開始的矩陣", matrix )  # 求解方程組, 並輸出方程組的可解資訊  ret = solve( matrix, 0, 0 )  if( ret!= 0 ):    print "方程組有解\n"  else:    print "方 程組無唯一解或無解\n"  # 輸出方程組及其解  print_matrix( "方程組及其解", matrix )  for i in range( 0, len( m ) ):    print "x[%d] = %6.4f" % (i, m[i][len( m )])

運行結果:

一開始的矩陣2.0000 0.0000 -2.0000 | 0.00000.0000 2.0000 -1.0000 | 0.00000.0000 1.0000 0.0000 | 10.0000一開始 de 矩陣2.0000 0.0000 -2.0000 | 0.00000.0000 2.0000 -1.0000 | 0.00000.0000 1.0000 0.0000 | 10.0000位置:row_pos = 0, col_pos = 0選主元2.0000 0.0000 -2.0000 | 0.00000.0000 2.0000 -1.0000 | 0.00000.0000 1.0000 0.0000 | 10.0000交換兩行2.0000 0.0000 -2.0000 | 0.00000.0000 2.0000 -1.0000 | 0.00000.0000 1.0000 0.0000 | 10.0000消元1.0000 0.0000 -1.0000 | 0.00000.0000 2.0000 -1.0000 | 0.00000.0000 1.0000 0.0000 | 10.0000位置:row_pos = 1, col_pos = 1選主元1.0000 0.0000 -1.0000 | 0.00000.0000 2.0000 -1.0000 | 0.00000.0000 1.0000 0.0000 | 10.0000交換兩行1.0000 0.0000 -1.0000 | 0.00000.0000 2.0000 -1.0000 | 0.00000.0000 1.0000 0.0000 | 10.0000消元1.0000 0.0000 -1.0000 | 0.00000.0000 1.0000 -0.5000 | 0.00000.0000 0.0000 0.5000 | 10.0000位置:row_pos = 2, col_pos = 2選主元1.0000 0.0000 -1.0000 | 0.00000.0000 1.0000 -0.5000 | 0.00000.0000 0.0000 0.5000 | 10.0000交換兩行1.0000 0.0000 -1.0000 | 0.00000.0000 1.0000 -0.5000 | 0.00000.0000 0.0000 0.5000 | 10.0000消元1.0000 0.0000 0.0000 | 20.00000.0000 1.0000 0.0000 | 10.00000.0000 0.0000 1.0000 | 20.0000方程組有解方程組及其解1.0000 0.0000 0.0000 | 20.00000.0000 1.0000 0.0000 | 10.00000.0000 0.0000 1.0000 | 20.0000x[0] = 20.0000x[1] = 10.0000x[2] = 20.0000

PS:這裡再為大家推薦幾款計算工具供大家參考使用:

線上一元函數(方程)求解計算工具:
http://tools.jb51.net/jisuanqi/equ_jisuanqi

科學計算機線上使用_進階計算機線上計算:
http://tools.jb51.net/jisuanqi/jsqkexue

線上計算機_標準計算機:
http://tools.jb51.net/jisuanqi/jsq

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.