|
0 / 0 / 0
Регистрация: 21.09.2011
Сообщений: 21
|
|
Word Построить график функции y(x), которую вводит пользователь18.01.2013, 17:54. Показов 11538. Ответов 24
Метки нет (Все метки)
Добрый день! Нужно написать программу, которая работает по принципу
1) пользователь вводит функцию y(x) 2) пользователь указывает пределы по x и по y, в рамках которых будет построен график 3) программа строит график функции Примечание: функция непрерывная! Скрипт нужно написать для VBA Word
0
|
|
| 18.01.2013, 17:54 | |
|
Ответы с готовыми решениями:
24
Построить график зависимости (точечный график)
Как построить график в VBA по данным, которые находятся в list box |
|
6082 / 1327 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
|
|||||||||||||||||||||||||||||||
| 19.01.2013, 18:26 | |||||||||||||||||||||||||||||||
Здравствуйте, k.00741.Интересная задача. Допустим, у нас есть форма frmPlotter, в которой есть три текстовых поля: tbFormula, tbA и tbB, а также кнопка cbOk. В поле tbFormula заносится строка, определяющая функцию y(x), а в поля tbA и tbB заносятся границы отрезка [a, b] устанавливающего пределы функции по координате x (пределы функции по координате y для простоты не рассматриваем, так как их можно свести к пределам по координате x). Кнопка cbOk запускает процесс построения графика функции. Сначала пользователь вызывает форму. Для этого можно написать процедуру вида:
1) Процедура табулирования функции, т.е. представления ее в виде таблицы:
.С уважением, Aksima
1
|
|||||||||||||||||||||||||||||||
|
0 / 0 / 0
Регистрация: 21.09.2011
Сообщений: 21
|
|
| 19.01.2013, 22:44 [ТС] | |
|
здравствуйте! спасибо большое за код! вы не могли бы представить это в виде готовой программы?
0
|
|
|
6082 / 1327 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
|
|
| 20.01.2013, 19:11 | |
|
k.00741, прилагаю файл Word с макросами, код которых был приведен выше, и формой, вызываемой по нажатию на кнопку (кнопка находится прямо на странице).
С уважением, Aksima
2
|
|
|
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
|
|
| 20.01.2013, 22:54 | |
|
Catstail, ты всех тиранишь этим exp(x)
![]() Программа должна уметь распознавать функции, записанные в TextBox
1
|
|
|
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
|
|
| 20.01.2013, 23:02 | |
|
Нужно. Но поскольку есть и способы обхода этой ошибки, указывай и их.
0
|
|
|
Супер-модератор
|
|
| 20.01.2013, 23:26 | |
|
Указываю. Текст формулы нужно разбить на лексемы, и при вычислении заменять значением аргумента только лексемы x. А для разбиения на лексемы нужно сканировать текст символ за символом и при встрече разделителя [( ) + - * / ,] сбрасывать накопленную строку в массив.
2
|
|
|
6082 / 1327 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
|
||||||||
| 21.01.2013, 11:26 | ||||||||
Сообщение было отмечено как решение
Решение
Catstail, спасибо вам большое за то, что помогаете искать ошибки в программе и тем самым принимаете участие в ее улучшении
. . Вместо этого решил в процедуре табуляции функции использовать вместо стандартной функции замены замену с помощью регулярного выражения:
С уважением, Aksima
1
|
||||||||
|
Супер-модератор
|
|
| 21.01.2013, 13:42 | |
|
Хорошее решение... Но, не обижайся, тоже ограниченное в возможностях. Если я захочу строить графики по формулам, содержащим произвольные именованные константы, то опять возникнет та же проблема... Если формулы содержат только числа, стандартные функции и переменную x, то решение хорошее.
0
|
|
|
6082 / 1327 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
|
||
| 22.01.2013, 13:02 | ||
. Зато теперь построитель графиков полностью поддерживает именованные константы, в том числе для определения границ a и b, и свободен от некоторых других выявленных мной недостатков:1) При формуле Y(x) = x, замена x на соответствующее значение на производилась. 2) Если часть области определения или вся область определения лежит в отрицательной плоскости, то при замене в выражениях типа Y(x) = -x появлялся двойной минус. Надеюсь, теперь продукт моего труда удовлетворит даже самого взыскательного пользователя . Выкладываю его в приложении.С уважением, Aksima
2
|
||
|
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
|
|||||||
| 22.01.2013, 15:09 | |||||||
![]() Однако, у меня он не заработал сразу. Причина - русский Офис и, соответственно, имя листа "Лист1" вместо "Sheet1". Следует избежать обращения к листу по имени:
2
|
|||||||
|
Супер-модератор
|
||||||
| 22.01.2013, 15:45 | ||||||
|
Любопытно сравнить объем кода с таковым из моей давней поделки:
0
|
||||||
|
6082 / 1327 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
|
||
| 22.01.2013, 16:04 | ||
|
Казанский, а ведь и правда, надо было подумать о возможных проблемах из-за различий в языковой версии.
Спасибо за подсказку .В приложении версия с исправлением данной ошибки. С уважением, Aksima
1
|
||
|
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
|
||||||
| 22.01.2013, 16:12 | ||||||
Сообщение было отмечено как решение
Решение
Aksima,
... и еще. Я решил проверить - как программа будет обращаться с формулой, в которой аргумент встречается несколько раз. x+sin(x)+cos(x) - сработало отлично, а вот x+x+x - нет. ![]() (Я не написал это сразу, чтобы Вы не кинулись тут же исправлять код )Хочу сказать, что коль скоро Вы используете метод Evaluate из Excel, разбирать формулы на части просто не нужно - Вы фактически приближаетесь к тому, чтобы продублировать Экселевский парсер выражений. Можно создать в книге Excel имя "x", присваивать ему значения и применять Evaluate к исходной формуле:
Есть, правда, один нюанс: в Excel нельзя создать имена "c" и "r". Это зарезервированные имена, которые ссылаются на столбец и строку активной ячейки. Попробуйте ввести r в поле адреса (левой поле строки формул).
3
|
||||||
|
6082 / 1327 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
|
|||
| 22.01.2013, 16:25 | |||
.Добавлено через 6 минут
0
|
|||
|
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
|
||||||
| 22.01.2013, 16:41 | ||||||
|
Можно еще углубиться в методы Excel
VBA + формулы... и даже цикл не нужен ![]()
2
|
||||||
|
6082 / 1327 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
|
||||||||||||||||
| 23.01.2013, 17:02 | ||||||||||||||||
|
Подведу некоторые итоги по данной теме:
2
|
||||||||||||||||
| 23.01.2013, 17:02 | |
|
Помогаю со студенческими работами здесь
20
Построить график функции Построить график функции SIN Построить график функции Построить график функции COS на объекте PICTURE построить график функции Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях.
Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её.
Последовательность действий:. . .
|
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|