Який хороший метод (рівняння) для локального уточнення 1D сітки на кожному кінці?


4

У мене є сітка, яку я планую дискретизувати в 1D. Він поширюється від 0 до L за допомогою N вузлів, і мені потрібно вдосконалити його на кожному кінці. Я планую мати щось таке:

введіть тут опис зображення

Я спробував вказати ці два параметри:

  1. темп зростання (r)
  2. початковий інтервал між вузлами (dx1)

Тоді х балів обчислюються у такій серії, як:

x (i) = dx1 * r ^ x (i-1)

Це добре працює, якщо я знаю N, і вказати r і dx1. Але в ідеалі мені потрібно, щоб r і dx1 були функціями N, щоб правильно масштабувати сітку, коли N збільшується. Тобто з N = 10, r має бути приблизно 1,7, але коли N = 100, r має бути приблизно 1,1, щоб мати однакову "форму". Аналогічна проблема з dx1. Хтось знає, як зробити ці два параметри функції N, які будуть масштабуватися з ним?


З вашим малюнком щось не в порядку, спробуйте вставити його ще раз. Якщо це не працює, покладіть на нього посилання.
peterh

Привіт @peterh, дякую, що повідомили мені. Я зараз це виправив.
teepee

Не зрозуміло, що означає ваше позначення, але я не думаю, що ви хочете x_i = dx1 times r to the power x_(i-1) більш ймовірногоx_i=dx1*r*x_(i-1)
agentp

Відповіді:


1

Я припускаю, що ваше рівняння використовується лише для визначення інтервалу від кінця до середини, після чого ви його дзеркально відображаєте.

Замість dx1 запишіть L / N, де L - загальна довжина. Тепер у вас є

x (i) = (L / N) * r ^ x (i-1)

... і коли ви зміните N, ваші x (i) s також будуть масштабуватися. Я не думаю, що ти хочеш, щоб r була функцією N.

Дайте мені знати, якщо це допомагає!


0

Оскільки 1D, ймовірно, не буде занадто обчислювально інтенсивним навіть для дуже великих наборів, ви можете просто підсумувати всі довжини для заданого N, а потім розділити всі відстані в цьому сітчастому масиві на це значення. Це не було б обчислювально ефективно, як явна функція, але зробить саме те, що потрібно, без зайвих експериментів. Якщо вам потрібна обчислювальна ефективність і ви не отримуєте тут жодних збоїв, можливо, вам захочеться переписатись у математику.


Я не впевнений, що точно знаю, що ви маєте на увазі під цим; Ви могли б це якось записати чисельно, якщо це можливо? Це все ще буде геометричним рядом?
teepee

Чи використовуєте мову програмування / сценаріїв? Python - хороший вибір, якщо ви його не вибрали. В основному використовуйте цикл FOR для n для створення масиву та підсумовування загальної довжини, а потім другий цикл FOR, щоб розділити кожен елемент масиву на цю суму.
ericnutsch

Я використовую MATLAB atm. Я розумію синтаксис операцій, але я не впевнений, що саме ви маєте на увазі розділення кожного елемента на суму ...
teepee

У вас виникають проблеми зі шкалою підсумкової сітки на основі різних вхідних значень. Якщо я знаю загальну довжину (підсумовуючи її під час переходу в перший цикл) і ділю кожну клітинку на загальну (у другому циклі після того, як я знаю загальну), то сума всіх довжин комірок у сітці завжди буде бути 1, незалежно від вхідних параметрів.
ericnutsch
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.