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

C++

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

Программная реализация номограммы - C++

03.11.2016, 12:57. Просмотров 324. Ответов 5
Метки нет (Все метки)

Сейчас пишу одну модель программно, в нее входят разные формулы для ее расчета, вбивать их конечно на С, не составляет никакого труда, но вот как быть с номограммой? (см. скриншот ниже)

Программная реализация номограммы


Как бы реализовать так, чтобы при указанной температуре газов (C) и PS (кн/м), программа сама определила "Степень черноты CO2", а не сам пользователь с линейкой/на глаз.

Может у кого-то есть идеи?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.11.2016, 12:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Программная реализация номограммы (C++):

Построение и программная реализация автоматных моделей языков - C++
Доброе время суток всем. Будьте так любезны кто знает или умеет напишите пожалуйста примеры конечных автоматов. Можно в принципе и на...

Программная установка расширений для браузеров - C++
Доброго времени суток! Заранее скажу, что перед тем как спрашивать на форуме, устроил dos атаку на поисковики:) У меня возникла...

Программная реализация простого бесприоритетного планировщика потоков - C++ Builder
Доброе утро всем! Нужна Ваша помощь в доработке. Была задача: Программная реализация простого бесприоритетного планировщика потоков. ...

Программная пауза - C++ Builder
Доброго времени суток! Будьте добры, подскажите. Мне необходимо поставить паузу, так, чтобы для продолжения работы программы нужно было...

Программная очистка Edit - C++ Builder
Нужно это добавить как то в настройки Edit1->Clear(); Но чтобы Edit1 чистился не на событие OnClick а чтобы это в настройки вывести и...

Программная эмуляция джойстика - C++ Builder
Здравствуйте! Делаю одну ЮСБ-примочку для ПК, одна с функций которого - прием сигналов с ПДУ и передача их на ПК как игровое устройство...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Nick Alte
Эксперт С++
1636 / 1008 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
04.11.2016, 20:17 #2
Интерполяция функции двух переменных. Набиваем таблицу точек (температура и этот самый PS) и значения черноты. Интерполируем по этой таблице хотя бы кубическими полиномами. Коэффициенты полиномов вычисляем заблаговременно и пользуемся готовыми.
user848
0 / 0 / 0
Регистрация: 22.04.2015
Сообщений: 6
04.11.2016, 20:21  [ТС] #3
я знаю, что это, но это ничего здесь не решит...
походу здесь лишь вбивать всё в ручную, тысячи данных
всё равно требуется проверять линейкой все возможные комбинации
Nick Alte
Эксперт С++
1636 / 1008 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
05.11.2016, 09:54 #4
Зачем тысячи, сетку можно пореже сделать. Кривые достаточно хорошо друг друга повторяют, сгладятся нормально. Надо только глянуть, не следует ли использовать для какой-то из шкал экспоненциальную зависимость перед сглаживанием.
user848
0 / 0 / 0
Регистрация: 22.04.2015
Сообщений: 6
09.11.2016, 01:16  [ТС] #5
Цитата Сообщение от Nick Alte Посмотреть сообщение
Надо только глянуть, не следует ли использовать для какой-то из шкал экспоненциальную зависимость
А могли бы, пожалуйста, привести простой пример хотя бы и без этого (просто о том, что писали в первом сообщении), так сказать дать начало. А то пока что не доходит ваша идея. И пока лишь думаю забивать эти все полиномы в Matlab (мне необязательно на C++) и как-то пробовать определить точку пересечения P.S. с Y (температурой) для определения X

Добавлено через 59 минут
Хотя сами точки всех функций с рисунка можно такой программой как GetDate
Nick Alte
Эксперт С++
1636 / 1008 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
10.11.2016, 19:37 #6
Цитата Сообщение от user848 Посмотреть сообщение
А могли бы, пожалуйста, привести простой пример хотя бы и без этого
Без этого не получится, шкалы PS и черноты экспоненциальные.

А идея у меня такая. Берём эту номограмму. Проводим вертикальные линии по шкале температуры (можно как раз по 200-градусным засечкам). Отмечаем там точки пересечения линии с кривой и соответствующий этой точке показатель черноты. Для более точного определения лучше составить формулу перевода высоты в пикселях в значение. Поскольку шкала черноты экспоненциальная, не забываем пользоваться в этой формуле экспонентой.

Точки пересечения мы отмечаем не для каждой кривой, часть близкорасположенных кривых можно пропустить, чтобы
таблица значений не разбухала до неприличных размеров. В результате получаем таблицу, в которой столбцы соответствуют темературам, строки - выбранным кривым (значениям PS), а значения в ячейках - черноте.

Затем мы преобразуем таблицу, заменяя черноту и PS на их логарифмы. Из таблицы генерируем интерполяционные полиномы.

Далее совсем просто. На вход получаем температуру и PS (его сразу пропускаем через логарифм) и подставляем в соответствующий полином. Результат возгоняем в экспоненту, получаем искомую черноту.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.11.2016, 19:37
Привет! Вот еще темы с ответами:

Программная сортировка в ListView - C++ Builder
Здравствуйте! Есть сортировка по убыванию при нажатии столбца в ListView: bool rev; int ColumnToSort; ...

Программная распаковка zip-архива - C++ Builder
Собственно вопрос простой - КАК это реализовать?

Программная реализация дека - C (СИ)
помогите пожалуйста!!! Программная реализация дека Указания: - использовать динамический массив - предусмотреть функции...

Программная реализация очереди - C++
Друзья, подскажите, почему не правильно работает программа, ругается на функцию EmptyQ программу надо запускать в консольном приложении в...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
10.11.2016, 19:37
Ответ Создать тему
Опции темы

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