PDA

Просмотр полной версии : Excel. Значение функции в промежуточных точках


Lexander
09.10.2012, 17:02
Интересует вопрос как в Ексель узнать значение функции в промежуточных точках.

Я построил график в Ексель по экспериментальным данным, например - в момент времени 1 величина принимает значение y1, а в момент времени 2 величина принимает значение y2 (y1 и y2 получены экспериментально). А мне нужно узнать чему равна величина в момент времени 1.5 - хочу определить это по графику, но не на глаз, а точно. В Екселе это можно сделать?

Hogfather
09.10.2012, 17:04
Lexander, А указатель мыша пробовали на график наводить?

Lexander
09.10.2012, 17:20
При наведении мышью на график Ексель выдает значение абсциссы. А мне надо значение функции - ординату. На глаз грубо и так видно, но мне надо точно до 0.001

Rendido
09.10.2012, 20:51
А мне надо значение функции - ординату. На глаз грубо и так видно, но мне надо точно до 0.001
Добавьте к графику линию тренда. Выберите по величине R^2(?) тип, наиболее точно соответствующий графику (линейный, степенной, экспоненциальный) и в уравнение этого тренда подставляйте значение абсциссы.

gav
10.10.2012, 18:50
Обязательно читать про аппроксимацию и интерполяцию :)

Andriy
10.10.2012, 21:12
нельзя по двум точкам построить функцию:)
это может быть линия или парабола, причем вторая как вниз, так и вверх основанием.. очень смешные результаты получатся.

Rendido
10.10.2012, 21:40
нельзя по двум точкам построить функцию
это может быть линия или парабола, причем вторая как вниз, так и вверх основанием.

Я построил график в Ексель по экспериментальным данным

Хороши экспериментальные данные из двух измерений. :)

Lexander
11.10.2012, 10:35
нельзя по двум точкам построить функцию:)
Хороши экспериментальные данные из двух измерений. :)
С чего выдумал, что у меня два измерения? У меня их сотни, не меньше тысячи. Если вы про это Я построил график в Ексель по экспериментальным данным, например - в момент времени 1 величина принимает значение y1, а в момент времени 2 величина принимает значение y2 (y1 и y2 получены экспериментально). так это было приведено в качестве примера, не буду же я писать y1, y2, y3, ....., y99, ..., y967 ... Улыбайся.

Hogfather
11.10.2012, 11:10
Lexander, гляньте сюда (http://habrahabr.ru/post/130873/), может это приблизит Вас к Дао.

Rendido
11.10.2012, 11:19
С чего выдумал, что у меня два измерения?
Читайте внимательнее.

Не я написал, что
нельзя по двум точкам построить функцию

И прокомментировал я, как несложно догадаться, ответ Andriy,

Lexander
11.10.2012, 12:06
Rendido, прокомментировали Вы именно мой пост, якобы у меня всего два измерения. Прочитайте внимательно свой же пост #7. Вы писали "Хороши экспериментальные данные из двух измерений". Это было про меня, не оправдывайтесь.

А сейчас Вы ответите в эту тему ещё много сообщений, "я этого не писал", "это не сложно догадаться", "меня не так поняли", "читайте внимательно, это не я писал", "Lexander иди учи Ексель" и так далее, и тому подобное, и прочее, и тема перерастёт во флуд и оскорбления. До свидания.

Rendido
11.10.2012, 15:47
Хороши экспериментальные данные из двух измерений
Это было про меня
у меня всего два измерения

Well, OK:
Lexander иди учи Ексель
читайте внимательно
До свидания

gav
11.10.2012, 18:18
Lexander, все-таки, настаиваю на том, что Вам нужно осилить, хотя бы, интерполяцию, а лучше аппроксимацию. Так как вопрос у Вас из серии: "как, имея три рубля, получить шесть?"
Вкраце: узнать значения функции в промежуточных точках по таблично заданной функции НЕЛЬЗЯ. Можно узнать значения ДРУГИХ функций, которые будут проходить через заданные точки (интерполяция) или проходить очень близко к заданным точкам (аппроксимация - на практике предпочтительней).
То есть Вы заменяете неизвестную Вам функцию (о которой известно лишь конкретные ее точки - результаты эксперимента) на другую функцию, и уже берете значения этой другой функции в промежуточных точках. Через заданные точки (сколько бы их ни было) можно провести сколько угодно функций. Именно поэтому Ваш вопрос изначально некорректен. Ексель воспользуется одним методом интерполяции, матлаб другим - значение функции в промежуточных точках будет разным.
Более того, лучше воспользоваться не интерполяцией (когда нужно построить функцию, строго проходяющую через заданные точки), а аппроксимацией. Так как если исходные точки получены экспериментально, то в них обязательно будет погрешность, поэтому проходить строго через них не нужно - это лишь увеличит общую разницу между полученной функцией и неизвестной реальной.

Вляпалась...
11.10.2012, 18:55
Lexander, все-таки, настаиваю на том, что Вам нужно осилить, хотя бы, интерполяцию, а лучше аппроксимацию. Так как вопрос у Вас из серии: "как, имея три рубля, получить шесть?"
Вкраце: узнать значения функции в промежуточных точках по таблично заданной функции НЕЛЬЗЯ. Можно узнать значения ДРУГИХ функций, которые будут проходить через заданные точки (интерполяция) или проходить очень близко к заданным точкам (аппроксимация - на практике предпочтительней).
То есть Вы заменяете неизвестную Вам функцию (о которой известно лишь конкретные ее точки - результаты эксперимента) на другую функцию, и уже берете значения этой другой функции в промежуточных точках. Через заданные точки (сколько бы их ни было) можно провести сколько угодно функций. Именно поэтому Ваш вопрос изначально некорректен. Ексель воспользуется одним методом интерполяции, матлаб другим - значение функции в промежуточных точках будет разным.
Более того, лучше воспользоваться не интерполяцией (когда нужно построить функцию, строго проходяющую через заданные точки), а аппроксимацией. Так как если исходные точки получены экспериментально, то в них обязательно будет погрешность, поэтому проходить строго через них не нужно - это лишь увеличит общую разницу между полученной функцией и неизвестной реальной.

Ему всего-навсего нужно знать закон, по которому ексель (ред. авт. сохр.) строит график. И все.

Hogfather
11.10.2012, 19:12
Вот тут, на форуме любителей excel, (http://www.planetaexcel.ru/forum.php?thread_id=18953) разбирается похожая задача.

gav
11.10.2012, 19:58
Вляпалась..., отнюдь. Если автор что то строит по экспериментальным данным, то считать то, что ему выдал "эксель", за искому зависимость, мягко говоря, наивно.
Это во-первых.
Во-вторых, эксель строит график путем соединения соседних точек. Никаких функций при этом не строится (интерполяции и аппроксимации не происходит).
Чтобы найти значения в промежуточных точках надо как раз провести интерполяцию или аппроксимацию.

Uzanka
11.10.2012, 21:36
gav, конечно, прав.

Hogfather
11.10.2012, 21:44
gav, (добродушно) ну, не совсем так. Посмотрите выше я приводил ссылку на библиотеку на php. Если excel соединяет точки, причем, ЧСХ, гладко, значит в нем какая-то математика для этого зашита. А вот как он сие делает (методика), мне не ведомо, ибо гугль не признается

Вляпалась...
11.10.2012, 22:06
Во-вторых, эксель строит график путем соединения соседних точек. Никаких функций при этом не строится (интерполяции и аппроксимации не происходит).
Чтобы найти значения в промежуточных точках надо как раз провести интерполяцию или аппроксимацию.

1. Автор хочет знать Y в промежуточной точке ГРАФИКА - читаем исходный пост.

2. Последняя фраза, особенно "или" - впечатлила. Мда.

Uzanka
11.10.2012, 22:16
1. Автор хочет знать Y в промежуточной точке ГРАФИКА - читаем исходный пост.
При построении графика Эксель тупо соединяет каждые две соседние точки прямой. Соответственно, берем точку. Смотрим какому отрезку принадлежит, эти две соседние точки соединены прямой. Строим по ним прямую. На ней будет лежать точка, которую ищет автор. Но поступать так - аморально для студентов, а уж тем более для аспирантов. Надо делать по-человечки, т.е. через интерполяцию или аппроксимацию по нашим данным.

Вляпалась...
11.10.2012, 22:51
При построении графика Эксель тупо соединяет каждые две соседние точки прямой.

Ой. Значит, мне показалось, что при выборе нестандартных типов диаграмм есть "гладкие графики". А там как тупо? Сплайнами? Кубическими?

gav
12.10.2012, 00:10
Вляпалась..., да какими сплайнами? Просто прямую строит по двум точкам, да и то, чтобы только соединить эти точки (подозреваю, что только в процессе вывода на экран "графика"). Нигде она (прямая) в "аналитическом" виде в системе "не оседает". Так что узнать там значения не представляется возможным, если искусственно эту прямую не организовать. Но смысла в этом нет никакого - лучше нормальную интерполяцию или аппроксимацию.

Добавлено через 6 минут
Hogfather, Посмотрите выше я приводил ссылку на библиотеку на php. Если excel соединяет точки, причем, ЧСХ, гладко, значит в нем какая-то математика для этого зашита
Где в ссылке про php говорится, что Excel плавно точки соединяет?

Hogfather
12.10.2012, 00:28
gav, Ви таки пойдите на привоз, купите селедку и морочьте ей голову. Ну не знаете Excel, так и скажите

Где в ссылке про php говорится, что Excel плавно точки соединяет?
Нигде. Там рассказывается на пальцах, как соединяют точки.
А плавно Excel соединяет точки по определению. Вот пример, график одного и того же (два способа построения графика).

http://aspirantura.spb.ru/forum/picture.php?albumid=36&pictureid=946

Uzanka
12.10.2012, 01:55
Ребята, у графических тулбоксов цель - строить графики. Красивые, симпатишные, с прибамбасами и т.п. Но мне кажется несколько самонадеянным считать, что графические тулбоксы снабжены еще сложными математическими методами, которые прежде, чем построить график решают еще поставленные математические задачи (причем, мы конкретную математическую задачу им и не ставили, вообще говоря). Поэтому графические тулбоксы отдельно, математические методы обработки данных отдельно. Это мое мнение.

Сплайнами? Кубическими?

Если будете интерполировать, то да, лучше кубическим сплайнами. Там в Екселе должна быть функция (наверное), которая автоматически всё сделает и заодно выдаст информацию в интересующих вас промежуточных точках.

Добавлено через 2 минуты
А плавно Excel соединяет точки по определению.
То есть я так понимаю, что Ексель делает интерполяцию перед построением графика? Возможно я чего-то не понимаю...

gav
12.10.2012, 02:04
Hogfather, так там поди второй график как сплайн выбран?

Добавлено через 1 минуту
Uzanka, да, есть там в типе графиков "плавная кривая". Но опять же что за метод ее построения - загадка...
В любом случае, это просчитывается на этапе вывода графика на экран. И нигде в OLE не фигурирует..

Uzanka
12.10.2012, 02:28
gav, вот и я о том. Конкретная математическая задача нами не была еще поставлена, а Ексель уже за нас всё решил ))

Вляпалась...,
Hogfather,
Ребята, я посмотрела сейчас, построила графики в Ексель. Должна признать, что не права. При выборе опции "Гладкая" там однозначно работает какой-то алгоритм. Вопрос только какой метод стоит там по умолчанию...

Hogfather
12.10.2012, 08:46
Хозяйке на заметку. Неплохая статья по теме. Trendline Coefficients and Regression Analysis (http://www.tushar-mehta.com/publish_train/data_analysis/16.htm)

gav
12.10.2012, 15:23
Uzanka, понятно, что какой то алгоритм в конечном счете используется для вывода графика :)
Вопрос в том, что он не предназначен для трассировки точек графика и для нахождения прмежуточных значений. Его роль - исключительно визуализация.
Если кому то надо получить значения в промежуточных точках, то он должен нормальную интерполяцию и аппроксимацию делать соответствующими функциями, кои есть в наличии. Ссылки Hogfather это явно подтверждают.

Hogfather
12.10.2012, 16:12
gav, (добродушно) Это мы еще не затронули обоснование степени полинома при аппроксимации. В Excel эта задача решается, но нужно знать, в какой бубен бить.

saovu
12.10.2012, 17:00
Чё делается ...
Да, пионэрам надо бы хоть чуть-чуть знать матчасть. "Апроксимация" посредством экселя - дикое убожество, конечно. Особенно, если не понимать как этот магический продукт работает. И не знать основ математики.

(добродушно) Это мы еще не затронули обоснование степени полинома при аппроксимации
Не будем даже упоминать о том, что вообще говоря, сходимость, например, метода наименьших квадратов строго доказана только для одного класса функций - полиномов Чебышева ...



И нигде в OLE не фигурирует..
Причем тут OLE-то ?

Rendido
12.10.2012, 18:15
Добавьте к графику линию тренда. Выберите по величине R^2(?) тип, наиболее точно соответствующий графику (линейный, степенной, экспоненциальный) и в уравнение этого тренда подставляйте значение абсциссы.
Графически это выглядит как
http://rghost.ru/40891857/image.png
дикое убожество, конечно
:D

График 1 - исходная функция (уравнение которой написано под графиком)

График 2 - сглаженная функция.

График 3 - аппроксимация средствами Excel, (судя по величине R^2 - убогая :) ).

gav
13.10.2012, 14:27
saovu
Причем тут OLE-то ?
При том, что выцепить из Excel искомые автором точки проблематично :)

saovu
13.10.2012, 17:49
При том, что выцепить из Excel искомые автором точки проблематично
Ну уж если у кого-то возникли "проблемы" с пониманием интерполяции и аппроксимации, то OLE для него вообще штука неподъемная.
Я уж не говорю о том, что API OLE-объектов мс-офиса практически не документирован.

Димитриадис
25.12.2012, 21:24
В Эксель имеется таблица вида:

Фактор 1 - 2
Фактор 2 - 3
Фактор 3 - 67
.....
Фактор 25 - 32


Не могу сообразить: как отсортировать чтобы стало так:

Фактор 25 - 32
Фактор ...
Фактор 3 - 67
Фактор 2 - 3
Фактор 1 - 2

Hogfather
25.12.2012, 22:28
Димитриадис, замените фактор 1 на фактор 01 и отсортируйте по фактору от я до а.

Димитриадис
26.12.2012, 17:46
Hogfather, спасибо.

Снова вопрос. Дано следующее:

1). В таблице Excel перечислены различные факторы, которые по-разному влияют на продуктивность кроликов.
2). Предстоит оценить силу влияния каждого фактора (см. фиолетовую строку).
3). Вариантов ответа - пять:
- не влияет - столбец под цифрой "1"
- слабо влияет - под цифрой 2
- умеренно влияет - под цифрой 3
- сильно влияет - под цифрой 4
- очень сильно влияет - под цифрой 5.
См. фиолетовую строку.
4). Ответы каждого респондента забивались в горизонтальные строки.
5). Ответы кодировались по двоичному принципу: если мы считаем, что данный фактор не влияет (см. респонденты №1, №2 и №3), то в колонку 1 забиваем "1", а в остальные колонку - нули. А вот респондент №4 посчитал, что первый фактор "сильно влияет", поэтому ставим единицу в колонку 4, а в колонки 1,2,3 и 5 забиваем нули.


Вопрос:

Как сделать так, чтобы:

Если единица стоит в первой колонке ("фактор не влияет"), то в желтом вертикальном столбце отобразился 0 ?
Если единица стоит во второй колонке ("фактор слабо влияет"), то в желтом вертикальном столбце отобразилась цифра 4 ?
Если единица стоит в третьей колонке ("фактор умеренно влияет"), то в желтом вертикальном столбце доотобразилась цифра 6 ?
Если единица стоит в четвертой колонке ("фактор сильно влияет"), то в желтом вертикальном столбце доотобразилась цифра 8 ?
Если единица стоит в пятой колонке ("фактор чрезвычайно сильно влияет"), то в желтом вертикальном столбце дотобразилась цифра 10 ?

Эти цифры (0,4,6,8 и 10), которые должны появиться в желтом вертикальном столбце, представляют силу влияния данного фактора по условной десятибалльной шкале. Ну а дальше все просто - лепестковая диаграмма и полная красота.

Скриншот:
http://s017.radikal.ru/i408/1212/97/b1ec764898a8.jpg

Jacky
26.12.2012, 17:53
Димитриадис, картинка мягко говоря не очень соответствует описанию из #34. :)
Надо блоки местами поменять что ли, то есть "фактор 1" это колонки с AP до AU и так далее?
Если это будет один раз делаться, проще выделить по очереди каждый нужный блок и перетащить мышкой на нужное место.

Неактуально. Предыдущий пост был изменён после того, как я написал этот.

Димитриадис
26.12.2012, 18:03
Jacky, извините, то был вчерашний вопрос, там все просто, Дядюшка подсказал.
А картинка относится к сегодняшнему вопросу. :o

Я думаю, что это должно делаться через "Логические функции" Excel-я, в частности "Если" или "Если, То"
но что-то у меня не получается...

Jacky
26.12.2012, 19:00
Димитриадис, я для примера взял первый блок с вашей картинки, результат смотрите в аттаче.
Если нигде не ошибся, ;) возможный вариант формулы может выглядеть примерно так:
=ПРОСМОТР(ПОИСКПОЗ(1;A1:E1;0);{1;2 ;3;4;5};{0;4;6;8;10})

Димитриадис
26.12.2012, 19:37
Jacky, спасибо, работает :)

Daiynlo
09.10.2014, 19:40
Доброго времени суток. Тема тут очень близка к тому, что мне нужно, хоть я и не аспирант. Надеюсь мне ответят, не смотря на срок давности данной темы.

Описание: У меня есть 6 значений на оси абсцисс и 6 соответствующих значений на оси ординат. Я беру миллиметровку, карандаш и линейку и строю график, тупо соединяя точки. Затем у меня появляется известное значение на одной из осей( не важно на какой) и мне нужно найти соответствующее значение на другой оси. Я определяю это по бумаге линейкой.
Вопрос: Есть ли программа, которая упростит мою жизнь, избавя от ежедневного черчения на миллиметровке? Чтобы она просто выдавала значения, допустим абсциссы при известном значении ординаты на куске графика, который является прямой. Или формула в екселе или что угодно другое, лишь бы не чертить...а то глаза выпадут скоро...

P.S.высокоинтеллектуальные методы статистической и прочей обработки не предлагать, ибо линейка и карандаш справляются, значит не так все сложно....

4gost
09.10.2014, 19:41
Описание: У меня есть 6 значений на оси абсцисс и 6 соответствующих значений на оси ординат. Я беру миллиметровку, карандаш и линейку и строю график, тупо соединяя точки. Затем у меня появляется известное значение на одной из осей( не важно на какой) и мне нужно найти соответствующее значение на другой оси. Я определяю это по бумаге линейкой.
Есть ли программа, которая упростит мою жизнь, избавя от ежедневного черчения на миллиметровке? Чтобы она просто выдавала значения, допустим абсциссы при известном значении ординаты на куске графика, который является прямой. Или формула в екселе или что угодно другое, лишь бы не чертить...а то глаза выпадут скоро...
Сделать все то же самое, но в Экселе. Включив отображение основных и промежуточных линий сетки, получите ту же "миллиметровку", но в электронном виде

Hogfather
09.10.2014, 19:55
Описание: У меня есть 6 значений на оси абсцисс и 6 соответствующих значений на оси ординат. Я беру миллиметровку, карандаш и линейку и строю график, тупо соединяя точки. Затем у меня появляется известное значение на одной из осей( не важно на какой) и мне нужно найти соответствующее значение на другой оси. Я определяю это по бумаге линейкой.
Вопрос: Есть ли программа, которая упростит мою жизнь, избавя от ежедневного черчения на миллиметровке? Чтобы она просто выдавала значения, допустим абсциссы при известном значении ординаты на куске графика, который является прямой. Или формула в екселе или что угодно другое, лишь бы не чертить...а то глаза выпадут скоро...

Ну, кусочно-линейная функция, в вашем случае n=4

https://upload.wikimedia.org/math/0/5/3/053bf273585e26c1b5df1e116b4325ed.png

Дальше вычисления примерно на уровне математики начальной школы (см. задачу 2) (http://ege-ok.ru/2012/04/03/lineynaya-funktsiya-i-ee-grafik/)

Делаете таблицу в Excel


X Y K B
1 10 =C3 =D3
2 20 =(B3-B2)/(A3-A2) =B3-C3*A3
3 -9 =(B4-B3)/(A4-A3) =B4-C4*A4
4 10 =(B5-B4)/(A5-A4) =B5-C5*A5
5 11 =(B6-B5)/(A6-A5) =B6-C6*A6
6 11 =(B7-B6)/(A7-A6) =B7-C7*A7


Дальше считаете по коэффициентам:
=1,1*ВПР(1,1;A2: D7;3)+ВПР(1,1;A2: D7;4)

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

Добавлено через 2 минуты
Сделать все то же самое, но в Экселе. Включив отображение основных и промежуточных линий сетки, получите ту же "миллиметровку", но в электронном виде
:facepalm:

Daiynlo
09.10.2014, 20:03
хм, а если использовать функцю ТЕНДЕНЦИЯ в ексель? Я попробовал щас, вроде что-то похожее выдает... завтра на работе сравню с графическими значениями...

Hogfather
09.10.2014, 20:20
хм, а если использовать функцю ТЕНДЕНЦИЯ в ексель?
Так даже проще. Только результаты будет другими.

Возвращает значения в соответствии с линейным трендом. Функция ТЕНДЕНЦИЯ аппроксимирует прямой линией (по методу наименьших квадратов) массивы известные_значения_y и известные_значения_x. Возвращает значения y, соответствующие этой прямой, для заданного массива новые_значения_x.

Иными словами, вместо соединений точков отрезками, что делаете вы, используется КМНК с одной прямой линией.

Daiynlo
09.10.2014, 21:41
Для тех, кто будет искать ответ на похожий вопрос.
Я решил свой так: т. к. у меня 6 точек, то получается график из 5 прямых (от точки к точке) В екселе я воспользовался функцией ТЕНДЕНЦИЯ для каждого из этих графиков отдельно т.е. сделал табличку в которой есть 5 ячеек с функцией ТЕНДЕНЦИЯ ( ну и все данные для этой функции конечно). Потом, когда у меня появятся, например, известное значение на оси Х, я просто смотрю в какой из диапазонов (т е в каую прямую) попадает это значение и изменяю данные для соответствующей ячейки с ТЕНДЕНЦИЯ. И, поскольку кусок графика (прямая по двум точкам) на этом отрезке полностью совпадает с созначениями ТЕНДЕНЦИЯ то и результат получается точный.... надеюсь вы меня поняли, потому что я сам себя уже с трудом..спать хочу очень... Спасибо всем за ответы.

Dr.X
10.10.2014, 09:10
Признаться, изрядно шокирован этой темой. Интересно, ТС - диссер пишет? :cool:

sum
10.10.2014, 16:15
Не шокируйтесь, тут даже кодить не пришлось)))

Степан Капуста
10.10.2014, 18:48
Hogfather, может, все-таки полином брать, а не линейными кусками?

Hogfather
10.10.2014, 18:52
может, все-таки полином брать, а не линейными кусками?
Еще скажите пятой степени, чтобы гаратировано провести через шесть точек...

Когда нас просят хлеб, мы жареных курей не даём.

Степан Капуста
10.10.2014, 19:23
Еще скажите пятой степени, чтобы гаратировано провести через шесть точек...

Это и ежу понятно. ;-) Не зря дядюшка Карл бумагу марал...

4gost
10.10.2014, 23:18
может, все-таки полином брать, а не линейными кусками?
смотря как точки расположены - если линейная аппроксимация хорошо подходит, то зачем нужны полиномы?

Степан Капуста
11.10.2014, 10:09
4gost, линейная функция — это тоже полином. ;-)


Рейтинг@Mail.ru