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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
slevin_45
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 66
#1

Вывод значений по графику функций - C++

17.12.2013, 01:39. Просмотров 769. Ответов 13
Метки нет (Все метки)

Всем привет.
Помогите мне,пожалуйста, литературой или собственным советом,чем угодно...
У меня есть график функции,полученной эмпирически то есть формулы зависимости у меня нет.Можно ли как-то вставить данный график в с++ и ,например,я пишу Х=5, и мне бы выводилось значение У.
спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.12.2013, 01:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывод значений по графику функций (C++):

Определить принадлежит ли данная точка графику функций - C++
Помогите пожалуйста с задачей: Определить принадлежит ли данная точка графику функций. Вот график:...

Передача значений функций в главную программу, вызов функций - C++
Здравствуйте! Скорее всего, неправильно передаю значения функциям и в главную программу. Помогите найти ошибку! В итоге выводит...

Вычислить и распечатать таблицу значений заданных функций для указанных значений - C++
для всех х, меняющихся с шагом hx=0.5 и всех y, меняющихся с шагом hy=0,25 вычислить и распечатать таблицу значений функций u и y . ...

Вычислить значение заданной функци на данном интервале с заданным шагом. Осуществить вывод значений аргумента и результатов вычислений значений функ - C++
Вычислить значение заданной функции y=f(x) на данном интервале с заданным шагом. Осуществить вывод значений аргумента и результатов...

Вычисления значений функций - C++
Мне была поставлена задача - вычислить значение функции. F(x)=\begin{cases} -x^2-9 & \text{ , } x \ge 13 \\ -\frac{1}{x^2+9} &...

Вычисление значений функций - C++
задано х=0.34*21, у=0.18*21,z=-1.72*21 разработать програму для вичисление значений функций с|x,y,z,b| и b|x,y,z| согласно таким...

13
abit
271 / 270 / 34
Регистрация: 03.02.2013
Сообщений: 754
17.12.2013, 01:55 #2
поясните что значит
график функции,полученной эмпирически то есть формулы зависимости у меня нет
это странно звучит, чуть менее бредовее, чем полный бред, что это там? таблица? алгоритм? что? я пишу X=2, или Ваше же X=5, что выводить в Y? объясните на словах
1
slevin_45
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 66
17.12.2013, 02:13  [ТС] #3
График функции -- кривая ,построенная по точкам.Например,график составлен из моих походов в лес в разные дни недели:в понедельник ветер дул с такой силой,во вторник с другой.И график есть кривая ,построенная в декартовой системе координат,где ось Х-дни недели ,У-скорость ветра.И мне нужно,чтобы я ввёл ,например,понедельник, и программа,имея график,выдала мне скорость ветра в понедельник.
0
abit
271 / 270 / 34
Регистрация: 03.02.2013
Сообщений: 754
17.12.2013, 02:29 #4
Цитата Сообщение от slevin_45 Посмотреть сообщение
График функции -- кривая ,построенная по точкам.Например,график составлен из моих походов в лес в разные дни недели:в понедельник ветер дул с такой силой,во вторник с другой.И график есть кривая ,построенная в декартовой системе координат,где ось Х-дни недели ,У-скорость ветра.И мне нужно,чтобы я ввёл ,например,понедельник, и программа,имея график,выдала мне скорость ветра в понедельник.
ок, начало я понял, давайте внимательно разберём, график некой штуки можно построить по трём вариантам -
1) формула этой функции (определённая на всём интервале где будем строить),
2) дискретная таблица (не важно как получена (чаще - измерением), но так же сопоставляет однозначно X->Y),
3) аппроксимация другого графика

я так понял Вам нужен второй вариант (это про теорию с ветром) заносим в таблицу по дням неделям силу ветра и видимо в ньютонах))) и смотрим на кривую?
0
Ev_Hyper
Заблокирован
17.12.2013, 09:22 #5
Насколько я понял, вам просто нужно получить функцию, исходя из данных вашей таблицы. Попробуйте провести интерполяцию сплайнами.

В противном случае, если дана таблица, и нужно хранить где-то значения то массив сразу приходит на ум.
0
vxg
Модератор
3172 / 1975 / 222
Регистрация: 13.01.2012
Сообщений: 7,605
17.12.2013, 11:00 #6
Цитата Сообщение от slevin_45 Посмотреть сообщение
Всем привет.
Помогите мне,пожалуйста, литературой или собственным советом,чем угодно...
У меня есть график функции,полученной эмпирически то есть формулы зависимости у меня нет.Можно ли как-то вставить данный график в с++ и ,например,я пишу Х=5, и мне бы выводилось значение У.
спасибо
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
float data[] =
{
    0, 0,
    1, 1,
    2, 4,
    3, 9,
    4, 16
};
int data_size = sizeof(data) / sizeof(data[0]) / 2;
 
float get_x(float *data, int idx)
{
    return *(data + idx * 2);
}
 
float get_y(float *data, int idx)
{
    return *(data + idx * 2 + 1);
}
 
float get_y(float *data, int data_size, float x)
{
    if (x <= get_x(data, 0)) return get_y(data, 0);
    if (x >= get_x(data, data_size - 1)) return get_y(data, data_size - 1);
    float res = 0;
    for (int idx = 1; idx < data_size; idx++)
    {
        if (get_x(data, idx) > x)
        {
            res = get_y(data, idx - 1) +
            (get_y(data, idx) - get_y(data, idx - 1)) /
            (get_x(data, idx) - get_x(data, idx - 1)) *
            (x - get_x(data, idx - 1));
            break;
        }
 
    }
    return res;
}
 
#include <iostream>
#include <stdlib.h>
 
int main(int argc, char* argv[])
{
    float x;
    std::cout << "x = ";
    std::cin >> x;
    std::cout << "y = " << get_y(data, data_size, x) << std::endl;
    system("pause");
    return 0;
}
0
slevin_45
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 66
17.12.2013, 19:20  [ТС] #7
График кривой у меня есть.Мне нужно,чтобы с помощью этого графика программа могла выводить мне значения.
Строить ничего мне не надо,всё готово.
Только каким-либо образом внести данный график в код программы(не в том смысле,чтобы он там был,а чтобы программа могла черпать из него значения и выводить эти значения.)
Может быть,какой-либо раздел почитать.Подскажите.
Ну,например,если бы человеку нужно было вывести латинский алфавит,я бы посоветовал ему почитать про массивы.\\\
Такого рода задания я не выполнял.
0
vxg
Модератор
3172 / 1975 / 222
Регистрация: 13.01.2012
Сообщений: 7,605
17.12.2013, 19:56 #8
Цитата Сообщение от slevin_45 Посмотреть сообщение
Мне нужно,чтобы с помощью этого графика программа могла выводить мне значения.
поднимите глаза код написан
1
Ev_Hyper
Заблокирован
17.12.2013, 19:58 #9
Распознование графика? Уф, по-моему проще все же построить функцию.
0
slevin_45
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 66
17.12.2013, 21:05  [ТС] #10
Я вообще не представляю как строится график функции в с++.
Могу ли я построить его,имея точки,расположенные друг от друга на расстоянии,например одной клетки?Как программа будет соединять эти точки?Или же это буду делать я?
Или же график функции строиться с минимальными расстояниями,но тогда,как я понимаю,должен использоваться цикл,но для цикла нужна какая-либо зависимость(формула)функции от аргумента,которой у меня нет.
Если первый вариант,то ,в принципе,понятно как сделать моё задание.
VXG,я ведь не просил готовое присылать.Мне нужно самому понять это,лучше посоветуйте тот источник,из которого вы узнали как это делать.Спасибо
0
vxg
Модератор
3172 / 1975 / 222
Регистрация: 13.01.2012
Сообщений: 7,605
18.12.2013, 07:03 #11
Цитата Сообщение от slevin_45 Посмотреть сообщение
Мне нужно самому понять это
это происходит следующим образом:
-имеем функцию в виде массива точек в котором каждому X соответствует Y (точки упорядочены по X от меньшего к большему)
-если необходимо вычислить значение функции в произвольной точке x мы проверяем попадает ли x в диапазон для которого определена функция - если не попадает (x меньше чем самый первый X или больше чем самый последний X), то мы считаем что нет ничего более умного чем предположить что функция за пределами диапазона определения имеет такое же значение как и в точке диапазона определения максимально приближенной к x - то есть мы как бы считаем, что функция слева от диапазона определения имеет значение такое же Y как у самой перовой точки, а справа от диапазона - такое же Y как у самой последней точки.
-если точка в пределах диапазона мы перебирая точки находим такие точки между которыми расположен этот самый x и находим y при помощи линейной интерполяции.
прочитать даже не знаю где. про интерполяцию как таковую наверное в математике. а про все в сумме - поваренной книги нету - просто сумма знаний. как вариант можно использовать не линейную интерполяцию, а какие-либо другие (например, сплайны), но тогда потребуется задавать граничные условия (например, значения производной в первой и последней точках) которые, очевидно, не так просто из пальца высосать. кроме того это никак не облегчит выдумывание значения за пределами диапазона.
1
slevin_45
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 66
18.12.2013, 19:05  [ТС] #12
"если точка в пределах диапазона мы перебирая точки находим такие точки между которыми расположен этот самый x"
Я так понял,это(перебор точек,между которыми наш X) будет выполняться с помощью цикла,с шагом,который выберу я сам.И в зависимости от величины моего шага X будет иметь степень конкретности по местоположению.Т.е. если я выберу шаг два,То программа в праве поместить X в интервале от [2,4].Если же меньший шаг,то всё будет точнее.
Простите,если несу чушь.Но так я понял.
0
vxg
Модератор
3172 / 1975 / 222
Регистрация: 13.01.2012
Сообщений: 7,605
19.12.2013, 06:46 #13
Цитата Сообщение от slevin_45 Посмотреть сообщение
с шагом,который выберу я сам
нет. этот перебор будет выполняться не по значению X, а по индексам точек в массиве - то есть передвигаясь по точкам в массиве мы будем сравнивать X предыдущей точки с X следующей ожидая ситуацию когда x окажется между ними
0
slevin_45
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 66
19.12.2013, 22:08  [ТС] #14
Спасибо всем большое!
1
19.12.2013, 22:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.12.2013, 22:08
Привет! Вот еще темы с ответами:

Вычисление значений функций. - C++
Доброго времени суток.Мне нужно найти значение функции ,сумму и |Y(x)–S(x)|.При том что Х изменяется от a до b с прибавлением h,где h в...

Передача значений функций - C++
извините конечно за дурацкий вопрос, не нашёл, думаю, может вы поможете... задача такова: мне надо например сделать 3 разных функции...

Возвращение из функций нескольких значений - C++
Доброго времени суток. Нужна помощь. Дано задание: Напишите функцию swap(int&amp; a, int&amp; b, int&amp; c), которая изменяет значения параметров по...

Вычисления значений рядных функций - C++
Помогите написать программу для вычисления значения функции(в аттаче). Вычисление ряда нужно проводить до условия минимизации значения...


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

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

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