2024-09-27 18:11:08 发布
网友
我正在研究用有限元法来计算通过单元的热流。 我现在只想解一个等式系统,等式两边都有变量。一个简单的例子可以是这样的
| 1 -1 0| |100 | |q1| |-1 2 -1| . | T2 | = |0 | | 0 -1 1| | 0 | |q3|
我考虑使用的方法是,当温度“T1”已知时,将矩阵减少到2x2,并相应地改变右侧。并在“T3”行中继续执行相同的操作。 但是我的顾问一直建议我不要这样做。你知道吗
你将如何着手解决这样一个系统?你知道吗
我会写下你的线性方程组,然后重新塑造它,这样你就只有一个未知变量的向量。例如,上面的方程组等于:
可以重写:
由此产生:
| -1 -1 0| | T2 | | 100 | | 2 0 0| . | q1 | = | 100 | | -1 0 -1| | q3 | | 0 |
另一种方法是创建置换矩阵,从向量中提取已知行和未知行。 此方法稍微复杂一点,但对程序员更友好:
假设你的情商系统是:
K . T = Q
其中K是3x3,T和Q是3x1向量。您可以创建一个置换Pf矩阵,当它与T相乘时,结果是T矩阵的未知部分(仅为T2),在您的情况下,置换矩阵将是1x3矩阵:
K
3x3
T
Q
3x1
Pf
1x3
Pf = [0 1 0] |100| Tf = Pf * T = [0 1 0]* |T2 | = [T2] |0 |
另一个置换矩阵将从T矩阵中获取已知部分,在您的情况下,它将是2x3矩阵:
2x3
| 1 0 0| Ps = | 0 0 1| Ts = Ps * T = | 1 0 0| |100| |100| | 0 0 1| *| T2| = |0 | |0 |
现在一切就绪,您可以假设系统如下:
K . T = Q K = |Kff Kfs| |Kfs Kss| Q = |Qf| |Qs| T = |Tf| |Ts|
其中f是未知右侧的前缀,s前缀是已知右侧的前缀。你可以找到Pf、Ps、Qf、Qs、Kff、Kfs、Ksf和Kss如下:
f
s
Ps
Qf
Qs
Kff
Kfs
Ksf
Kss
Tf = Pf * T Tq = Ps * T Qf = Pf * Q Qq = Ps * Q Kff = 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:
Tf
K . T = Q |Kff Kfs| |Tf| = |Qf| |Kfs Kss| |Ts| |Qs|
意味着:
Kff * Tf + Kfs * Ts = Qf Kfs * Tf + Kss * Ts = Qs
从第一个开始:
Tf = Kff^-1 * (Qf - Kfs * Ts)
通过上面的公式,你可以找到Tf(注意,所有右边都是已知的矩阵和向量,所以需要执行数值运算)
从第二个开始:
Qs = Kfs * Tf + Kss * Ts
这样就可以同时找到Qs和Tf。一旦找到Tf和Qs,就可以这样做来形成原始的T和Q矩阵:
Q = Ps' * Qs + Pf' * Qf T = Ps' * Ts + Pf' * Tf
我会写下你的线性方程组,然后重新塑造它,这样你就只有一个未知变量的向量。例如,上面的方程组等于:
可以重写:
由此产生:
另一种方法是创建置换矩阵,从向量中提取已知行和未知行。 此方法稍微复杂一点,但对程序员更友好:
假设你的情商系统是:
其中
K
是3x3
,T
和Q
是3x1
向量。您可以创建一个置换Pf
矩阵,当它与T
相乘时,结果是T
矩阵的未知部分(仅为T2),在您的情况下,置换矩阵将是1x3
矩阵:另一个置换矩阵将从
T
矩阵中获取已知部分,在您的情况下,它将是2x3
矩阵:现在一切就绪,您可以假设系统如下:
其中
f
是未知右侧的前缀,s
前缀是已知右侧的前缀。你可以找到Pf
、Ps
、Qf
、Qs
、Kff
、Kfs
、Ksf
和Kss
如下:现在需要找到未知向量
Tf
和Qs
:意味着:
从第一个开始:
通过上面的公式,你可以找到Tf(注意,所有右边都是已知的矩阵和向量,所以需要执行数值运算)
从第二个开始:
这样就可以同时找到
Qs
和Tf
。一旦找到Tf
和Qs
,就可以这样做来形成原始的T
和Q
矩阵:相关问题 更多 >
编程相关推荐