///
1<summary>
2
3/// 利用雅可比 (Jocabi)迭代法解线性方程组
4
5///<summary>
6
7using System;
8
9namespace Interetive
10
11{
12
13/// <summary>
14
15/// Jacobi 的摘要说明。
16
17/// </summary>
18
19class Jacobi
20
21{
22
23private int n;
24
25private double [,] Parameters;
26
27private double [,] Value;
28
29private double Precision;
30
31private double [] MatrixB;
32
33/// <summary>
34
35/// 输入系数矩阵
36
37/// </summary>
38
39private void Initialize()
40
41{
42
43Console.WriteLine("请输入系数矩阵的维数:");
44
45n= int .Parse(Console.ReadLine());
46
47Value= new Double[2,n];
48
49Parameters= new double [n,n];
50
51MatrixB= new double [n];
52
53for ( int i=0;i<n;i++) (="" .parse(console.readline());="" <summary="" console.write("a("+(j+1)+")=");
54
55Parameters[i,i]= double .Parse(Console.ReadLine());
56
57}
58
59}
60
61Console.WriteLine(" console.write("b("+(i+1)+")=");
62
63MatrixB[i]= double .Parse(Console.ReadLine());
64
65}
66
67}
68
69/// <summary>
70
71/// 检查系数矩阵是否收敛
72
73/// </summary>
74
75/// <returns></returns>
76
77private bool IsConvergence()
78
79{
80
81for ( int i=0;i<n;i++)
82
83{
84
85for ( int j=0;j<n;j++)
86
87{
88
89if (Parameters[i,i]<=Parameters[i,j])
90
91{
92
93return false ;
94
95}
96
97}
98
99}
100
101return true ;
102
103}
104
105/// <summary>
106
107/// 输入初值
108
109/// </summary>
110
111private void SetValue()
112
113{
114
115for ( int i=0;i<n;i++)
116
117{
118
119Console.Write(" console.writeline("请输入第"+(i+1)+"维系数");="" for="" i="0;i<n;i++)" int="" j="0;j<n;j++)" precision="double" x("+i+")=");
120
121Value[0,i]= double .Parse(Console.ReadLine());
122
123Value[1,i]=0.0;
124
125}
126
127Console.WriteLine(" {="" }="" 请输入b矩阵:");="" 请输入精度要求:");="">
128
129/// 检查迭代是否已满足精度要求
130
131/// </n;i++)></summary>
132
133/// <returns></returns>
134
135private bool IsPrecision()
136
137{
138
139for ( int i=0;i<n;i++) (math.abs(value[0,i]-value[1,i])="" if="" {="">Precision)
140
141{
142
143return false ;
144
145}
146
147}
148
149return true ;
150
151}
152
153/// <summary>
154
155/// 迭代过程
156
157/// </summary>
158
159/// <returns></returns>
160
161private void Iterate()
162
163{
164
165for ( int i=0;i<n;i++) (="" (isprecision()="false" (j!="i)" )="" <summary="" for="" if="" int="" j="0;j<n;j++)" value[i%2,i]+="MatrixB[i];" {="" }="">
166
167/// 计算Jacobi迭代结果
168
169/// </n;i++)></n;i++)></summary>
///
1<returns></returns>
private void calculate()
{
if (IsConvergence()== true )
{
Iterate();
}
else
{
Console.WriteLine("您输入的方程组的Jacobi迭代式不收敛!");
}
}
///
1<summary>
2
3/// 返回迭代结果
4
5/// </summary>
private void Result()
{
if (IsConvergence()== true )
{
for ( int i=0;i<n;i++)
{
Console.WriteLine("x("+i+")="+Value[1,i]);
}
}
}
/// <summary>
/// 应用程序的主入口点。
/// [STAThread]
static void Main( string [] args)
{
Jacobi Jacobi1= new Jacobi();
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-lay