АШИГТ МАЛТМАЛЫН БАЯЖУУЛАЛТЫН ТЕХНИК, ТЕХНОЛОГИ

Ашигт малтмалын баяжуулалтын чиглэлээр сурч буй оюутан сурагчид, залуу инженерүүдэд зориулав.

Thursday, February 28, 2019

PYTHON -ы NUMPY санг ашиглан технологийн схемийг хамгийн бага алдаатай байх зарчмаар бодох нь

Өмнө нь Python хэлийг ашиглан инженерийн нарийн тооцоог маш хурдан, амархан гүйцэтгэх боломжтой гэдгийг хэлсэн билээ. Python хэлний инженерийн маш олон бэлэн сангууд байдаг бөгөөд эдгээрээс хамгийн хүчирхэг өргөн хэрэглэгддэг нь numpy, pandas, scipy юм.
Өнөөдөр техник, сансар судлал, физикийн салбарт ажиллаж буй инженерүүд Python хэлийг өөрсдийн үйл ажиллагаанд өргөн хэрэглэж байна.
Өмнөх блогт тайлбарласан баяжуулалтын энгийн схемийг хамгийн их үнэмшлийн аргаар сорьцлолтын алдаа хамгийн бага байх зарчмыг ашиглан Python хэлны цөөхөн код бичиж тооцоолох аргыг өмнө нь үзсэн жишээн (2019/01/12-ны пост) дээр үзүүлэв.. 
Технологийн схемийг болох хамгийн их үнэмшлийн арга нь дараах матрицан системийг бодоход оршино.


                                G=(XT X)-1 (XTY)

Программын код:

# Баяжуулалтын схемийн тооцоо. Python 3.7. Инженерийн тооцооны Numpy сан
# Г.Даваацэрэн

import numpy as np


# Схемийн матриц ба сорьцлолтын агуулгууд

m=np.array([[1,1,0,-1,-1,0,1],
           [-1,0,1,1,0,0,0],
           [0,-1,0,0,1,1,0]],float)
cu=np.array([12.6, 0.0567, 17.0, 1.195, 0.55, 0.0062,0.457],float)
mo=np.array([0.375, 0.0041,0.2775, 0.5266, 0.041,0.0041,0.016],float)
#------------------------------------------------------------------
bcu=m*cu
bmo=m*mo
#------- Математикийн "хамгийн vнэмшилтэй аргыг" хэрэглэн гарцыг олно
b=np.insert(m,[3],bcu,axis=0)
b=np.insert(b,[6],bmo,axis=0)
X=b[:9,:6]
X0=b[:,6]
XT=X.transpose()
X1=np.dot(XT,X)
X1=np.linalg.inv(X1)
X2=np.dot(XT,X0)
Y=np.round(100*(np.dot(X1,X2)),2)
# Гарцыг хэвлэж байна.
print('Гарц : ',Y)

Бодолтын хариу᠄


Гарц:  [  3.65 106.95   2.65   0.79   9.82  97.13]

No comments:

Post a Comment