高斯消元及实现
Posted 行码棋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高斯消元及实现相关的知识,希望对你有一定的参考价值。
- 博客主页: https://blog.csdn.net/qq_50285142
- 欢迎点赞👍收藏✨关注❤留言 📝 如有错误,敬请指正
- 🎈虽然生活很难,但我们也要一直走下去🎈
高斯消元
前置知识:增广矩阵是什么,矩阵行列变换,对角阵等
高斯消元主要用于多元线性方程组的求解,只对系数进行操作,不对未知数进行操作。
高斯消元知识点可以参考以下链接:
https://www.tonyyin.top/2021/09/gauss-elimination/
https://oi-wiki.org/math/gauss/
https://blog.nowcoder.net/n/5705bab812774f1eb6e60c2e8c55ca1e
我习惯把高斯消元分为几步:
- 化为上三角矩阵
- 找主元(主元即对角线上位置的元素)
即按列来找,找每一列中绝对值最大的一行,将该行和当前访问到的行进行交换 - 交换
- 主元归一
即将当前的对角元素变为1,对应该行也要做相同的变换 - 消元
- 找主元(主元即对角线上位置的元素)
- 化为对角阵(主对角线都为1,其余位置都为0)
例1 球形空间产生器
题目链接:https://www.acwing.com/problem/content/209/
有一个球形空间产生器能够在 n 维空间中产生一个坚硬的球体。
现在,你被困在了这个 n 维球体中,你只知道球面上 n+1 个点的坐标,你需要以最快的速度确定这个 n 维球体的球心坐标,以便于摧毁这个球形空间产生器。
思路
因为是n
维空间,一个点的坐标有n
个值。
可以设球心坐标为
(
x
1
,
x
2
,
.
.
.
,
x
n
)
(x_1,x_2,...,x_n)
(x1,x2,...,xn)表示n
维情况下的坐标,设半径为
R
R
R
给出了n+1
个点的坐标,设第i
个点的坐标为
(
a
i
,
1
,
a
i
,
2
,
.
.
.
,
a
i
,
n
)
(a_i,1,a_i,2,...,a_i,n)
(ai,1,ai,2,...,ai,n)
球形可以想到球上的点到球心的距离相等,进而可以列出方程组
(
a
1
,
1
−
x
1
)
2
+
.
.
.
+
(
a
1
,
n
−
x
n
)
2
=
R
2
【
式
1
】
(
a
2
,
1
−
x
1
)
2
+
.
.
.
+
(
a
2
,
n
−
x
n
)
2
=
R
2
【
式
2
】
.
.
.
.
.
.
(
a
n
+
1
,
1
−
x
1
)
2
+
.
.
.
+
(
a
n
+
1
,
n
−
x
n
)
2
=
R
2
【
式
n
+
1
】
\\begincases (a_1,1-x_1)^2+...+(a_1,n-x_n)^2=R^2【式1】\\\\ (a_2,1-x_1)^2+...+(a_2,n-x_n)^2=R^2【式2】\\\\ ......\\\\ (a_n+1,1-x_1)^2 +...+(a_n+1,n-x_n)^2=R^2【式n+1】 \\endcases
⎩⎪⎪⎪⎨⎪⎪⎪⎧(a1,1−x1)2+...+(a1,n−xn)2=R2【式1】(a2,1−x1)2+...+(a2,n−xn)2=R2【式2】......(an+1,1−x1)2+...+(an+1,n−xn)2=R2【式n+1】
可以发现并不是满足线性的条件,但是我们却可以把它化成线性的情况
从第二个式子开始,依次减去第一个式子,然后我们就可以得到
2
(
a
2
,
1
−
a
1
,
1
)
x
1
+
.
.
.
+
2
(
a
2
,
n
−
a
1
,
n
)
x
n
=
(
a
2
,
1
2
+
.
.
.
+
a
2
,
n
2
)
−
(
a
1
,
1
2
+
.
.
.
+
a
n
,
n
2
)
2
(
a
3
,
1
−
a
1
,
1
)
x
1
+
.
.
.
+
2
(
a
3
,
n
−
a
1
,
n
)
x
n
=
(
a
3
,
1
2
+
.
.
.
+
a
3
,
n
2
)
−
(
a
1
,
1
2
+
.
.
.
+
a
n
,
n
2
)
.
.
.
.
.
.
2
(
a
n
+
1
,
1
−
a
1
,
1
)
x
1
+
.
.
.
+
2
(
a
n
+
1
,
n
−
a
1
,
n
)
x
n
=
(
a
n
+
1
,
1
2
+
.
.
.
+
a
n
+
1
,
n
2
)
−
(
a
1
,
1
2
+
.
.
.
+
a
n
,
n
2
)
\\begincases 2(a_2,1-a_1,1)x_1+...+2(a_2,n-a_1,n)x_n=(a_2,1^2+...+a_2,n^2)-(a_1,1^2+...+a_n,n^2)\\\\ 2(a_3,1-a_1,1)x_1+...+2(a_3,n-a_1,n)x_n=(a_3,1^2+...+a_3,n^2)-(a_1,1^2+...+a_n,n^2)\\\\ ......\\\\ 2(a_n+1,1-a_1,1)x_1+...+2(a_n+1,n-a_1,n)x_n=(a_n+1,1^2+...+a_n+1,n^2)-(a_1,1^2+...+a_n,n^2) \\endcases
⎩⎪⎪⎪⎨⎪⎪⎪⎧2(a2,1−a1,1)x1+...+2(a2,n−a1,n)xn=(a2,12+...+a2,n2)−(a1,12+...+an,n2)2(a3,1−a1,1)x1+...+2(a3,n−a1,n)xn=(a3,12+...+a3,n2)以上是关于高斯消元及实现的主要内容,如果未能解决你的问题,请参考以下文章