Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Dima1996
4 / 4 / 3
Регистрация: 24.01.2013
Сообщений: 96
#1

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

31.01.2014, 01:05. Просмотров 1355. Ответов 5
Метки нет (Все метки)

Нужно написать програму которая будит используя интерполяционную формулу Ньютона вычеслять значение функции.

Задание:

Значение аргумента: х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 минут
я не понял, какой функции нужно вычеслять значение?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.01.2014, 01:05
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Используя интерполяционную формулу Ньютона, вычислить значение функции при заданных значениях аргумента с точностью до 0.001 (C++):

Вычислить значения функции y = -0,5 ln (x) при значениях аргумента, заданных в массиве X
Дан массив X, размером 5. Вычислить значения функции y = -0,5 ln (x) при...

Вычислить значение функции при заданных значениях параметров
Составить структурную схему алгоритма. Составить программу, вычисляющие...

Вычислить значение составной функции при заданных значениях аргументов
Такая задачка

Вычислить значение функции переменных при заданных значениях параметров
X=6t^2-(ctg z+1)/y^2 при y=2; z=4; t=sin(2+z) Попробовал сделать эту...

Вычислить значение функции exp(x) с точностью 0.001 (разложение в ряд Тейлора)
вычислить значение функции exp(x) с точностью 0.001, разложив функцию в ряд...

Для заданных значений аргумента Х вычислить значения суммы S и функции Y или Z. Вычисление S произвести с точностью E
Составить программы в среде Dev -C++ 1. Для заданных значений аргумента Х...

5
Kill100
419 / 285 / 81
Регистрация: 11.12.2010
Сообщений: 1,195
Завершенные тесты: 1
31.01.2014, 01:19 #2
Цитата Сообщение от Dima1996 Посмотреть сообщение
я не понял, какой функции нужно вычеслять значение?
Так это по численным методам? Функция у тебя задана набором точек. X и Y. А только строим приближенную функцию к данной и вычисляем уже её. (интреполируем)
Если сей час найду у себя среди лаб то скину.
1
Dima1996
4 / 4 / 3
Регистрация: 24.01.2013
Сообщений: 96
31.01.2014, 01:27  [ТС] #3
тоисть будет 1 ответ? или 4, так как значений аргумента 4??
0
Kill100
419 / 285 / 81
Регистрация: 11.12.2010
Сообщений: 1,195
Завершенные тесты: 1
31.01.2014, 02:01 #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;
}
1
Dima1996
4 / 4 / 3
Регистрация: 24.01.2013
Сообщений: 96
31.01.2014, 02:09  [ТС] #5
тоисть будет 1 ответ? или 4, так как значений аргумента 4??
сколько ответов должно быть?
0
Kill100
419 / 285 / 81
Регистрация: 11.12.2010
Сообщений: 1,195
Завершенные тесты: 1
31.01.2014, 02:12 #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 минуту
И да прога если верить моим лекциям написана для второй формулы ньютона.
0
31.01.2014, 02:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.01.2014, 02:12
Привет! Вот еще темы с решениями:

Вывести на экран дисплея сообщения о значениях функции при различных значениях аргумента
помогите пожалуйста.. Разработать программу, которая выводит на экран дисплея...

Вычислить с заданной точностью значение функции, используя ее разложение в ряд
Здравствуйте! Помогите, пожалуйста, с двумя заданиями: 1. Вычислить по...

Вычислить с заданной точностью значение функции , используя ее разложение в ряд:
Вычислить с заданной точностью значение функции , используя ее разложение в...

Вычислить значение функции, используя суммы с точностью.заданной пользователем
Нужно посчитать значение функции y=(e^x )* sin(x),не пользуясь функциями...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru