Вычисление функции

Простейшие вопросы в области инженерной разработки
Ответить
Nikol
beginner
beginner
Сообщения: 42
Зарегистрирован: 02 ноя 2016, 16:40
Версия LabVIEW: 15
Контактная информация:

Вычисление функции

Сообщение Nikol »

Здравствуйте, подскажите пожалуйста как добиться получения графика тангенса который показывал бы значения в заданном интервале [0, pi/2) принадлежит (pi/2,pi]
Сама задача: Создать программу вычисляющую 100 значений функции y(x)=k∙tg⁡(f∙x)+b, где x принадлежит [0, pi/2) принадлежит (pi/2,pi]. При этом обеспечить максимально точное вычисление значение функции в окрестности точки x=pi/2. Увы, созданная мною программа не удовлетворяет заданным условиям :cry: Помогите разобраться пожааалуйстаа :help: :help: :help:
Вложения
Сам график должен быть вот таким
Сам график должен быть вот таким
моя попытка сделать что то похожее
моя попытка сделать что то похожее
пр.png (8.82 КБ) 7337 просмотров
Tan.vi
Сама недопрограмма
(11.6 КБ) 83 скачивания
Последний раз редактировалось Nikol 14 дек 2016, 15:56, всего редактировалось 1 раз.
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5463
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 28 раз
Поблагодарили: 87 раз

Re: Вычисление функции

Сообщение IvanLis »

Nikol писал(а):Увы, созданная мною программа не удовлетворяет заданным условиям :cry: Помогите разобраться пожааалуйстаа :help: :help: :help:
Программу выкладывайте.
Blackman

Activity
leader
leader
Сообщения: 932
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Версия LabVIEW: 6.1,8.5,20

Re: Вычисление функции

Сообщение Blackman »

Ошибка в первой константе. Не pi/2, а pi.
Nikol
beginner
beginner
Сообщения: 42
Зарегистрирован: 02 ноя 2016, 16:40
Версия LabVIEW: 15
Контактная информация:

Re: Вычисление функции

Сообщение Nikol »

IvanLis писал(а):
Nikol писал(а):Увы, созданная мною программа не удовлетворяет заданным условиям :cry: Помогите разобраться пожааалуйстаа :help: :help: :help:
Программу выкладывайте.
Прошу прощения, совсем забыл вот она
Вложения
Tan.vi
(11.6 КБ) 87 скачиваний
Nikol
beginner
beginner
Сообщения: 42
Зарегистрирован: 02 ноя 2016, 16:40
Версия LabVIEW: 15
Контактная информация:

Re: Вычисление функции

Сообщение Nikol »

Blackman писал(а):Ошибка в первой константе. Не pi/2, а pi.
даже после замены на pi график всё равно какой то кривой выходит :cry:
Аватара пользователя
zxc_pavel
adviser
adviser
Сообщения: 242
Зарегистрирован: 02 июн 2016, 12:07
Версия LabVIEW: 15
Благодарил (а): 9 раз
Поблагодарили: 23 раза
Контактная информация:

Re: Вычисление функции

Сообщение zxc_pavel »

около "0" тангенс -> бесконечность идет. Надо отсечь эти случаи
Вложения
123.png
Untitled 3.vi
(17.1 КБ) 84 скачивания
Blackman

Activity
leader
leader
Сообщения: 932
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Версия LabVIEW: 6.1,8.5,20

Re: Вычисление функции

Сообщение Blackman »

500+))
Upd: Заменить константу pi/2 в Case Structure на константу pi'. Результат на последнем рисунке.
Вложения
Tangens.png
Tangens FP.png
Tangens85.vi
(16.38 КБ) 86 скачиваний
Tangens FP2.png
Последний раз редактировалось Blackman 15 дек 2016, 00:08, всего редактировалось 1 раз.
Юрий
leader
leader
Сообщения: 526
Зарегистрирован: 28 фев 2010, 18:04
Версия LabVIEW: LV2018
Благодарил (а): 10 раз
Поблагодарили: 18 раз
Контактная информация:

Re: Вычисление функции

Сообщение Юрий »

Если на графике требуется иметь линию с разрывом, то между точками разрыва вставляется ещё одна точка со значением функции равным NaN. И тут возможны два варианта, которые следует учитывать.
1. Если одна из точек функции попадает на точку разрыва, то этой точке приписывается значение NaN. А выяснение, что точка попала на точку разрыва надо вести не по равенству, а по диапазону. В моём примере диапазон задаётся машинной ошибкой с множителем. Интересно поиграться соотношением множителя и количеством точек. Чем больше точек, тем меньший требуется множитель.
2. Если разрыв находится между точками, то тогда, хочешь не хочешь, а приходиться вставлять ещё одну точку со значением NaN. Если вставка требуется только для графика, то значение аргумента может быть любым (значение функции NaN), лишь бы он находился между интересующими точками.
Вложения
Tan+.vi
(26.16 КБ) 96 скачиваний
Blackman

Activity
leader
leader
Сообщения: 932
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Версия LabVIEW: 6.1,8.5,20

Re: Вычисление функции

Сообщение Blackman »

Tangens 2: Producer & Post Loops, корректная обработка отрицательных значений f.
Вложения
Tangens 2.png
Tangens FP3.png
Nikol
beginner
beginner
Сообщения: 42
Зарегистрирован: 02 ноя 2016, 16:40
Версия LabVIEW: 15
Контактная информация:

Re: Вычисление функции

Сообщение Nikol »

Blackman писал(а):Tangens 2: Producer & Post Loops, корректная обработка отрицательных значений f.
Спасибо большое, а не подскажете как добиться максимальной точности в окрестности pi/2, те тангенс рядом с pi/2 должен вычисляться с максимальной точностью что может позволить тип DBL(1,57079632679489656).Есть предположение что в начале нужно брать большой шаг между точками, а затем в самом конце пару точек очень малым шагом, однако как реализовать не представляю :cry: :dntknw:
Blackman

Activity
leader
leader
Сообщения: 932
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Версия LabVIEW: 6.1,8.5,20

Re: Вычисление функции

Сообщение Blackman »

Пример макс разрешения для функции tan в диапазоне (пи/2 +- эпсилон) +- эпсилон*N/2
Для квантования приведенной функции с макс возможным разрешением с ограниченным числом точек N необходимы дополнительные условия:
1. Максимальное и минимальное значение функции tan (x*f)
2. Диапазон изменения шага дельта X: (дельта Х) мин...(дельта Х) мах
После этого можно определить нелинейную функцию дельта Х = F(N) и сгенерировать требуемые значения шага и заданной функции.
Вложения
Tangent+ Max Resolution 85.vi
(37.49 КБ) 96 скачиваний
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Для чайников»