Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Интерполяция алгебраическими многочленами в С++ 
:(
    Опции темы
Cyber27
Дата 12.2.2019, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 4.11.2018

Репутация: нет
Всего: нет



Здравствуйте, помогите исправить ошибки, пожалуйста smile 
Вот задачка:
Данная n + 1 пара значений (x; y), связанных функциональной зависимостью f (x) вашего варианта. Значение x выбраны в n + 1 равноудаленных точках отрезка [a; b]. Необходимо построить интерполяционный много-член Pn (x). Для этого:
1) Рассчитайте значение функции f (x) в равноудаленных точках отрезка [a; b]. Тем самым будут заполнены два массива x и y, которые можно интерпретировать как экспериментально измеренные значения каких-либо физических величин.
2) Рассчитайте разделены разницы по значениям функции в n + 1 узле.
3) Запрограммируйте вычисления интерполяционного многочлена Pn (x) по схеме Горнера.
4) Постройте в графическом окне графики исходной функции f (x) и интерполяционного многочлена Pn (x) на отрезке [a; b +]. Значение> 0 Пожалуйста, выберите таким, чтобы область построения графика по оси x была в 1: 5 2 раза больше отрезка, на котором выбрали узлы дискретизации.
5) Опыт поведение интерполяционного многочлена при различной количестве узлов дискретизации (4,5,7,10 точек).
6) Смоделируйте погрешность задания значений функции в узлах дискретамизации путем добавления к значениям функции случайных чисел.
Код

#include <math.h>
#include <windows.h>
#define e 2.71
int main()
{
// Инициализация графики
int gd, gm;
detectgraph(&gd,&gm);
initgraph(&gd,&gm,"");
    // цвет фона - белый
    setbkcolor(WHITE);
    // очистка окна
    cleardevice();
    // текущий цвет - черный
    setcolor(BLACK);
    // координаты центра
 
int X0=getMaxx()/2;
int Y0=getMaxy()/2;
    // оси координат
line(0,Y0,getMaxx(),Y0);
line(X0,0,X0,getMaxy());
    // единичные отрезки в пикселях
    int edx=20;
int edy=15;
    // текущий цвет - зелёный
setcolor(LIGHTBLUE);
    //  переменная цикла
int k;
    //  рисуем засечки
    // по оси х
    for(k=0;edx*k<X0;k++)
    {
        line(X0+k*edx,Y0-3,X0+k*edx,Y0+3); line(X0-k*edx,Y0-3,X0-k*edx,Y0+3);}
    // по оси у for(k=0;edy*k<Y0;k++)
    {
        line(X0-3,Y0+k*edy,X0+3,Y0+k*edy); line(X0-3,Y0-k*edy,X0+3,Y0-k*edy);}
    // текущий цвет - розовый
    setcolor(LIGHTRED);
// стиль линии - сплошная толстая
setlinestyle(SOLID_LINE,0,THICK_WIDTH);
// описание переменных
float a,b,x,y,delta;
    //  интервал дискретизации
delta=0.1;
    // границы построения по оси х
a=-2; b=2;
    // Вычисление начальных координат
    x=a;
y=e^(-x);
    // перемещение указателя в начало графика
    moveto(X0+edx*x,Y0-edy*y);
    // цикл построения графика
    for(x=a;x<=b;x=x+delta)
    {
        y=e^(-x);
        lineto(X0+edx*x,Y0-edy*y);};
    // установка стиля текста
    settextstyle(SANS_SERIF_FONT,0,2);
    // вывод заголовка
outtextxy(180,10,"График функции f(x)=e^(-x)");
getch(); // ожидание
    // закрытие графического окна
    closegraph();
return 0;
    }

f(x)            [a,b]
e^(-x)    [-2,2] 

Это сообщение отредактировал(а) Cyber27 - 12.2.2019, 19:42
PM MAIL   Вверх
xvr
Дата 12.2.2019, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Ошибки в строках 1-66. Где вы это ископаемое дерь... чудо нашли? Верните обратно.

PM MAIL   Вверх
Cyber27
Дата 12.2.2019, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 4.11.2018

Репутация: нет
Всего: нет



xvr, А можно и по другому? Но как?

Это сообщение отредактировал(а) Cyber27 - 12.2.2019, 19:33
PM MAIL   Вверх
xvr
Дата 13.2.2019, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Можно, например написать в Центр Помощи (на этом форуме) - там как раз пишут программы за вас

PM MAIL   Вверх
Cyber27
Дата 13.2.2019, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 4.11.2018

Репутация: нет
Всего: нет



xvr, Мне не надо чтоб все за меня написали, мне надо узнать как самому это переделать. А то я сделал, а вы обобщили и даже не указали на ошибки
PM MAIL   Вверх
LeonidPr
Дата 15.2.2019, 02:31 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 17.2.2012
Где: г. Чебоксары

Репутация: нет
Всего: 1



Поясню.
Данный код написан судя по всему на старом Borland C 3.1 под DOS.
Сейчас как вы понимаете все это устарело. Функции рисования специфичны для библиотеки, используемой в те времена.
Сейчас у вас два варианта, либо использовать C++ Builder  какой-нить, быстро сделать там форму с компонентом на котором можно рисовать и на нем уже пользоваться соответствующими функциями для отрисовки линий.
Либо использовать любую простую библиотеку, которая позволяет порисовать на холсте и сохранить это в какой-нибудь файл навроде bmp, tga или еще что-нить.
Математическая часть с рассчетами соответственно останется та же, поменяются только та часть, где вы что-то рисуете.
Быстрое гугление подсказывает вот этот проектик.
libtga
Все что вам надо там похоже есть
добавляете два файла в ваш проект, делаете массив для пикселей и рисуете функцией tga_line все что вам надо.
потом с помощью tga_export сохраняете нарисованное в файл, который можно открыть обычным просмотровщиком изображений.
Удобно тем, что можете нафигачить кучку файлов с разными параметрами отрисовки для
Цитата

5) Опыт поведение интерполяционного многочлена при различной количестве узлов дискретизации (4,5,7,10 точек).

--------------------
pkunzip.zip
PM MAIL   Вверх
xvr
Дата 15.2.2019, 18:57 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(Cyber27 @  13.2.2019,  20:46 Найти цитируемый пост)
Мне не надо чтоб все за меня написали, мне надо узнать как самому это переделать. 

Там нечего переделывать. Ни один пункт из задания (за исключением первой части п4) не сделан (и даже намёков нет). Функция e^(-x) вычисляется неправильно (хинт - '^' в языке С это не возведение в степень)
Красивое рисование осей координат написано на мёртвой версии компилятора (как вам LeonidPr уже подсказал).

Что вы хотите переделать? Тут надо всё выкинуть и начинать с чистого листа.

Для начала - на каком языке это должно быть написано? И под какой графический фреймворк? (В задании в п4 упоминается 'графическое окно' - видимо нужен GUI. Если нет, то лучше с окнами не связываться, как опять же LeonidPr советовал)


PM MAIL   Вверх
LeonidPr
Дата 19.2.2019, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 17.2.2012
Где: г. Чебоксары

Репутация: нет
Всего: 1



Боюсь наши с вами рассуждения уже нафиг никому не нужны. Лаба сделана и сдана (или не сдана)
Цитата(xvr @  15.2.2019,  18:57 Найти цитируемый пост)
И под какой графический фреймворк? 

Боже, что такое фреймворк, вы о чем??? smile 
Сказано же "Графическое окно", никаких фреймворков smile 


Это сообщение отредактировал(а) LeonidPr - 19.2.2019, 11:30
--------------------
pkunzip.zip
PM MAIL   Вверх
Cyber27
Дата 20.2.2019, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 4.11.2018

Репутация: нет
Всего: нет



LeonidPr, Еще не сделана и не сдана, а информацию я учитываю
PM MAIL   Вверх
kapbepucm
Дата 25.2.2019, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: нет
Всего: 12



Цитата(Cyber27 @  12.2.2019,  15:30 Найти цитируемый пост)
равноудаленных точках отрезка
в задании не указано значение этого "удаления"; в коде, насколько я понял, используется 0.1- это правильно?
Цитата(Cyber27 @  12.2.2019,  15:30 Найти цитируемый пост)
Рассчитайте разделены разницы по значениям функции в n + 1 узле
Моя русский не понимать твоя русский smile
Цитата(Cyber27 @  12.2.2019,  15:30 Найти цитируемый пост)
n + 1
в задании не нахожу значение n

Это сообщение отредактировал(а) kapbepucm - 25.2.2019, 15:56


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

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


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1430 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.