Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
2 / 2 / 0
Регистрация: 23.02.2018
Сообщений: 74

Табулирование значений функции

25.03.2018, 10:12. Показов 2236. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Составить программу вычисления значений функции F(x) на отрезке [а; b] с шагом h. Результат представить в виде таблицы, первый столбец которой — значения аргумента, второй — соответствующие значения функции:

https://www.cyberforum.ru/cgi-bin/latex.cgi?F(x) = {sin}^{2}x-cos2x
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.03.2018, 10:12
Ответы с готовыми решениями:

Построить таблицу значений для функции. Табулирование функции
Построить таблицу значений для функции f(x)=cos(x) на отрезке с числом разбиений отрезка m=20 Добавлено через 3 минуты На C++

Построить таблицу значений для функции. Табулирование функции
Помогите, пожалуйста, уже ничего не соображаю Построить таблицу значений для функции f (x) = ctg(x) на отрезке с числом разбиений...

Табулирование значений функции
Всем привет! Нужна ваша помощь) Вычислите значение ф-ии y=x^3-x^2+16x-43 для x изменяющегося в диапазоне от -4 до 4 включительно с шагом...

20
1847 / 1162 / 354
Регистрация: 11.07.2014
Сообщений: 4,107
25.03.2018, 13:16
Prosto_maloyy, и с такой звездюлькой вы обращаетесь на форум!!!
В хэлпе ВБА наберите sin потом cos и узнаете всё по этим функциям. Возведение в степень - это "крышечка (^)" на верхнем регистре клавиатуры над цифрой 6. Минус он и в Африке минус. Попробуйте сами, а вдруг получится
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
25.03.2018, 20:28
Можно и без синуса, и без степени, ибо
sin2x-cos2x = (1-cos2x)/2-cos2x = 0,5-1,5cos2x
0
1847 / 1162 / 354
Регистрация: 11.07.2014
Сообщений: 4,107
26.03.2018, 11:52
Казанский, вы уверены, что человек, с такими выставляемыми задачами, поймет ваши глубокие тригонометрические познания?
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
27.03.2018, 10:48
на отрезке [а; b] с шагом h.
Это, братец, надо смотреть циклы!
Типа
Visual Basic
1
2
3
for x=a to b step h
''''тут твоя функция
next x
0
6082 / 1327 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
28.03.2018, 20:11
Я попробовал протабулировать тригонометрические функции на произвольных отрезках - и это оказалось совсем не просто.
Вот лишь некоторые из результатов работы программы:

xФ-ияf(x)
0.0Sin0.0
0.0Cos1.0
0.1Sin0.09983341664682815230681419841062202698991538801798
0.1Cos0.99500416527802576609556198780387029483857622541508
0.2Sin0.19866933079506121545941262711838975037020672954021
0.2Cos0.98006657784124163112419651674816887739352436080657
0.3Sin0.29552020666133957510532074568502737367783211174262
0.3Cos0.95533648912560601964231022756804989824421408263204
0.4Sin0.38941834230865049166631175679570526459306018344396
0.4Cos0.92106099400288508279852673205180161402585956931985
0.5Sin0.47942553860420300027328793521557138808180336794060
0.5Cos0.87758256189037271611628158260382965199164519710974
0.6Sin0.56464247339503535720094544565865790710988808499415
0.6Cos0.82533561490967829724095249895537603887809103918847
0.7Sin0.64421768723769105367261435139872018306581384457369
0.7Cos0.76484218728448842625585999019186490926821055037370
0.8Sin0.71735609089952276162717461058138536619278523779142
0.8Cos0.69670670934716542092074998164232492610178601370806
0.9Sin0.78332690962748338846138231571354862314014792572031
0.9Cos0.62160996827066445648471615140713350872176136659124
1.0Sin0.84147098480789650665250232163029899962256306079837
1.0Cos0.54030230586813971740093660744297660373231042061792

xФ-ияf(x)
0.000000000000000000000000Sin0.0
0.000000000000000000000000Cos1.0
0.000000000000000000000001Sin0.000000000000000000000000999
0.000000000000000000000001Cos0.999999999999999999999999999
0.000000000000000000000002Sin0.000000000000000000000001999
0.000000000000000000000002Cos0.999999999999999999999999999
0.000000000000000000000003Sin0.000000000000000000000002999
0.000000000000000000000003Cos0.999999999999999999999999999
0.000000000000000000000004Sin0.000000000000000000000003998
0.000000000000000000000004Cos0.999999999999999999999999999
0.000000000000000000000005Sin0.000000000000000000000004998
0.000000000000000000000005Cos0.999999999999999999999999999
0.000000000000000000000006Sin0.000000000000000000000005997
0.000000000000000000000006Cos0.999999999999999999999999999
0.000000000000000000000007Sin0.000000000000000000000006997
0.000000000000000000000007Cos0.999999999999999999999999999
0.000000000000000000000008Sin0.000000000000000000000007996
0.000000000000000000000008Cos0.999999999999999999999999999
0.000000000000000000000009Sin0.000000000000000000000008996
0.000000000000000000000009Cos0.999999999999999999999999999
0.000000000000000000000010Sin0.000000000000000000000009995
0.000000000000000000000010Cos0.999999999999999999999999999

Так что, несмотря на сомнения уважаемого Burk, топикстартер задал нам действительно достойную задачу.
1
 Аватар для bedvit
1210 / 261 / 22
Регистрация: 20.05.2016
Сообщений: 1,140
Записей в блоге: 22
29.03.2018, 00:01
Аксима, так в чем сложность задачи? посчитать бесконечную десятичную дробь?
0
1847 / 1162 / 354
Регистрация: 11.07.2014
Сообщений: 4,107
29.03.2018, 06:58
Аксима,
Цитата Сообщение от Аксима Посмотреть сообщение
Я попробовал протабулировать тригонометрические функции на произвольных отрезках - и это оказалось совсем не просто.
Вот лишь некоторые из результатов работы программы:
Вот у всех никаких проблем с функциями, только у начинающих считает неправильно! Вы хотя бы о таких вещах думайте.
Я не зря вам советовал прочитать внимательно про тригонометрические функции. Там аргумент в радианах. Поэтому, чтобы вам было понятнее сделайте цикл по градусам угла ( напр. от 0 до 90 градусов), а функцию запишите так
Visual Basic
1
2
3
Pi=3.1415926536
 
S=Sin(X*PI/180)   ' X- ваш аргумент функции в градусах
Добавлено через 19 минут
ну и, естественно, ваша таблица посчитана правильно, только ваше Х не то, что в задумывали.
0
29.03.2018, 07:51

Не по теме:

Цитата Сообщение от Burk Посмотреть сообщение
Я не зря вам советовал прочитать внимательно про тригонометрические функции.
Я думаю, что Аксиме это ни к чему :jokingly:

0
6082 / 1327 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
29.03.2018, 09:13
Цитата Сообщение от bedvit Посмотреть сообщение
так в чем сложность задачи? посчитать бесконечную десятичную дробь?
Да, именно в этом.

Пусть не бесконечную, но в пределах, который позволяет объем памяти компьютера.
Обратите внимание - для значений функции от 0 до 1 с шагом 0.1 моя программа считает мгновенно и с точностью до 50 знаков.
Для значений функции от 0 до 0.00000000000000000000001 с шагом 0.000000000000000000000001 программа считает порядка минуты и с вдвое меньшей точностью.

Если топикстартеру вздумается задать промежуток еще меньше, то не факт, что моя программа справится.

Нужны ваши рекомендации по повышению эффективности алгоритма. На данный момент моя программа - это вычисление ряда Тейлора-Маклорена в длинных целых числах, а также применение формул
https://www.cyberforum.ru/cgi-bin/latex.cgi?\begin{matrix}2\sin a\cos a=\sin 2a\\ {\cos}^{2}a-{\sin}^{2}a=\cos 2a\end{matrix}
для расчета значений аргумента с большим количеством десятичных цифр.

Кстати, расчет функции, заданной топикстартером, на промежутке [a,b] с шагом h - сводится к расчету cos(x) на промежутке [2a,2b] с шагом 2h (что убедительно доказал Казанский).
1
 Аватар для bedvit
1210 / 261 / 22
Регистрация: 20.05.2016
Сообщений: 1,140
Записей в блоге: 22
29.03.2018, 11:15
К сожалению тригонометрических функций нет в данном продукте (может добавлю в следующей версии, тогда для вас это была бы элементарная задача перемножить с нужной точностью переменные). Но базовая арифметика с любой точность в ваших руках На всякий случай вычисления числа Пи с любой точностью, лежит в третьем упаковщике.

Добавлено через 9 минут
Думаю и число Пи можно добавить в пакет арифметики в след.версии.
1
6082 / 1327 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
29.03.2018, 13:17
Здравствуйте, bedvit,
У меня есть своя собственная библиотека длинных чисел, для которой я как раз сейчас и пишу функции синуса и косинуса. Если бы вы уже реализовали эти функции, то я был бы рад проконсультироваться с вами, вместо того, чтобы изобретать свой велосипед.
А так я лучше поработаю над отмеченными недостатками моей реализации самостоятельно. Но за поддержку и за интерес к теме все равно спасибо вам.

С уважением,
Аксима
0
 Аватар для bedvit
1210 / 261 / 22
Регистрация: 20.05.2016
Сообщений: 1,140
Записей в блоге: 22
29.03.2018, 14:58
Аксима, ранее то же этой темой увлекался. На VBA реализовывал парсинг из строки в длинное число и наоборот, простейшие арифметические операции, выбирал базу для длинного числа, тестировал скорости, лучшие решения и т.д. Могу скинуть нароботки или линки на темы. Вообщем для опыта полезно, потом к пришёл к одной мысли (чуть позже отпишу). А вы на каком языке пишите библу свою?
0
6082 / 1327 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
29.03.2018, 15:40
Библиотеку пишу на VBA, естественно.
Кроме VBA, я знаю только VB .NET и C# .NET, но там нет необходимости в библиотеке длинных чисел (там есть встроенная библиотека System.Numerics с классом BigInteger).
0
141 / 119 / 29
Регистрация: 12.02.2017
Сообщений: 308
29.03.2018, 15:57
§¦§г§Э§Ъ §д§в§Ц§Т§е§Ц§д§г§с §е§б§в§а§г§д§Ъ§д§о §С§Э§Ф§а§в§Ъ§д§Ю §У§н§й§Ъ§г§Э§Ц§Я§Ъ§Ы, §д§а §с §д§е§д §Я§Ц§Ю§Я§а§Ф§а §б§а§Ь§а§У§н§в§с§Э§г§с §У §д§Ц§а§в§Ъ§Ъ.
§І§С§г§б§Ъ§г§н§У§С§д§о §д§Ц§а§в§Ъ§р §Щ§Х§Ц§г§о §Я§Ц §Т§е§Х§е, §Ь§в§С§д§Ь§а - §Ц§г§Э§Ъ §к§С§Ф §б§в§Ъ§в§С§л§Ц§Я§Ъ§с §С§в§Ф§е§Ю§Ц§Я§д§С (§д.§Ц. x) §а§й§Ц§Я§о §Ю§С§Э, §д§а cos2(x h) §б§в§Ъ§Т§Э§Ъ§Щ§Ъ§д§Ц§Э§о§Я§а §в§С§У§Ц§Я (cos2x - 2hЎБsin2x), §Ъ §й§Ц§Ю §Ю§Ц§Я§о§к§Ц h (§к§С§Ф §б§в§Ъ§в§С§л§Ц§Я§Ъ§с) §д§Ц§Ю §д§а§й§Я§Ц§Ц §Х§С§Я§Я§а§Ц §У§н§в§С§Ш§Ц§Я§Ъ§Ц (§б§а§Ф§в§Ц§к§Я§а§г§д§о §Т§е§Х§Ц§д §г§д§в§Ц§Ю§Ъ§д§о§г§с §Ь §Я§е§Э§р).
§¦§г§Э§Ъ x §Т§е§Х§Ц§д §в§С§У§Ц§Я §Я§е§Э§р, §Ъ§Э§Ъ §а§й§Ц§Я§о §Я§Ц§Щ§Я§С§й§Ъ§д§Ц§Э§о§Я§а §а§д§Э§Ъ§й§С§д§о§г§с §а§д §Я§Ц§Ф§а, §д§а §ж§а§в§Ю§е§Э§С §е§б§в§а§г§д§Ъ§д§г§с: 1 - 2hЎБ2x.
§Ї§С§Х§Ц§р§г§о §Ю§а§Ы §а§д§У§Ц§д §б§в§Ъ§Ф§а§Х§Ъ§д§г§с.
§±.§і. §Ґ§Э§с §Ъ§Я§д§Ц§в§Ц§г§е§р§л§Ъ§з§г§с, §Ъ§г§б§а§Э§о§Щ§а§У§С§Я§С §Ъ§Щ§У§Ц§г§д§Я§С§с §д§Ц§а§в§Ц§Ю§С §а §б§в§Ц§Х§Ц§Э§С§з, §Ф§Х§Ц §б§в§Ц§Х§Ц§Э §а§д§Я§а§к§Ц§Я§Ъ§с: (sin x)/x §в§С§У§Ц§Я 1 §б§в§Ъ x §г§д§в§Ц§Ю§с§л§Ц§Ю§г§с §Ь §Я§е§Э§р.

Добавлено через 2 минуты
Если требуется упростить алгоритм вычислений, то я тут немного поковырялся в теории.
Расписывать теорию здесь не буду, кратко - если шаг приращения аргумента (т.е. x) очень мал, то cos2(x+h) приблизительно равен (cos2x - 2h×sin2x), и чем меньше h (шаг приращения) тем точнее данное выражение (погрешность будет стремиться к нулю).
Если x будет равен нулю, или очень незначительно отличаться от него, то формула упростится: 1 - 2h×2x.
Надеюсь мой ответ пригодится.
П.С. Для интересующихся, использована известная теорема о пределах, где предел отношения: (sin x)/x равен 1 при x стремящемся к нулю.
1
6082 / 1327 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
29.03.2018, 16:24
Homarty, хочу похвалить вас - алгоритм для табулирования тригонометрической функции просто отменный.

Если удастся эффективно вычислить cos(2x), где x равен половине координаты начала отрезка табулирования, то дальнейшая работа по табулированию абсолютно ясна.
Надеюсь, что топикстартер будет доволен (если прочитает тему, так как пока не вижу от него активности).
0
141 / 119 / 29
Регистрация: 12.02.2017
Сообщений: 308
29.03.2018, 17:00
§¦§л§Ч, §У §Х§а§б§а§Э§Я§Ц§Я§Ъ§Ц §Ь §г§У§а§Ц§Ю§е §б§в§Ц§Х§н§Х§е§л§Ц§Ю§е §б§а§г§д§е, §С§Я§С§Э§а§Ф§Ъ§й§Я§С§с §ж§а§в§Ю§е§Э§С §Х§Э§с §г§Ъ§Я§е§г§С (§б§в§Ъ §д§Ц§з §Ш§Ц §е§г§Э§а§У§Ъ§с§з): sin(2ЎБ(x h)) = sin(2x) 2hЎБcos(2x)

Добавлено через 23 секунды
Ещё, в дополнение к своему предыдущему посту, аналогичная формула для синуса (при тех же условиях): sin(2×(x+h)) = sin(2x) + 2h×cos(2x)
0
 Аватар для bedvit
1210 / 261 / 22
Регистрация: 20.05.2016
Сообщений: 1,140
Записей в блоге: 22
29.03.2018, 17:06
Аксима, вот одна из последних тем когда я писал на VBA по теме длинной арифметики (может пригодится). Вы как храните длинное число? Самым быстрым и эффективным способом получается массив LongLong (там же в исходниках). Потом я понял, что изобретаю велосипед (хотя и с пользой, в виде пощупать руками самому тему) и перешёл на другое качество и скорость (сначала на С#, потом на С++ и библиотеки MPIR - одни из быстрейших, быстрее System.Numerics с классом BigInteger на порядки, по тесту запись и чтение в байтовый массив в 500 раз быстрее). Эти библы сейчас и использую в своём проекте. Скорость можете сравнить, если будет желание.
0
141 / 119 / 29
Регистрация: 12.02.2017
Сообщений: 308
29.03.2018, 17:07
При околонулевых значениях x, формула упростится: sin(2(x+h))=2×(x+h)
0
6082 / 1327 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
29.03.2018, 21:19
Цитата Сообщение от bedvit Посмотреть сообщение
Вы как храните длинное число?
Как массив типа Currency.
Тип LongLong доступен только в 64-разрядной версии офиса.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.03.2018, 21:19
Помогаю со студенческими работами здесь

Табулирование значений функции
Помогите пожалуйста решить задачку на паскале Для каждого x, изменяющегося от a до b с шагом h, найти значения функции Y(x), суммы...

Табулирование значений функции
Вычислить значения функции: y=sin(x+i*pi/4)^2-ln(x+i) для i=6, 2<=x<=34, dx=1.8. Печать оформить в виде таблицы значений x и y.

Табулирование значений функции
Не могу понять как это делать!!!!Помогите пж Это все надо на с++

Табулирование.Получить таблицу значений функции
y=({x}^{2}-1)ln x+2 x\epsilon \Delta x=0,3

Табулирование значений функции и ее разложения в ряд
написать программу вывода на экран таблицы функции, которую оформить в виде процедуры. В качестве функции использовать по выбору Tg(x),...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru