Решение системы уравнений методом простой итерации - C#
Формулировка задачи:
Добрый вечер! Помогите пожалуйста написать код к следующей задаче:
Решить систему уравнений
с точностью E=10^-4 методом простой интерации. Заранее благодарен за помощь.
Решение задачи: «Решение системы уравнений методом простой итерации»
textual
Листинг программы
class Program
{
delegate double[] Func(double[] x);
static double Measure(double[] x, double[] y)
{
double s = 0;
for (int i = 0; i < x.Length; i++)
s += (x[i] - y[i]) * (x[i] - y[i]);
return Math.Sqrt(s);
}
static double[] Base(double[] x)
{
return new double[]
{
4.15 * x[0] - 3.20 * x[1] + 1.11 * x[2] + 5.40 * x[3] - 7.1,
0.87 * x[0] - 2.14 * x[1] - 2.14 * x[2] - 3.21 * x[3] - 3.06,
3.12 * x[0] - 1.00 * x[1] + 2.13 * x[2] + 0.00 * x[3] + 0.92,
2.11 * x[0] + 3.26 * x[1] + 2.17 * x[2] - 8.14 * x[3] + 7.5
};
}
static double[] Next(double[] x, double[] l, Func f)
{
double[] t = f(x);
for (int i = 0; i < x.Length; i++)
t[i] = x[i] - t[i] * l[i];
return t;
}
static void Main(string[] args)
{
// Начальное приближение
double[] x = { 0, 0, 0, 0 }, y = { 1, 1, 1, 1 };
// коэффициент
double[] l = { 0.01, -0.32, 0.3, -0.16 }; // метод Ньютона l = 1/f'(x0)
// точность
double e = 1e-4;
while (Measure(x, y) > e)
{
x = Next(y = x, l, Base);
}
for (int i = 0; i < x.Length; i++ )
{
Console.WriteLine("x[{0}] = {1}", i, x[i]);
}
Console.ReadLine();
}
}