好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > Python實現曲線擬合的最小二乘法

Python實現曲線擬合的最小二乘法

熱門標簽:申請辦個400電話號碼 柳州正規電銷機器人收費 千呼ai電話機器人免費 騰訊地圖標注有什么版本 鎮江人工外呼系統供應商 外呼系統前面有錄音播放嗎 高德地圖標注字母 深圳網絡外呼系統代理商 400電話辦理費用收費

本文實例為大家分享了Python曲線擬合的最小二乘法,供大家參考,具體內容如下

模塊導入

import numpy as np
import gaosi as gs

代碼

"""
本函數通過創建增廣矩陣,并調用高斯列主元消去法模塊進行求解。

"""
import numpy as np
import gaosi as gs

shape = int(input('請輸入擬合函數的次數:'))

x = np.array([0.6,1.3,1.64,1.8,2.1,2.3,2.44])
y = np.array([7.05,12.2,14.4,15.2,17.4,19.6,20.2])
data = []
for i in range(shape*2+1):
 if i != 0:
 data.append(np.sum(x**i))
 else:
 data.append(len(x))
b = []
for i in range(shape+1):
 if i != 0:
 b.append(np.sum(y*x**i))
 else:
 b.append(np.sum(y))
b = np.array(b).reshape(shape+1,1)
n = np.zeros([shape+1,shape+1])
for i in range(shape+1):
 for j in range(shape+1):
 n[i][j] = data[i+j]
result = gs.Handle(n,b)
if not result:
 print('增廣矩陣求解失敗!')
 exit()
fun='f(x) = '
for i in range(len(result)):
 if type(result[i]) == type(''):
 print('存在自由變量!')
 fun = fun + str(result[i])
 elif i == 0:
 fun = fun + '{:.3f}'.format(result[i])
 else:
 fun = fun + '+{0:.3f}*x^{1}'.format(result[i],i)
print('求得{0}次擬合函數為:'.format(shape))
print(fun)

高斯模塊

# 導入 numpy 模塊
import numpy as np


# 行交換
def swap_row(matrix, i, j):
 m, n = matrix.shape
 if i >= m or j >= m:
 print('錯誤! : 行交換超出范圍 ...')
 else:
 matrix[i],matrix[j] = matrix[j].copy(),matrix[i].copy()
 return matrix


# 變成階梯矩陣
def matrix_change(matrix):
 m, n = matrix.shape
 main_factor = []
 main_col = main_row = 0
 while main_row  m and main_col  n:
 # 選擇進行下一次主元查找的列
 main_row = len(main_factor)
 # 尋找列中非零的元素
 not_zeros = np.where(abs(matrix[main_row:,main_col]) > 0)[0]
 # 如果該列向下全部數據為零,則直接跳過列
 if len(not_zeros) == 0:
 main_col += 1
 continue
 else:
 # 將主元列號保存在列表中
 main_factor.append(main_col)
 # 將第一個非零行交換至最前
 if not_zeros[0] != [0]:
 matrix = swap_row(matrix,main_row,main_row+not_zeros[0])
 # 將該列主元下方所有元素變為零
 if main_row  m-1:
 for k in range(main_row+1,m):
 a = float(matrix[k, main_col] / matrix[main_row, main_col])
 matrix[k] = matrix[k] - matrix[main_row] * matrix[k, main_col] / matrix[main_row, main_col]
 main_col += 1
 return matrix,main_factor


# 回代求解
def back_solve(matrix, main_factor):
 # 判斷是否有解
 if len(main_factor) == 0:
 print('主元錯誤,無主元! ...')
 return None
 m, n = matrix.shape
 if main_factor[-1] == n - 1:
 print('無解! ...')
 return None
 # 把所有的主元元素上方的元素變成0
 for i in range(len(main_factor) - 1, -1, -1):
 factor = matrix[i, main_factor[i]]
 matrix[i] = matrix[i] / float(factor)
 for j in range(i):
 times = matrix[j, main_factor[i]]
 matrix[j] = matrix[j] - float(times) * matrix[i]
 # 先看看結果對不對
 return matrix


# 結果打印
def print_result(matrix, main_factor):
 if matrix is None:
 print('階梯矩陣為空! ...')
 return None
 m, n = matrix.shape
 result = [''] * (n - 1)
 main_factor = list(main_factor)
 for i in range(n - 1):
 # 如果不是主元列,則為自由變量
 if i not in main_factor:
 result[i] = '(free var)'
 # 否則是主元變量,從對應的行,將主元變量表示成非主元變量的線性組合
 else:
 # row_of_main表示該主元所在的行
 row_of_main = main_factor.index(i)
 result[i] = matrix[row_of_main, -1]
 return result


# 得到簡化的階梯矩陣和主元列
def Handle(matrix_a, matrix_b):
 # 拼接成增廣矩陣
 matrix_01 = np.hstack([matrix_a, matrix_b])
 matrix_01, main_factor = matrix_change(matrix_01)
 matrix_01 = back_solve(matrix_01, main_factor)
 result = print_result(matrix_01, main_factor)
 return result


if __name__ == '__main__':
 a = np.array([[2, 1, 1], [3, 1, 2], [1, 2, 2]],dtype=float)
 b = np.array([[4],[6],[5]],dtype=float)
 a = Handle(a, b)

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • python中最小二乘法詳細講解
  • 最小二乘法及其python實現詳解
  • python實現最小二乘法線性擬合
  • Python最小二乘法矩陣
  • Python 普通最小二乘法(OLS)進行多項式擬合的方法
  • Python基于最小二乘法實現曲線擬合示例
  • Python中實現最小二乘法思路及實現代碼
  • python中matplotlib實現最小二乘法擬合的過程詳解
  • 利用Python實現最小二乘法與梯度下降算法

標簽:大慶 郴州 烏蘭察布 哈爾濱 平頂山 海南 合肥 烏蘭察布

巨人網絡通訊聲明:本文標題《Python實現曲線擬合的最小二乘法》,本文關鍵詞  Python,實現,曲線,擬合,的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Python實現曲線擬合的最小二乘法》相關的同類信息!
  • 本頁收集關于Python實現曲線擬合的最小二乘法的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 强壮的的公么征服我432| www.91b1在线偷拍| 亚洲综合图| a毛片免费全部播放高清天码 | 韩国电影秘爱| 龚玥菲版新梅瓶国语在线观看| 亚洲精品秘?一区二区三小| 97色伦合综合在线视频观看32| 国模娜娜大尺度人体私拍160p| 皇后张腿迎合太医的侵犯| xxx69videotube| 性生交大片1978| lutube成人福利在线观看| 最近韩国免费看的电影| 青草青草伊人精品视频 | 性,国产三级在线| 两女蕾丝边在线观看| 爱我久久国产精品| 中文字幕影音先锋| 97免费观看视频| 海角社区成人免费网站| 傲鷹公司简介| 尤物视频一区二区| 4438x亚洲最大| 日本熟妇无码亚洲成aV人片| 国产精品 无码 一区二区| 波多野结衣814系列内衣| 啊好爽轻点| 国产一级特黄在线播放| 亚洲熟女乱综合一区二区| yellow在线观看免费动漫| 国产精品欧美亚洲韩国日本不卡| 绑住两个奶头吊起来玩| 精品国产一区二区三区小蝌蚪| 免费免播放器在线视频观看| 狠狠色噜噜狠狠狠狠98| 99国精视频一区一区一三| 疯狂?喷水男女爽视频在线| 学长你轻点这还是在体育室呢 | 波多野结衣办公室33分钟| 91精品一久久香蕉国产线观看新通道|