Форум программистов, компьютерный форум CyberForum.ru

Используя интерполяционную формулу Ньютона, вычислить значение функции при заданных значениях аргумента с точностью до 0.001 - C++

Восстановить пароль Регистрация
 
Dima1996
4 / 4 / 0
Регистрация: 24.01.2013
Сообщений: 96
31.01.2014, 01:05     Используя интерполяционную формулу Ньютона, вычислить значение функции при заданных значениях аргумента с точностью до 0.001 #1
Нужно написать програму которая будит используя интерполяционную формулу Ньютона вычеслять значение функции.

Задание:

Значение аргумента: х1=1.4161; x2=1.4625; x3=1.4135; x4=1.470.

Таблица значений:

x: 1.415, 1.420, 1.425, 1.430, 1.435, 1.440, 1.445, 1.450, 1.455, 1.460, 1.465.

y: 0.888551, 0.889599, 0.890637, 0.891667, 0.892687, 0.893698, 0.894700, 0.895693, 0.896677, 0.897653, 0.898619.

Задача очень тяжелая, но может кто то сможет сделать.

Заранее спасибо!

Добавлено через 56 минут
я не понял, какой функции нужно вычеслять значение?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.01.2014, 01:05     Используя интерполяционную формулу Ньютона, вычислить значение функции при заданных значениях аргумента с точностью до 0.001
Посмотрите здесь:

C++ Вычислить значение функции переменных при заданных значениях параметров
Вычислить с заданной точностью значение функции, используя ее разложение в ряд C++
Вычислить с заданной точностью значение функции , используя ее разложение в ряд: C++
C++ Вычислить значение составной функции при заданных значениях аргументов
Для заданных значений аргумента Х вычислить значения суммы S и функции Y или Z. Вычисление S произвести с точностью E C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kill100
 Аватар для Kill100
359 / 248 / 33
Регистрация: 11.12.2010
Сообщений: 1,068
Завершенные тесты: 1
31.01.2014, 01:19     Используя интерполяционную формулу Ньютона, вычислить значение функции при заданных значениях аргумента с точностью до 0.001 #2
Цитата Сообщение от Dima1996 Посмотреть сообщение
я не понял, какой функции нужно вычеслять значение?
Так это по численным методам? Функция у тебя задана набором точек. X и Y. А только строим приближенную функцию к данной и вычисляем уже её. (интреполируем)
Если сей час найду у себя среди лаб то скину.
Dima1996
4 / 4 / 0
Регистрация: 24.01.2013
Сообщений: 96
31.01.2014, 01:27  [ТС]     Используя интерполяционную формулу Ньютона, вычислить значение функции при заданных значениях аргумента с точностью до 0.001 #3
тоисть будет 1 ответ? или 4, так как значений аргумента 4??
Kill100
 Аватар для Kill100
359 / 248 / 33
Регистрация: 11.12.2010
Сообщений: 1,068
Завершенные тесты: 1
31.01.2014, 02:01     Используя интерполяционную формулу Ньютона, вычислить значение функции при заданных значениях аргумента с точностью до 0.001 #4
Цитата Сообщение от Dima1996 Посмотреть сообщение
используя интерполяционную формулу Ньютона
А вам какая нужна?
1 или 2? Их у него две
Одну из них набросал за пару минут по памяти и своим лекциям. Но в верности не уверен давно это проходил.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
// Выводим массив на консоль
// _array - массив для вывода, 
// n -размер массива
void PrintArray(double* _array, int n)
{
    for (int i = 0; i < n; i++)
    {
        printf("%lf\t", _array[i]);
    }
}
//Считываем массив с консоли
//n размер массива
double* ReadArray(int n)
{
    double* _array = new double[n];
    for (int i = 0; i < n; i++)
    {
        scanf_s("%lf", &_array[i]);
    }
    return _array;
}
int main()
{
    double *x, *y, *a, *b, *d;
    int n, numb;
    double q, p, h, f;
    printf("Input n :\r\n");
    scanf_s("%i", &n);
    printf("Input x :\r\n");
    x = ReadArray(n);
    PrintArray(x, n);
    printf("Input y :\r\n");
    y = ReadArray(n);
    printf("\r\nX = :\r\n");
    PrintArray(x, n);
    printf("\r\nY = :\r\n");
    PrintArray(y, n);
    a = new double[n], d = new double[n], b = new double[n];
    for (int i = 0; i < n - 1; i++)
        a[i] = y[i + 1] - y[i];
    for (int i = 0; i < n - 1; i++)
        b[i] = a[i + 1] - a[i];
    for (int i = 0; i < n - 1; i++)
        d[i] = b[i + 1] - b[i];
    for (int i = 0; i < n - 1; i++)
        printf("X = %lf \t Y = %lf \t A = %lf\t B = %lf \t D = %lf \r\n", x[i], y[i], a[i], b[i], d[i]);
    h = x[2] - x[1];
    printf("Input f:\r\n");
    scanf_s("%lf", &f);
    printf("Input number х:");
    scanf_s("%i", &numb);
    q = (f - x[numb]) / h;
    p = y[numb] + (q*a[numb]) + (q*(q - 1) / 2)*b[numb] + (q*(q - 1)*(q - 2) / 6)*d[numb];
    printf("P = %lf\r\n", p);
    system("Pause");
    delete[] a, d, b, x, y;
    return 0;
}
Dima1996
4 / 4 / 0
Регистрация: 24.01.2013
Сообщений: 96
31.01.2014, 02:09  [ТС]     Используя интерполяционную формулу Ньютона, вычислить значение функции при заданных значениях аргумента с точностью до 0.001 #5
тоисть будет 1 ответ? или 4, так как значений аргумента 4??
сколько ответов должно быть?
Kill100
 Аватар для Kill100
359 / 248 / 33
Регистрация: 11.12.2010
Сообщений: 1,068
Завершенные тесты: 1
31.01.2014, 02:12     Используя интерполяционную формулу Ньютона, вычислить значение функции при заданных значениях аргумента с точностью до 0.001 #6
Бл вот с исправленными ошибками.
В циклах накосячил
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
// Выводим массив на консоль
// _array - массив для вывода, 
// n -размер массива
void PrintArray(double* _array, int n)
{
    for (int i = 0; i < n; i++)
    {
        printf("%lf\t", _array[i]);
    }
}
//Считываем массив с консоли
//n размер массива
double* ReadArray(int n)
{
    double* _array = new double[n];
    for (int i = 0; i < n; i++)
    {
        scanf_s("%lf", &_array[i]);
    }
    return _array;
}
int main()
{
    /*srand(time(NULL));*/
    double *x, *y, *a, *b, *d;
    int n, numb;
    double q, p, h, f;
    printf("Input n :\r\n");
    scanf_s("%i", &n);
    printf("Input x :\r\n");
    x = ReadArray(n);
    PrintArray(x, n);
    printf("Input y :\r\n");
    y = ReadArray(n);
    printf("\r\nX = :\r\n");
    PrintArray(x, n);
    printf("\r\nY = :\r\n");
    PrintArray(y, n);
    a = new double[n], d = new double[n], b = new double[n];
    for (int i = 0; i < n - 1; i++)
        a[i] = y[i + 1] - y[i];
    for (int i = 0; i < n - 2; i++)
        b[i] = a[i + 1] - a[i];
    for (int i = 0; i < n - 3; i++)
        d[i] = b[i + 1] - b[i];
    for (int i = 0; i < n - 3; i++)
        printf("X = %lf \t Y = %lf \t A = %lf\t B = %lf \t D = %lf \r\n", x[i], y[i], a[i], b[i], d[i]);
    h = x[2] - x[1];
    printf("Input f:\r\n");
    scanf_s("%lf", &f);
    printf("Input number х:");
    scanf_s("%i", &numb);
    q = (f - x[numb]) / h;
    p = y[numb] + (q*a[numb]) + (q*(q - 1) / 2)*b[numb] + (q*(q - 1)*(q - 2) / 6)*d[numb];
    printf("P = %lf\r\n", p);
    system("Pause");
    delete[] a, d, b, x, y;
    return 0;
}
Добавлено через 46 секунд
Цитата Сообщение от Dima1996 Посмотреть сообщение
сколько ответов должно быть?
Ответ 1. Ты ищешь значение в конкретной точке.

Добавлено через 1 минуту
И да прога если верить моим лекциям написана для второй формулы ньютона.
Yandex
Объявления
31.01.2014, 02:12     Используя интерполяционную формулу Ньютона, вычислить значение функции при заданных значениях аргумента с точностью до 0.001
Ответ Создать тему
Опции темы

Текущее время: 03:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru