求解线性方程组

我正在研究使用有限元方法来计算通过元素的热流。我目前坚持求解方程组,其中方程的两边都有变量。一个简单的例子可能是这样的


| 1  -1   0|   |100 |   |q1|   

|-1   2  -1| . | T2 | = |0 |   

| 0  -1   1|   | 0  |   |q3|

我正在考虑使用的方法将矩阵减少到 2x2,因为温度“T1”是已知的,并相应地改变右手边。并继续在“T3”行中做同样的事情。然而,我的顾问一直建议我反对这一点。


你会如何解决这样的系统?


BIG阳
浏览 180回答 2
2回答

Cats萌萌

另一种方法是创建一个置换矩阵来从向量中提取已知和未知的行。这种方法有点复杂,但对程序员更友好:说你的情商。系统是:K . T = Q其中K是3x3,和T和Q是3x1矢量。您可以创建一个置换Pf矩阵,当它乘以 时T,结果是T矩阵的未知部分(只有 T2),在您的情况下,置换矩阵将是一个1x3矩阵:Pf = [0 1 0]                       |100|Tf = Pf * T = [0 1 0]* |T2 | = [T2]                       |0  |另一个置换矩阵将从矩阵中获取已知部分T,在您的情况下,它将是一个2x3矩阵:     | 1 0 0|Ps = | 0 0 1| Ts =  Ps * T = | 1 0 0|  |100|   |100|               | 0 0 1| *| T2| = |0  |                         |0  |   现在一切都准备好了,你可以假设系统是这样的:K . T = QK = |Kff Kfs|    |Kfs Kss|Q = |Qf|    |Qs|T = |Tf|    |Ts|其中f是未知右侧的s前缀,而前缀是已知右侧。你可以找到Pf, Ps, Qf, Qs, Kff, Kfs,Ksf和Kss这样的:Tf = Pf * TTq = Ps * TQf = Pf * QQq = Ps * QKff = pf * K * pf` (note: ` denotes the transpose)Kfs = pf * K * ps` (note: ` denotes the transpose)Ksf = ps * K * pf` (note: ` denotes the transpose)Kss = ps * K * ps` (note: ` denotes the transpose)现在未知向量Tf,Qs需要找到:K . T = Q|Kff Kfs| |Tf| = |Qf||Kfs Kss| |Ts|   |Qs|意思是:Kff * Tf + Kfs * Ts = QfKfs * Tf + Kss * Ts = Qs从第一个:Tf = Kff^-1 * (Qf - Kfs * Ts)用上面的等式你可以找到Tf(注意所有右边都是已知的矩阵和向量,所以需要进行数值运算)从第二个开始:Qs = Kfs * Tf + Kss * Ts 这样既Qs和Tf都找到了。找到Tfand 后Qs,您可以这样做以形成原始T和Q矩阵:Q = Ps` * Qs + Pf` * QfT = Ps` * Ts + Pf` * Tf

jeck猫

我会写下你的线性方程并重塑它,这样你就只有一个带有未知变量的向量。例如,上面的方程组等于:可以重写:这导致:| -1  -1   0|   | T2 |   | 100 |   |  2   0   0| . | q1 | = | 100 |   | -1   0  -1|   | q3 |   |  0  |
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python