
如果這個沒法編可以試試化簡版,主要是要求是沒化簡版。

求大佬們分析一下,給編一下!
uj5u.com熱心網友回復:
有高中知識就解開了啊,這個用matlab來做更合適。uj5u.com熱心網友回復:
別聽樓上瞎說,我兒子6年級已經學到3元一次方程組了,這東西用不著高中知識!!
哈工大已經不讓用MATLAB了,有些事情咱要能夠自己解決
把你的方程整理成標準的格式
a0x1+a1x2+a2x3+a3 = 0
b0x1+b1x2+b2x3+b3 = 0
c0x1+c1x2+c2x3+c3 = 0
把系數矩陣輸入,得到輸出矩陣
比如你的那個簡化后的絕熱
a(0, 0) = -2.045: a(0, 1) = 1: a(0, 2) = 0: a(0, 3) = 100.9
a(1, 0) = 1: a(1, 1) = -2.045: a(1, 2) = 1: a(1, 3) = 0.9
a(2, 0) = 0: a(2, 1) = 1: a(2, 2) = 1.0225: a(2, 3) = 0.45
輸入后輸出
x(1)=-58.94995
x(2)=-19.65265
x(3)= 19.66029
Public Function JFC(aryInput() As Single, aryOutput() As Single) As Boolean
Dim n As Integer, m As Integer, k As Integer, w As Single, myArry() As Single
Dim i As Integer, j As Integer
n = UBound(aryInput, 1)
m = UBound(aryInput, 2)
k = UBound(aryOutput)
If n <> k Or n + 1 <> m Then
MsgBox "aryInput的行列不匹配,或者與結果絕陣行數不匹配。", vbExclamation
JFC = False
Exit Function
End If
ReDim myArry(n, m)
For i = 0 To n
For j = 0 To m
myArry(i, j) = aryInput(i, j)
Next j
Next i
For i = 0 To n
For j = i + 1 To n
If Abs(myArry(i, i)) < Abs(myArry(j, i)) Then
For k = i To n + 1
w = myArry(i, k)
myArry(i, k) = myArry(j, k)
myArry(j, k) = w
Next k
End If
Next j
If myArry(i, i) = 0 Then
MsgBox "至少存在一組同構方程,該組方程無定aryOutput。", vbExclamation
JFC = False
Exit Function
End If
For j = i + 1 To m
myArry(i, j) = myArry(i, j) / myArry(i, i)
Next j
myArry(i, i) = 1
For j = i + 1 To n
w = myArry(j, i)
For k = i To m
myArry(j, k) = myArry(j, k) - myArry(i, k) * w
Next k
Next j
Next i
For i = n To 0 Step -1
w = 0
For j = i + 1 To n
w = w + myArry(i, j) * aryOutput(j)
Next j
aryOutput(i) = (myArry(i, m) - w) / myArry(i, i)
Next i
JFC = True
End Function
Private Sub Command1_Click()
Dim n As Integer, a() As Single, x() As Single
n = 3 '3個未知數
ReDim a(n - 1, n)
ReDim x(n - 1)
a(0, 0) = -2.045: a(0, 1) = 1: a(0, 2) = 0: a(0, 3) = 100.9
a(1, 0) = 1: a(1, 1) = -2.045: a(1, 2) = 1: a(1, 3) = 0.9
a(2, 0) = 0: a(2, 1) = 1: a(2, 2) = 1.0225: a(2, 3) = 0.45
If JFC(a(), x()) Then
For k = 0 To n - 1
Print "x("; k + 1; ")"; "="; x(k)
Next k
End If
End Sub
Private Sub Form_Load()
Me.AutoRedraw = True
End Sub
uj5u.com熱心網友回復:
import numpy as np
a=np.mat([-2.045,1,0,
1,-2.045,1,
0,1,1.0225]).reshape(3,3)
b=np.mat([-100.9,-0.9,-0.45]).reshape((3,1))
print(a,b,np.dot(a.I,b),sep="\n")
#Out:
[[-2.045 1. 0. ]
[ 1. -2.045 1. ]
[ 0. 1. 1.0225]]
[[-100.9 ]
[ -0.9 ]
[ -0.45]]
[[ 58.94994887]
[ 19.65264544]
[-19.66028894]]
uj5u.com熱心網友回復:
知識就是力量,學習了,uj5u.com熱心網友回復:
VB勢單,Python都來踢館了
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/7309.html
標籤:VB基礎類
上一篇:利用Windows API的SendMessage發送WM_NOTIFY獲取虛擬串列的內容失敗
下一篇:向各位大佬尋求幫助
