数值分析列主元高斯消去法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
三、运行结果
四、代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 高斯 {
class Program {
static double[] Gause(double[,] a, int n) {
a[i, k] = a[rank, k];
a[rank, k] = temp;
}
//消元
for (j = i + 1; j <= n - 1; j++)
{
l = a[j, i] / a[i, i];
for (k = i; k <= n; k++)
a[j, k] = a[j, k] - l * a[i, k];
for (j = i + 1; j <= n - 1; j++) //选主元
if (Math.Abs(a[j, i]) > mx)
{
mx = Math.Abs(a[j, i]);
rank = j;
columm = i;
}
for (k = 0; k <= n; k++)
//主元行变换
{
temp = a[i, k];
int i, j, k; int rank, columm; double temp, l, s, mx; double[] x = new double[n]; for (i = 0; i <= n - 2; i++) {
mx = Math.Abs(a[i, i]); rank = i;
columm = i;
}
return x;
}
static void Main(string[] args)
{
double[,] a = new double[4, 5] { { 10, -7, 0, 1, 8 }, { -3,
2.099999, 6, 2, 5.900001 }, { 5, -1, 5, -1, 5 }, { 2, 1, 0, 2, 1 } };
int n = 4;
double[] x = new double[n];
x = Gause(a, n);
Console.WriteLine("高斯消去法方程:");
for (iBaidu Nhomakorabeat i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
Console.Write(a[i, j].ToString() + " ");
Console.WriteLine();
}
Console.WriteLine("线性方程组的解:");
for (int i = 0; i <= n - 1; i++)
Console.Write("x" + (i + 1).ToString() + "=" +
x[i].ToString() + "
");
Console.WriteLine();
Console.ReadLine();
}
}
}
四、分析
通过本次实验的学习,学会根据算法编写基本的相关程序,虽然此次程序模板由老师给 予,但认真阅读理解程序有助于今后的学习,再利用计算机中的C语言对高斯列主元消去法 可以快速得到线性方程组的解,由简单的线性方程组可以推广到一般n阶线性方程组,这对 如何利用高斯列主元消去法解决实际问题有了一定的经验。
实验四:列组元消去法
一、目的
1)熟悉列主元高斯消元法解线性方程组的算法 2)掌握列主元高斯消去法的编程
二、实验原理
列主元素消去法是为控制舍入误差而提出来的一种算法,在Gauss消去法的消元过程中, 若出现a=0,则消元无法进行,即使其不为0,但很小,把它作为除数,就会导致其他元素量级的 巨大增长和舍入误差的扩散,最后使计算结果不可靠.使用列主元素消去法计算,基本上能控 制舍入误差的影响,并且选主元素比较方便.
}
}
x[n - 1] = a[n - 1, n] / a[n - 1, n - 1]; //回代方程求解x
for (i = n - 2; i >= 0; i--)
{
s = 0;
for (j = i + 1; j <= n - 1; j++)
s = s + a[i, j] * x[j];
x[i] = (a[i, n] - s) / a[i, i];
四、代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 高斯 {
class Program {
static double[] Gause(double[,] a, int n) {
a[i, k] = a[rank, k];
a[rank, k] = temp;
}
//消元
for (j = i + 1; j <= n - 1; j++)
{
l = a[j, i] / a[i, i];
for (k = i; k <= n; k++)
a[j, k] = a[j, k] - l * a[i, k];
for (j = i + 1; j <= n - 1; j++) //选主元
if (Math.Abs(a[j, i]) > mx)
{
mx = Math.Abs(a[j, i]);
rank = j;
columm = i;
}
for (k = 0; k <= n; k++)
//主元行变换
{
temp = a[i, k];
int i, j, k; int rank, columm; double temp, l, s, mx; double[] x = new double[n]; for (i = 0; i <= n - 2; i++) {
mx = Math.Abs(a[i, i]); rank = i;
columm = i;
}
return x;
}
static void Main(string[] args)
{
double[,] a = new double[4, 5] { { 10, -7, 0, 1, 8 }, { -3,
2.099999, 6, 2, 5.900001 }, { 5, -1, 5, -1, 5 }, { 2, 1, 0, 2, 1 } };
int n = 4;
double[] x = new double[n];
x = Gause(a, n);
Console.WriteLine("高斯消去法方程:");
for (iBaidu Nhomakorabeat i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
Console.Write(a[i, j].ToString() + " ");
Console.WriteLine();
}
Console.WriteLine("线性方程组的解:");
for (int i = 0; i <= n - 1; i++)
Console.Write("x" + (i + 1).ToString() + "=" +
x[i].ToString() + "
");
Console.WriteLine();
Console.ReadLine();
}
}
}
四、分析
通过本次实验的学习,学会根据算法编写基本的相关程序,虽然此次程序模板由老师给 予,但认真阅读理解程序有助于今后的学习,再利用计算机中的C语言对高斯列主元消去法 可以快速得到线性方程组的解,由简单的线性方程组可以推广到一般n阶线性方程组,这对 如何利用高斯列主元消去法解决实际问题有了一定的经验。
实验四:列组元消去法
一、目的
1)熟悉列主元高斯消元法解线性方程组的算法 2)掌握列主元高斯消去法的编程
二、实验原理
列主元素消去法是为控制舍入误差而提出来的一种算法,在Gauss消去法的消元过程中, 若出现a=0,则消元无法进行,即使其不为0,但很小,把它作为除数,就会导致其他元素量级的 巨大增长和舍入误差的扩散,最后使计算结果不可靠.使用列主元素消去法计算,基本上能控 制舍入误差的影响,并且选主元素比较方便.
}
}
x[n - 1] = a[n - 1, n] / a[n - 1, n - 1]; //回代方程求解x
for (i = n - 2; i >= 0; i--)
{
s = 0;
for (j = i + 1; j <= n - 1; j++)
s = s + a[i, j] * x[j];
x[i] = (a[i, n] - s) / a[i, i];