Составить таблицу ступенчатой функции - C#
Формулировка задачи:
Составить таблицу ступенчатой функции. 1<=x<=2; dx=0.1; 1<=y<=10; dy=0.5. Определить отклонение q от среднего.
Помогите с решением пожалуйста, вот что смог сделать сам
double dx = 0.1;
double x = 1;
{
double dy = 0.5;
double y = 1;
{
double Z = ((Math.Sin(x) + Math.Cos(y) + 2 / Math.Sin(x) * Math.Cos(y) + 4) + 4);
y += dy;
}
while (y <= 10);
x += dx;
}
while (x <= 2);Решение задачи: «Составить таблицу ступенчатой функции»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
namespace AverageAbsoluteDeviationSample
{
static internal class Program
{
static private void Main()
{
// Нижняя и верхняя границы и шаг переменной x.
double x0 = 1.0; double x1 = 2.0; double dx = 0.1;
// Нижняя и верхняя границы и шаг переменной y.
double y0 = 1.0; double y1 = 2.0; double dy = 0.5;
// Значения функции (переменная х принимает одиннадцать значений, переменная у принимает три значения).
List<double> z = new List<double>((int)(((x1 - x0) / dx + 1) * ((y1 - y0) / dy + 1)));
// Считаем значения функции и выводим результаты.
Console.WriteLine("-------------------------------------");
Console.WriteLine("| x | y | z |");
Console.WriteLine("-------------------------------------");
for (double x = x0; x < x1 + dx; x += dx)
{
for (double y = y0; y < y1 + dy; y += dy)
{
// Замечание: в данном случае знаменатель можно не проверять на нулевое значение, он никогда не
// будет равен нулю (см. определение sin и cos).
z.Add((Math.Sin(x) + Math.Cos(x) + 2) / (Math.Sin(x) * Math.Cos(x) + 4) + 4);
Console.WriteLine("| {0,7:F3} | {1,7:F3} | {2,13:F9} |", x, y, z.Last());
}
}
Console.WriteLine("-------------------------------------" + Environment.NewLine);
// Арифметическое среднее значений функции.
double zavg = z.Average();
// Среднее абсолютное отклонение значений функции.
double q = Math.Sqrt(z.Sum(val => (Math.Abs(val - zavg)))) / z.Count;
/*
// Если предыдущее выражение не совсем понятно, то ниже тоже самое без LINQ.
// Сумма абсолютных отклонений значений функции.
double qsum = 0;
for (int i = 0; i < z.Count; ++i)
{
qsum += Math.Abs(z[i] - zavg);
}
// Среднее абсолютное отклонение значений функции.
double q = Math.Sqrt(qsum) / z.Count();
*/
Console.WriteLine("Среднее абсолютное отклонение значений функции: " + q.ToString("F9") + Environment.NewLine);
}
}
}