Что такое интерполяция в программировании
Перейти к содержимому

Что такое интерполяция в программировании

  • автор:

Интерполяция строк в C#

В этом руководстве описано, как использовать интерполяцию строк для форматирования и включения результатов выражения в строку результатов. В примерах предполагается, что вам знакомы основные принципы C# и форматирования типов .NET. Если вы не знакомы с интерполяцией строк или форматированием типов .NET, сначала ознакомьтесь с интерактивным учебником по интерполяции строк. Дополнительные сведения о типах форматирования в .NET см. в разделе «Типы форматирования» в .NET.

Введение

Для определения строкового литерала в качестве интерполированной строки добавьте к началу символ $ . Вы можете внедрить любое допустимое выражение C#, возвращающее значение в интерполированной строке. В следующем примере после вычисления выражения его результат преобразуется в строку и включается в строку результатов:

double a = 3; double b = 4; Console.WriteLine($"Area of the right triangle with legs of and is "); Console.WriteLine($"Length of the hypotenuse of the right triangle with legs of and is "); double CalculateHypotenuse(double leg1, double leg2) => Math.Sqrt(leg1 * leg1 + leg2 * leg2); // Output: // Area of the right triangle with legs of 3 and 4 is 6 // Length of the hypotenuse of the right triangle with legs of 3 and 4 is 5 

Как показано в примере, можно включить выражение в интерполированную строку, заключив его в фигурные скобки:

Интерполированные строки поддерживают все возможности составного форматирования строк. Это делает их более удобочитаемыми по сравнению с использованием метода String.Format.

Как указать строку формата для выражения интерполяции

Чтобы указать строку формата, поддерживаемую типом результата выражения, следуйте выражению интерполяции с двоеточием («:») и строкой формата:

В следующем примере показано, как задать стандартные и настраиваемые строки формата для выражений, возвращающих дату и время или числовые результаты:

var date = new DateTime(1731, 11, 25); Console.WriteLine($"On L. Euler introduced the letter e to denote ."); // Output: // On Sunday, November 25, 1731 L. Euler introduced the letter e to denote 2.71828. 

Управление шириной поля и выравниванием в форматированных выражениях интерполяции

Чтобы указать минимальную ширину поля и выравнивание результата отформатированного выражения, следуйте выражению интерполяции с запятыми («,») и константным выражением:

Если значение alignment положительное, форматированное выражение будет выровнено по правому краю, а если отрицательное — по левому.

Если вам нужно задать и выравнивание, и строку формата, начните с компонента выравнивания:

В следующем примере показано, как задать выравнивание. Текстовые поля разграничены символом вертикальной черты («|»):

const int NameAlignment = -9; const int ValueAlignment = 7; double a = 3; double b = 4; Console.WriteLine($"Three classical Pythagorean means of and :"); Console.WriteLine($"|||"); Console.WriteLine($"|||"); Console.WriteLine($"|||"); // Output: // Three classical Pythagorean means of 3 and 4: // |Arithmetic| 3.500| // |Geometric| 3.464| // |Harmonic | 3.429| 

В выходных данных в примере видно, что если длина форматированного результата выражения превышает заданную ширину поля, значение alignment игнорируется.

Как использовать escape-последовательности в интерполированной строке

Интерполированные строки поддерживают все escape-последовательности, которые могут использоваться в обычных строковых литералах. Дополнительные сведения см. в статье Escape-последовательности строки.

Для литеральной интерпретации escape-последовательности используйте строковый литерал verbatim. Интерполированная строка детализации начинается с обоих $ и @ символов. Вы можете использовать $ и @ в любом порядке: $@». » @$». » оба и являются допустимыми интерполированными подробными строками.

В строке результатов указывайте двойную фигурную скобку «>». Дополнительные сведения см. в разделе «Экранирование фигурных скобок » статьи о составном форматировании .

В следующем примере показано, как включить фигурные скобки в строку результата и создать интерполированную строку verbatim:

var xs = new int[] < 1, 2, 7, 9 >; var ys = new int[] < 7, 9, 12 >; Console.WriteLine($"Find the intersection of the <<>> and <<>> sets."); // Output: // Find the intersection of the and sets. var userName = "Jane"; var stringWithEscapes = $"C:\\Users\\\\Documents"; var verbatimInterpolated = $@"C:\Users\\Documents"; Console.WriteLine(stringWithEscapes); Console.WriteLine(verbatimInterpolated); // Output: // C:\Users\Jane\Documents // C:\Users\Jane\Documents 

Как использовать троичный условный оператор ?: в выражении интерполяции

Двоеточие (:) имеет особое значение в элементе выражения интерполяции. Чтобы использовать условный оператор в выражении, заключите это выражение в скобки, как показано в следующем примере:

var rand = new Random(); for (int i = 0; i < 7; i++) < Console.WriteLine($"Coin flip: <(rand.NextDouble() < 0.5 ? "heads" : "tails")>"); > 

Создание строки результата с интерполяцией для определенного языка и региональных параметров

По умолчанию в интерполированной строке используется текущий язык и региональные параметры, определяемые свойством CultureInfo.CurrentCulture для всех операций форматирования.

Начиная с .NET 6, можно использовать String.Create(IFormatProvider, DefaultInterpolatedStringHandler) метод для разрешения интерполированной строки в строку результата, зависят от языка и региональных параметров, как показано в следующем примере:

var cultures = new System.Globalization.CultureInfo[] < System.Globalization.CultureInfo.GetCultureInfo("en-US"), System.Globalization.CultureInfo.GetCultureInfo("en-GB"), System.Globalization.CultureInfo.GetCultureInfo("nl-NL"), System.Globalization.CultureInfo.InvariantCulture >; var date = DateTime.Now; var number = 31_415_926.536; foreach (var culture in cultures) < var cultureSpecificMessage = string.Create(culture, $""); Console.WriteLine($""); > // Output is similar to: // en-US 8/27/2023 12:35:31 PM 31,415,926.536 // en-GB 27/08/2023 12:35:31 31,415,926.536 // nl-NL 27-08-2023 12:35:31 31.415.926,536 // 08/27/2023 12:35:31 31,415,926.536 

В более ранних версиях .NET используйте неявное преобразование интерполированной строки в System.FormattableString экземпляр и вызовите его ToString(IFormatProvider) метод для создания строки результатов, зависяющей от языка и региональных параметров. Следующий пример показывает, как это сделать:

var cultures = new System.Globalization.CultureInfo[] < System.Globalization.CultureInfo.GetCultureInfo("en-US"), System.Globalization.CultureInfo.GetCultureInfo("en-GB"), System.Globalization.CultureInfo.GetCultureInfo("nl-NL"), System.Globalization.CultureInfo.InvariantCulture >; var date = DateTime.Now; var number = 31_415_926.536; FormattableString message = $""; foreach (var culture in cultures) < var cultureSpecificMessage = message.ToString(culture); Console.WriteLine($""); > // Output is similar to: // en-US 8/27/2023 12:35:31 PM 31,415,926.536 // en-GB 27/08/2023 12:35:31 31,415,926.536 // nl-NL 27-08-2023 12:35:31 31.415.926,536 // 08/27/2023 12:35:31 31,415,926.536 

Как показано в примере, можно использовать один экземпляр FormattableString для создания нескольких строк результата для различных языков и региональных параметров.

Как создать строку результата с помощью инвариантного языка и региональных параметров

Начиная с .NET 6, используйте String.Create(IFormatProvider, DefaultInterpolatedStringHandler) метод для разрешения интерполированной строки в результируемую строку для InvariantCultureэтой строки, как показано в следующем примере:

string message = string.Create(CultureInfo.InvariantCulture, $"Date and time in invariant culture: "); Console.WriteLine(message); // Output is similar to: // Date and time in invariant culture: 05/17/2018 15:46:24 

В более ранних версиях .NET вместе с FormattableString.ToString(IFormatProvider) методом можно использовать статический FormattableString.Invariant метод, как показано в следующем примере:

string message = FormattableString.Invariant($"Date and time in invariant culture: "); Console.WriteLine(message); // Output is similar to: // Date and time in invariant culture: 05/17/2018 15:46:24 

Заключение

См. также

  • String.Format
  • System.FormattableString
  • System.IFormattable
  • Строки

Совместная работа с нами на GitHub

Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

Обратная связь

Coming soon: Throughout 2024 we will be phasing out GitHub Issues as the feedback mechanism for content and replacing it with a new feedback system. For more information see: https://aka.ms/ContentUserFeedback.

Отправить и просмотреть отзыв по

Дополнительные ресурсы

Значок отказа согласно Закону Калифорнии о защите конфиденциальности потребителей (CCPA)

  • Светлая
  • Темная
  • Высокая контрастность
  • Предыдущие версии
  • Блог
  • Участие в доработке
  • Конфиденциальность
  • Условия использования
  • Товарные знаки
  • © Microsoft 2024

Краткий обзор алгоритмов интерполяции

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

Решить задачу интерполяции — означает найти значение наблюдаемой величины в неизмеренной точке Х на основе имеющихся данных:

Методы интерполяции можно разделить на два типа:

  • детерминированные, т.е. поверхности создаются из точек, основываясь на их близости/схожести;
  • геостатистические, т.е. поверхность строится между точками, для которых зависимость найдена статистическим путем.

Детерминированные методы интерполяции

Методы полиномиального тренда

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

В качестве примера представьте лист бумаги. То, как изгибается лист, хорошо описывает поведение глобального полинома. Полином первого порядка (линейное уравнение) будет описывать плоскую наклонную поверхность. При наличии выгнутой поверхности, например, долин, будет использован полином второго порядка или квадратичное уравнение, который будет похож на изогнувшийся лист. На рисунке — пример использования глобального полинома.

Flat Trend surfaceCurved Trend surface

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

Интерполяция по методу локальных полиномов

Метод обратно-взвешенных расстояний (ОВР)

Этот метод базируется на следующем принципе: чем ближе расположены объекты, тем больше они друг на друга похожи. Соответственно, объекты, местоположение которых ближе к зоне интерполяции, имеют большее влияние на рассчитываемые значения, а по мере увеличения расстояния от интерполируемой области, вес объекта будет стремительно уменьшаться. Рассчитанное значение в произвольной точке получается как средневзвешенная сумма значений в исходных точках. Следовательно, среднее значение не может превышать самое высокое входное значение и не может быть меньше самого низкого значения.

Из-за особенностей расчета значений, характерной чертой этого метода является эффект «бычьего глаза», который заключается в формировании замкнутых изолиний, не позволяющих без дополнительных действий создавать такие формы рельефа, как хребты или долины.

Радиальные базисные функции (РБФ)

Это метод жесткой интерполяции, в результате работы которой в расчете результирующей поверхности должен участвовать каждый объект в входном наборе данных. Каждая базисная функция, используемая в этом методе (плоский сплайн, сплайн с натяжением, полностью регуляризованный сплайн, функция мультиквадриков, функция обратных мультиквадриков) имеет различную форму и позволяет получать разные интерполированные поверхности.

Для этого метода сначала выбираются базисные функции, которые наилучшим образом подходят для аппроксимации. Затем объекты интерполируются с помощью комбинации выбранных базисных функций, чтобы получить приближенное значение функции в любой точке на интервале.

В отличии от метода ОВР, с помощью РБФ можно рассчитывать значения выше максимальных и ниже минимальных известных значений, что позволяет создавать слабо меняющиеся поверхности: например, поверхность высот.

Геостатистические методы интерполяции

Интерполяция является частью геостатистики. Геостатистика — это раздел статистики, который занимается анализом и прогнозом значений, связанных с пространственными и пространственно-временными явлениями.

Геостатистический метод применяется в различных сферах, позволяя моделировать распределение объектов, явлений и процессов в пространстве — начиная с оценки нефтегазового потенциала и заканчивая анализом загрязнения окружающей среды в рамках поиска взаимосвязи между заболеванием и определенными факторами.

Таким геостатистическим методом интерполяции является кригинг — многоэтапный процесс, который позволяет наиболее достоверно отобразить моделируемую поверхность при условии наличия пространственной корреляции. При кригинге решается две задачи: определение пространственной структуры данных и создание прогноза.

Чтобы разобраться, как работает кригинг, важно знать основные понятия:
Случайная величина — значение, которое может принимать результат случайного события.

Математическое ожидание — среднее значение случайной величины, ожидаемое значение при многократном повторении эксперимента.

Дисперсия — мера разброса значений случайной величины относительно ее математического ожидания.

Вариограмма — график, который показывает, как распределена дисперсия значений некоторой случайной величины в зависимости от расстояния между соответствующими наблюдаемыми точками.

Ковариация — мера зависимости двух случайных величин; демонстрирует степень линейной зависимости этих величин друг от друга.

Вариограммы позволяют пользователям подобрать к данным модель пространственной зависимости. Для описания поведения вариограммы используются следующие характеристики:

Диапазон (sill) — это расстояние, на котором вариограмма достигает своего насыщения и перестает изменяться. Если вариограмма насыщается быстро, это говорит о том, что значения случайной величины в этой области примерно одинаковы. Если вариограмма насыщается медленно, то значения случайной величины в этой области значительно меняются.

Порог (range) — расстояние, на котором вариограмма начинает увеличиваться быстрее. Он позволяет определить, на каком расстоянии объекты перестают влиять друг на друга.

Эффект самородка (nugget) — это особенность вариограммы, которая проявляется как «пик» на графике на малых расстояниях между точками измерения. Происхождение эффекта связано с тем, что при малых расстояниях между объектами значение аналогичных объектов может оказаться очень близко друг к другу, что приводит к тому, что показания вариограммы на этом участке резко увеличиваются.

Кригинг производит оценку значений статистических зависимостей между объектами входного набора данных, основываясь на вариограммах и функциях ковариации. Затем на основе полученных данных алгоритм прогнозирует значения в произвольных точках с учетом существующих измерений и расстояний между этими точками.

С точки зрения общей статистики кригинг заключается в минимизации дисперсии ошибки измерения. Это уменьшает среднюю квадратическую ошибку отклонения оцененного значения от возможного.

Как уже описывалось ранее, методы интерполяции призваны рассчитать значения в тех местах, где измерения отсутствуют, что очень удобно, например, для построения цифровых моделей рельефа. При помощи методов интерполяции можно также создавать тематические карты: например, прогнозные карты радиационного заражения или же карты распространения загрязняющих веществ.

  • Основы геоинформационного картографирования — учебное пособие / И. К. Лурье; Московский гос. университет им. М. В. Ломоносова. Географический факультет
  • https://tsamsonov.github.io/r-spatstat-course/
  • https://tsamsonov.github.io/r-geo-course/
  • Понятие интерполяции — ArcMap.
  • Кригинг — Wikipedia.

Автор: Мария Арсентьева

Раз в две недели мы выбираем лучшие материалы блога про карты и геотехнологии, добавляем к ним полезные ссылки от команды, подкрепляем личным посланием и отправляем это все в нашей e-mail рассылке. Подписывайтесь, чтобы не пропустить новости от нас ⭐

JavaScript: Интерполяция

В уроке про конкатенацию перед нами стояла задача создать заголовок письма из двух констант и знаков препинания. Вы, скорее всего, решили задачу так:

const firstName = 'Joffrey'; const greeting = 'Hello'; console.log(greeting + ', ' + firstName + '!'); // => Hello, Joffrey! 

Это довольно простой случай, но даже здесь нужно приложить усилия, чтобы увидеть, какая в итоге получится строка. Нужно следить за несколькими кавычками и пробелами, и без вглядывания не понять, где что начинается и кончается.

Есть другой, более удобный и изящный способ решения той же задачи — интерполяция. Вот, как это выглядит:

const firstName = 'Joffrey'; const greeting = 'Hello'; // Обратите внимание на ограничители строки, это бектики // Интерполяция не работает с одинарными и двойными кавычками console.log(`$, $!`); // => Hello, Joffrey! 

Мы просто создали одну строку и «вставили» в неё в нужные места константы с помощью знака доллара и фигурных скобок $ < >. Получился как будто бланк, куда внесены нужные значения. И нам не нужно больше заботиться об отдельных строках для знаков препинания и пробелов — все эти символы просто записаны в этой строке-шаблоне.

В одной строке можно делать сколько угодно подобных блоков.

Интерполяция работает только со строками в бэктиках. Это символ `.

Почти во всех языках интерполяция предпочтительнее конкатенации для объединения строк. Строка при этом получается склеенная, и внутри неё хорошо просматриваются пробелы и другие символы. Во-первых, интерполяция позволяет не путать строки с числами (из-за знака +), а во-вторых, так гораздо проще (после некоторой практики) понимать строку целиком.

Задание

Выведите на экран строку Do you want to eat, ? , где вместо должна использоваться константа stark . Вывод должен получиться таким:

Do you want to eat, Arya?

Упражнение не проходит проверку — что делать? ��

Если вы зашли в тупик, то самое время задать вопрос в «Обсуждениях». Как правильно задать вопрос:

  • Обязательно приложите вывод тестов, без него практически невозможно понять что не так, даже если вы покажете свой код. Программисты плохо исполняют код в голове, но по полученной ошибке почти всегда понятно, куда смотреть.

В моей среде код работает, а здесь нет ��

Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.

Мой код отличается от решения учителя ��

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

В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.

Прочитал урок — ничего не понятно ��

Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в «Обсуждениях». Идеально, если вы сформулируете непонятные моменты в виде вопросов. Обычно нам нужно несколько дней для внесения правок.

Кстати, вы тоже можете участвовать в улучшении курсов: внизу есть ссылка на исходный код уроков, который можно править прямо из браузера.

Полезное

Определения

  • Интерполяция — способ соединения строк через вставку значений переменных в строку-шаблон с помощью фигурных скобок. Например, `Hi, $!` .

Линейная интерполяция – G01

Код G01 предназначен для выполнения линейной интерполяции, или, говоря простым языком, для перемещения инструмента по прямой линии с заданной скоростью.

Оглавление

  • Основы числового программного управления
    • Автоматическое управление
    • Особенности устройства и конструкции фрезерного станка с ЧПУ
    • Функциональные составляющие (подсистемы) ЧПУ
    • Языки для программирования обработки
    • Процесс фрезерования
    • Режущий инструмент
    • Вспомогательный инструмент
    • Основные определения и формулы
    • Рекомендации по фрезерованию
    • Прямоугольная система координат
    • Написание простой управляющей программы
    • Создание УП на персональном компьютере
    • Передача управляющей программы на станок
    • Проверка управляющей программы на станке
    • Советы по технике безопасности при эксплуатации станков с ЧПУ
    • Нулевая точка станка и направления перемещений
    • Нулевая точка программы и рабочая система координат
    • Компенсация длины инструмента
    • Абсолютные и относительные координаты
    • Комментарии в УП и карта наладки
    • G- и М-коды
    • Структура программы
    • Слово данных, адрес и число
    • Модальные и немодальные коды
    • Формат программы
    • Строка безопасности
    • Ускоренное перемещение – G00
    • Линейная интерполяция – G01
    • Круговая интерполяция – G02 и G03
    • Введение
    • Останов выполнения управляющей программы – М00 и М01
    • Управление вращением шпинделя – М03, М04, М05
    • Управление подачей СОЖ – М07, М08, М09
    • Автоматическая смена инструмента – М06
    • Завершение программы – М30 и М02
    • Основные принципы
    • Использование автоматической коррекции на радиус инструмента
    • Активация, подвод и отвод
    • Подпрограмма
    • Работа с осью вращения (4-ой координатой)
    • Параметрическое программирование
    • Методы программирования
    • Что такое CAD и САМ?
    • Общая схема работы с CAD/САМ-системой
    • Виды моделирования
    • Уровни САМ-системы
    • Геометрия и траектория
    • Алгоритм работы в САМ-системе и постпроцессор
    • Ассоциативность
    • Пятикоординатное фрезерование и ЗD-коррекция
    • Высокоскоростная (ВСО) и высокопроизводительная обработка
    • Критерии для оценки, сравнения и выбора CAM-систем

    © 2015-2022 Планета CAM
    Информационно-аналитический электронный журнал «Планета CAM» (12+)
    Адрес редакции: 192102, г. Санкт-Петербург, ул. Фучика д. 4, литер К
    Главный редактор: Ловыгин А. А.
    Контактная информация: Тел. +7 (812) 407-14-04, Email: mail@planetacam.ru

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *