Консультация № 197458
20.12.2019, 11:23
0.00 руб.
1 0 0
Уважаемые эксперты! Пожалуйста, ответьте на вопрос:
Правильно ли написал программу по заданию:

1.Рассчитать h – шаг таблицы функции f(x), по которой с помощью линейной интерполяции можно было бы найти промежуточные значения функции с точностью 0.0001, если табличные значения функции округлены до 4-х знаков после точки.
2. Написать программу, которая
а) выводит таблицу значений функции с рассчитанным шагом h на интервале [c, c+15h] (таблица должна содержать 2 столбца: значения аргумента и соответствующее ему округленное до 0.0001 значение функции);
б) по сформированной таблице с помощью линейной интерполяции вычисляет приближенные значения функции в точках ;
в) выводит таблицу точных и приближенных значений функции (таблица должна содержать 3 столбца: значения xi из пункта б) и соответствующие им приближенные и точные значения функции).

Приложение:
Код программы:
private void button1_Click(object sender, EventArgs e)
{
double[] arr = new double[19];
double[] arrx = new double[19];
double c = 7;
double h = 0.004;
dataGridView1.RowCount = 19;
dataGridView1.ColumnCount = 2;
dataGridView2.RowCount = 19;
dataGridView2.ColumnCount = 3;

for (int i = 0; i < 19; i++)
{
double x = 0;
x += c + h * i;
arrx[i] = x;
double fx = Math.Pow(c,3) * Math.Cos((x+10*c)/c);
arr[i] = fx;

dataGridView1.Rows[i].Cells[0].Value = x;
dataGridView1.Rows[i].Cells[1].Value = Math.Round(fx, 4);
}
double[] arrxi = new double[15];
for (int i = 1; i < 15; i++)
{
double xi = c+0.6*h * i;

arrxi[i] = xi;

dataGridView2.Rows[i].Cells[0].Value = Math.Round(xi, 4);
double lenint = arr[i] * xi / c;
dataGridView2.Rows[i].Cells[1].Value = Math.Round(lenint, 4);
double diff = (arr[i + 1] - arr[i - 1]) / (2 * h);
dataGridView2.Rows[i].Cells[2].Value = Math.Round(diff, 4);
}
}
Прикрепленные файлы:
171aa3c5f4a87fcc66d54cdadee212bc67ac5fa1.png

Обсуждение

Форма ответа