Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.04.2022, 17:32   #1
REZR
Пользователь
 
Регистрация: 05.04.2022
Сообщений: 26
По умолчанию Исправить ошибку.

Найти приближённое значение функции y=h(x) при заданном значении аргумента x с помощью интерполяционного многочлена
Лагранжа. Функция y=h(x) задана таблично координатами точек (xi yi)
; yiq
(i= 0,5). (б) Ту же задачу решить с помощью интерполяционного многочлена Ньютона.
Код:
#include <iostream>
#include <locale>
 
using namespace std;
 
double resh(double* mx, double* my, double x, int n)
{
    double l = 0;
    for (int k = 0; k < n; k++)
    {
        double ch = 1;
        for (int i = 0; i < n; i++)
        {
            if (i != k)
                ch *= (x - mx[i]);
        }
        double zm = 1;
        for (int i = 0; i < n; i++)
        {
            if (i != k)
                zm *= (mx[k] - mx[i]);
        }
        l += my[k] * ch / zm;
    }
    return l;
}
 
void arrays(double* m, int n)
{
 
    for (int i = 0; i < n; i++)
    {
        cout << m[i] << "  ";
    }
    cout << endl;
}
 
void razdelraz(double** my, double* x, double* y, int n)
{
    for (int m = 1; m <= n; m++)
    {
        for (int k = 0; k <= n - m; k++)
        {
            if (m == 1)
                my[k][m] = (y[k + 1] - y[k]) / (x[k + 1] - x[k]);
            else
                my[k][m] = (my[k + 1][m - 1] - my[k][m - 1]) / (x[k + m] - x[k]);
        }
    }
}
 
int main()
{
    setlocale(LC_ALL, "rus");
    double x = -0.8;
    const int n = 6;
    double mx[n] = { -1.2, -0.9, 0.7, 1.1, 1.7, 2.9};
    double my[n] = { 3.38688, -1.50579, 16.99677, 25.85121, 28.70127, 0.55419 };
    double y[n - 1][n];
    cout << "При x = " << x << endl;
    cout << "Массив x[i]:" << endl;
    arrays(mx, n);
    cout << "Массив y[i]:" << endl;
    arrays(my, n);
    cout << endl;
    cout << "Ответ по Лагранжу: " << resh(mx, my, x, n);
    razdelraz(reinterpret_cast<double**>(y), mx, my, n);
 
}
Ошибка
Вызвано исключение по адресу 0x00007FF7462A2D3A в ConsoleApplication2.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xFFFFFFFFFFFFFFFF.
REZR вне форума Ответить с цитированием
Старый 13.04.2022, 17:42   #2
ForenLi
Форумчанин
 
Регистрация: 02.06.2021
Сообщений: 515
По умолчанию

my[k][m] и x[k + m] при m = n и k = 0 - бум
ForenLi вне форума Ответить с цитированием
Старый 13.04.2022, 17:54   #3
REZR
Пользователь
 
Регистрация: 05.04.2022
Сообщений: 26
По умолчанию

Цитата:
Сообщение от ForenLi Посмотреть сообщение
my[k][m] и x[k + m] при m = n и k = 0 - бум
что то я запутался, исправить пожалуйста нужную строчку.
REZR вне форума Ответить с цитированием
Старый 13.04.2022, 18:18   #4
ForenLi
Форумчанин
 
Регистрация: 02.06.2021
Сообщений: 515
По умолчанию

Как я могу исправить, если я не знаю, что у вас делает razdelraz? У вас же написаны формулы - поправьте индексы.
ForenLi вне форума Ответить с цитированием
Старый 13.04.2022, 18:35   #5
REZR
Пользователь
 
Регистрация: 05.04.2022
Сообщений: 26
По умолчанию

Цитата:
Сообщение от ForenLi Посмотреть сообщение
Как я могу исправить, если я не знаю, что у вас делает razdelraz? У вас же написаны формулы - поправьте индексы.
это полином Ньютона разделенная разность
REZR вне форума Ответить с цитированием
Старый 13.04.2022, 18:52   #6
ForenLi
Форумчанин
 
Регистрация: 02.06.2021
Сообщений: 515
По умолчанию

Где вы видите там полином? У вас задача решить одно и тоже двумя способами, но у вас в пермо случае получается число, а во втором таблица.
ForenLi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
исправить ошибку Tytik C# (си шарп) 0 16.12.2018 17:29
Исправить ошибку,с++ RedFox94 Помощь студентам 0 05.12.2012 23:08
исправить ошибку iKDRJ Общие вопросы C/C++ 1 05.12.2012 00:45
как исправить ошибку Katrina* Паскаль, Turbo Pascal, PascalABC.NET 9 21.12.2011 00:17
Исправить ошибку CPP VKorablev Помощь студентам 0 20.12.2011 21:42