Дискуссионный математический форумМатематический форум
Математический форум Math Help Planet

Обсуждение и решение задач по математике, физике, химии, экономике

Теоретический раздел
Часовой пояс: UTC + 3 часа [ Летнее время ]
новый онлайн-сервис
число, сумма и дата прописью

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Привести к сокращенному виду A = (B-C*1)*(B-C*2)*(...)
СообщениеДобавлено: 13 ноя 2018, 12:16 
Не в сети
Начинающий
Зарегистрирован:
13 ноя 2018, 12:04
Сообщений: 5
Cпасибо сказано: 0
Спасибо получено:
0 раз в 0 сообщении
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Доброго всем здравия!

Есть задача - привести к сокращенному виду формулу:
A = (B-C*1)*(B-C*2)*(B-C*3)*(B-C*4)*(B-C*5)*(B-C*6)* ... (B-C*D)
коэффициенты В, С и D - поступают на вход функции.

Область применения - компьютерная графика.
Эти вычисления - для расчета светопропускания (B) в тумане с переменной, линейно изменяющейся плотностью (C) на дистанции (D).
Подобное решил Inigo Quilez (вот статья http://www.iquilezles.org/www/articles/fog/fog.htm) но он зачем-то привел у себя неверную формулу.

Это вообще решаемо?

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Привести к сокращенному виду A = (B-C*1)*(B-C*2)*(...)
СообщениеДобавлено: 13 ноя 2018, 12:30 
Не в сети
Light & Truth
Зарегистрирован:
02 дек 2016, 22:55
Сообщений: 5208
Cпасибо сказано: 341
Спасибо получено:
924 раз в 873 сообщениях
Очков репутации: 131

Добавить очки репутацииУменьшить очки репутации
Что такое "сокращённый вид"?

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Привести к сокращенному виду A = (B-C*1)*(B-C*2)*(...)
СообщениеДобавлено: 13 ноя 2018, 12:35 
Не в сети
Начинающий
Зарегистрирован:
13 ноя 2018, 12:04
Сообщений: 5
Cпасибо сказано: 0
Спасибо получено:
0 раз в 0 сообщении
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
В таком виде мне надо в цикле осуществлять столько умножений, сколько есть дистанции D.

Сокращенный вид подразумевается что-то вроде: A = log(B)/(log(C)*D!)
однако хотелось бы не применять факториал, потому что его тоже не получится посчитать одним простым выражением.

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Привести к сокращенному виду A = (B-C*1)*(B-C*2)*(...)
СообщениеДобавлено: 13 ноя 2018, 13:26 
Не в сети
Light & Truth
Зарегистрирован:
02 дек 2016, 22:55
Сообщений: 5208
Cпасибо сказано: 341
Спасибо получено:
924 раз в 873 сообщениях
Очков репутации: 131

Добавить очки репутацииУменьшить очки репутации
Приведённый вами пример может оказаться существенно "дороже" в вычислительном смысле, чем 2D умножений.
Для выбора реализуемой формулы желательно иметь представление об области значений переменных, требуемой точности и т.п.

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Привести к сокращенному виду A = (B-C*1)*(B-C*2)*(...)
СообщениеДобавлено: 13 ноя 2018, 13:52 
Не в сети
Начинающий
Зарегистрирован:
13 ноя 2018, 12:04
Сообщений: 5
Cпасибо сказано: 0
Спасибо получено:
0 раз в 0 сообщении
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Области значения переменных:
В - светопропускание, может быть от 0.8 до 0.9999 (примерно)
С - дельта изменения В с высотой на 1 метр дистанции, может быть как равна B (если туман высотой всего в 1 метр) так и до 0.0001
D - дистанция, от 1 до 10000, условно говоря 10 км максимум.

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

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Привести к сокращенному виду A = (B-C*1)*(B-C*2)*(...)
СообщениеДобавлено: 13 ноя 2018, 16:16 
Не в сети
Начинающий
Зарегистрирован:
13 ноя 2018, 12:04
Сообщений: 5
Cпасибо сказано: 0
Спасибо получено:
0 раз в 0 сообщении
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Судя по всему этот ряд невозможно упростить.
Поэтому рассматриваю вариант попроще:
A = (B-C)*(B-C^2)*(B-C^3)*(B-C^4)*(B-C^5)*(B-C^6)* ... (B-C^D)

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Привести к сокращенному виду A = (B-C*1)*(B-C*2)*(...)
СообщениеДобавлено: 13 ноя 2018, 21:59 
Не в сети
Любитель математики
Аватара пользователя
Зарегистрирован:
16 июл 2011, 08:33
Сообщений: 22268
Откуда: Беларусь, Минск
Cпасибо сказано: 2096
Спасибо получено:
4958 раз в 4631 сообщениях
Очков репутации: 845

Добавить очки репутацииУменьшить очки репутации
Nikolay_Arm
Nikolay_Arm писал(а):
Поэтому рассматриваю вариант попроще:
A = (B-C)*(B-C^2)*(B-C^3)*(B-C^4)*(B-C^5)*(B-C^6)* ... (B-C^D)

Чем этот вариант проще?

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Привести к сокращенному виду A = (B-C*1)*(B-C*2)*(...)
СообщениеДобавлено: 14 ноя 2018, 12:12 
Не в сети
Начинающий
Зарегистрирован:
13 ноя 2018, 12:04
Сообщений: 5
Cпасибо сказано: 0
Спасибо получено:
0 раз в 0 сообщении
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Да, отличий немного.
Задачу в исходной постановке считаем нерешаемой.

Вернуться к началу
 Профиль  
Cпасибо сказано 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему      Страница 1 из 1 [ Сообщений: 8 ]

 Похожие темы   Автор   Ответы   Просмотры   Последнее сообщение 
Привести к каноническому виду и т.д

в форуме Векторный анализ и Теория поля

parenyuk

4

583

28 июн 2018, 16:15

Привести к каноническому виду

в форуме Аналитическая геометрия и Векторная алгебра

billym97

7

837

28 окт 2016, 12:26

Как привести к решаемому виду

в форуме Дифференциальные и Интегральные уравнения

Krendel44

1

228

01 фев 2018, 16:49

Привести к каноническому виду

в форуме Аналитическая геометрия и Векторная алгебра

Lena1996

1

296

04 ноя 2017, 07:15

Привести к каноническому виду 1

в форуме Аналитическая геометрия и Векторная алгебра

photographer

4

326

19 ноя 2016, 13:59

Привести к линейному виду

в форуме Алгебра

kirill_bolc

1

250

13 янв 2021, 12:22

Привести к каноническому виду

в форуме Линейная и Абстрактная алгебра

photographer

1

306

19 ноя 2016, 13:46

Привести к каноническому виду

в форуме Аналитическая геометрия и Векторная алгебра

Olenka_S

13

1138

23 май 2015, 16:38

Привести к каноническому виду

в форуме Дифференциальные и Интегральные уравнения

navi911

0

385

19 фев 2017, 09:11

Привести к каноническому виду

в форуме Аналитическая геометрия и Векторная алгебра

lizasimpson

3

397

17 дек 2014, 10:53


Часовой пояс: UTC + 3 часа [ Летнее время ]



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 22


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Яндекс.Метрика

Copyright © 2010-2023 MathHelpPlanet.com. All rights reserved