利用雅可比(Jocabi)迭代法解线性方程组

///

  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///  &lt;summary&gt;
 70
 71///  检查系数矩阵是否收敛 
 72
 73///  &lt;/summary&gt;
 74
 75///  &lt;returns&gt;&lt;/returns&gt;
 76
 77private  bool  IsConvergence() 
 78
 79{ 
 80
 81for  (  int  i=0;i&lt;n;i++) 
 82
 83{ 
 84
 85for  (  int  j=0;j&lt;n;j++) 
 86
 87{ 
 88
 89if  (Parameters[i,i]&lt;=Parameters[i,j]) 
 90
 91{ 
 92
 93return  false  ; 
 94
 95} 
 96
 97} 
 98
 99} 
100
101return  true  ; 
102
103} 
104
105///  &lt;summary&gt;
106
107///  输入初值 
108
109///  &lt;/summary&gt;
110
111private  void  SetValue() 
112
113{ 
114
115for  (  int  i=0;i&lt;n;i++) 
116
117{ 
118
119Console.Write(" console.writeline("请输入第"+(i+1)+"维系数");="" for="" i="0;i&lt;n;i++)" int="" j="0;j&lt;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&lt;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

Published At
Categories with Web编程
Tagged with
comments powered by Disqus