Введение

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

  • Арифметика преподается в школе: Нынешние школы и образовательные системы по всему миру, похоже, не умеют преподавать математику. Это потому, что математика — это область, которая не похожа ни на что другое, вы не можете просто сидеть в комнате, говорить цифры и буквы и ожидать, что они сдадут экзамен, если они не просто машина. Чтобы преподавать и понимать математику, нужен кто-то, кто может сделать это забавным, и кто-то, кто может вызвать интерес, используя реалистичные примеры, а не какие-то странные примеры, такие как the plane lands at so and so speed running down the runway which is 239864232364792346789 feet long ontop of a watch tower which is 9000000 feet in height so solve for the hypot of x . Вам нужно что-то реальное, что-то простое, чтобы получить основу, чтобы вы могли постепенно построить концепцию.
  • Мошенничество в играх и разработка эксплойтов: многие люди скажут you do not need math или math is useless in compsci or hacking!, но это совершенно неверно! Математика и стандартная арифметика, особенно когда вы приступаете к взлому игр и обратному инжинирингу, являются почти обязательными для таких функций, как функция World To Screen или реализация алгоритмов линейного преобразования и алгоритмов трассировки лучей. Даже помимо мошенничества в играх и обратного проектирования все компьютеры используют математику, если вы хотите создать что-то быстрое, вы используете алгоритм, если вы хотите создать поисковую систему, вы используете алгоритм, если вы хотите создать или разработать игру, веб-сайт , серверные инструменты, драйверы, комплекты — все, что вы собираетесь использовать в математике, будь то векторная математика, линейная алгебра или вплоть до тригонометрии.

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

Примечание → Предупреждение: эта статья, скорее всего, будет очень длинной, темы в этой статье также могут потребовать времени, чтобы понять, не торопитесь с этим, поскольку вы не можете, и вам также может потребоваться ясное мышление. Математика в целом разочаровывает, когда дело доходит до их реализации на таких старых языках, как Fortran95, может стать еще хуже и может потребоваться больше знаний мозга. Поэтому, пожалуйста, не стесняйтесь уйти и вернуться позже, когда вы почувствуете, что у вас достаточно сильное мышление, чтобы прочитать это, чтобы вы действительно могли узнать что-то из этой статьи.

Общие условия

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

  • Тригонометрическая функция -> Функция, используемая для связи углов треугольника с длинами сторон треугольника.
  • Смежные → Смежные стороны данного прямоугольного треугольника - это стороны, которые примыкают к углу в данном треугольнике. Мы будем использовать это как ввод
  • Противоположные → Противоположные стороны данного прямоугольного треугольника - это стороны, противоположные углу в треугольнике, другими словами, сторона, противоположная углу.
  • Тан → Также известный как тангенс. Тангенс — это противоположная сторона треугольника (opp), деленная на прилежащую сторону или, другими словами, над ней. Например

  • ATan -> иначе известный как арктангенс, который представляет собой функцию, аналогичную тангенсу, которая вычисляет арктангенс заданного значения. Это означает, что, учитывая тангенс угла, atan вернет соответствующий угол в радианах.
  • Гипотеза → Мы представляем гипоту как гипотенузу треугольника, если вы с ней не знакомы, это самая длинная сторона треугольника. Гипотеза используется в качестве аргумента для таких функций, как COS.
  • Cos → Также известный как Cosign, представлен как cos = adj / hypot. В изображении или визуальном формате это выглядит как изображение, показанное выше, но вместо этого.

  • PI → Математическая константа, которая сохраняется и часто представляется с постоянным значением 3.14159, однако известно, что значение Pi может продолжаться бесконечно, что означает, что его нельзя полностью выразить точно в виде конечной дроби или десятичной дроби. Пи используется для многих вещей, таких как выяснение того, как преобразовать заданный градус, такой как 45,0 или 4, в радианы, чтобы они были входными данными для функций COS, TAN, SIN, HYPOT и т. д.
  • Радиус → Определение или термин, используемый для описания сегмента линии от центра круга до его показанной окружности, которая показана ниже.

  • SIN ( синус ) → Это функция, которая используется для расчета соотношения между длиной стороны, противоположной заданному углу в прямоугольном треугольнике, и длиной гипота. Мы используем это в нашей функции для аппроксимации расстояния между углом подъема и углом наклона.
  • Угол возвышения (AOE) → это угол, под которым данный человек смотрит или рассматривает данный объект, поднимающийся вверх. Например, человек, который смотрит вверх под определенным углом, чтобы увидеть предмет или место, такое как звезды на небе, имеет угол возвышения. Другой прекрасный пример — человек, смотрящий под углом 45 градусов на птицу на дереве. Этот угол легко запомнить, просто подумав «вверх», когда вы видите «возвышение» в его угле высказывания.
  • Угол депрессии (AOD) → Угол, под которым данный человек или линия сайта смотрит вниз сверху. Например, в случае человека, смотрящего на самолет из AOE, в самолете есть кто-то, кто смотрит вниз, что означает, что он имеет угол падения с их точки зрения. В других случаях может быть кто-то в квартире на 12-м этаже, смотрящий на машины внизу.
  • ≈ → Это способ сказать или представить приблизительные значения. например, длина между углом a и углом b составляет ≈ 16,5 футов или the length between angle a and angle b is approximately 16.5 feet.
  • ° → Символ градуса, он будет использоваться в таких примерах, как угол 45° в точке b.

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

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

Ответы на вопросы когда, где и как

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

  • Когда: Это сложный вопрос, так как когда никогда не бывает точного определения, а математика только выборочна в большинстве штатов, но математика действительно может использоваться где угодно и может использоваться, когда вам это нужно. Например, скажем, вы создаете простую функцию на C++, которая действует как функция отображения мира на экране для преобразования координат, вы не сможете выполнить это без глубокого понимания векторной математики, поскольку функции выглядят следующим образом.
math::float3
 Camera::screenToWorld(const math::float3& pos) const noexcept
 {
  math::float4 viewport = this->getPixelViewport();

  math::float4 v(pos, 1.0);

  v.y = viewport.w - v.y; // opengl

  v.x = ((v.x - viewport.x) / viewport.z) * 2.0f - 1.0f;
  v.y = ((v.y - viewport.y) / viewport.w) * 2.0f - 1.0f;

  v = this->getViewProjectionInverse() * v;
  if (v.w != 0)
   v /= v.w;

  return math::float3(v.x, v.y, v.z);
 }

Чтобы понять, как создавать эти функции, вам явно необходимо понимать алгоритмы, которые они используют в этих функциях. Теперь, когда вступает в игру случай when, он всегда полезен, так как я могу написать простую программу для обработки и работы с файлами, но если мне нужно, чтобы она была параллельной, я могу создать некоторую форму шаблона или логического алгоритма, чтобы сделать запрограммируй лучше. Итак, когда на самом деле не является полноценным вопросом, на который можно ответить, например, когда может быть всегда или может быть иногда. Тем не менее, в больших кодовых базах существует почти 100% вероятность того, что для проектирования, вывода и т. д. вам потребуется использовать математические выражения, алгоритмы или методы для центрирования этих данных или небольшого фрагмента данных для расчета. В нашем случае сегодня нам нужно использовать его, потому что мы будем применять тригонометрические функции, используя fortran95.

  • Почему: почему то же самое, что и когда, почему может быть что угодно, например, желание сделать ваш алгоритм намного более плавным, сделать эксплойт более точным или если вы пытаетесь предсказать значение или оценить значение или центрировать и отсортировать данные. Например, математика используется для создания всевозможных программ, которые используют всевозможные алгоритмы, такие как игровые движки, которые могут использовать алгоритмы шума и сглаживания для создания и генерации бесконечной местности и бесконечных участков, или как насчет поисковых систем, которые используют рейтинговые алгоритмы, такие как как модель векторного пространства, которая представляет собой пространственные модели, используемые для решения проблемы моделей на основе логических значений. Вместо прямого сопоставления или создания условия для проверки совпадения двух строк в запросе или URL-адресе эта модель в основном проверяет, совпадают ли они частично. Это лучшее решение, потому что имейте в виду, что, как и большинство движков, они соответствуют тому, что похоже или что прямо равно вашему поисковому запросу, что делает его более приятным, потому что, если вы допустили орфографическую ошибку, движок все равно может получить относительные данные, а не прямые данные. Алгоритмы используются повсеместно, будь то простые шаблоны параллелизма или расширенные алгоритмы оценки и решения, без необходимости говорить почти каждый чрезвычайно длинный и мощный фреймворк, веб-сайт или инструмент, который вы используете, даже приложение может использовать алгоритм для достижения успеха в конкретной задаче. или, чтобы сделать задачу лучше и проще, другим формальным случаем являются алгоритмы бинарного и линейного поиска. В целом, есть много способов и причин использовать алгоритмы вместо стандартных решений, поскольку, если они реализованы правильно, они могут сделать приложение намного более производительным, интересным в использовании и намного более простым в работе, облегчая работу разработчика. Теперь, конечно, алгоритмы могут быть головной болью сами по себе, если они не реализованы правильно, что может быть огромной головной болью, но даже тогда это все равно сэкономит много времени и места в будущем.
  • Где: Это еще один сложный вопрос, который зависит только от приложения, которое вы пытаетесь создать, и задачи, которую вам нужно решить. Если вы делаете что-то вроде ESP или безумного аимбота для игры, вам нужна векторная математика, если вы создаете игру, которая вращается вокруг ландшафта, такого как горы, которые генерируются бесконечно, как в minecraft, вы будете использовать такие алгоритмы, как шум алгоритмы, для физических движков вам потребуются физики для поисковых систем алгоритмы рейтинга для калькуляторов всевозможные стандартные алгоритмы и даже для языков программирования знание бинарной арифметики.

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

Использование Фортрана для математики

Fortran, язык программирования, созданный в середине 50-х, расшифровывается как FORmula TRANslation language. Это был программный язык, предназначенный именно для того, что следует из названия, — для перевода формул. Учитывая, что фортран имеет такой хорошо округленный синтаксис и интересно использует типы данных, это позволяет нам сделать наши математические функции и реализации намного проще и намного лучше. Из-за того, что fortran также имеет серверную часть, заполненную стандартными функциями для математики, это также делает реализацию алгоритмов намного более разнообразной, но также намного проще, давая возможность манипулировать алгоритмами. Когда вы смотрите на такие языки, как Python, вы можете заметить, что при загрузке или рендеринге трехмерных алгоритмов или графики он становится немного медленным просто потому, что Python не был полностью округлен или создан для трехмерной графики в свое время, в то время как такие языки, как формулировки, были созданы для выполнения расчеты, необходимые для трехмерных и двухмерных фигур. Использование Фортрана для математики также довольно просто и может быть забавным при работе с его синтаксисом. Ниже этого текста вы найдете общий обзор функций, используемых в фортране для математики, а также обзор синтаксиса фортрана.

  • Общие операторы → При работе с fortran для общих операций и математики у него есть стандартные операторы, подобные следующим.
+ -> Unary Plus 
- -> Unary Minus 
+ -> Addition 
- -> Subtraction
/ or /= -> Division 
Exponentiation -> **
multiplication -> *
  • Операторы сравнения → Fortran упрощает работу с логическими операторами, а также изо всех сил старается работать с более англоязычными операторами. Ниже показаны его операторы
.AND. ( logical AND )
.OR.  ( Logical OR  )
.NOT. ( Logical NOT )
/=    ( Not equal to ) also .NE.
==    ( Equal to )
>     ( Greater than )
<     ( Less than )
<=    ( Less than or eq to )
>=    ( Greater than or eq to )
.eqv. ( Logical EQUIVALENT operator )
.neqv. ( Logical NOT EQUIVALENT operator )

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

if the cow is 5 years old and is 11 days old then output hi

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

program main 
    implicit none
    REAL :: cowage, cowdays
    cowage = 5
    cowdays = 11
    IF(cowage == 5 .AND. cowdays == 11) THEN 
        print*, 'hi'
    END IF
end program main

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

  • Площадь круга: Используя → площадь = пи * радиус ** 2
program main
  implicit none
  REAL :: rad, pi=3.141, area
  rad = 5
  area=pi*rad**2
  WRITE(*,*)"Area =",area
end program main
  • Объем цилиндра: Использование → объем = пи * радиус ** 2 * высота
program main 
    implicit none
    real :: rad, hei, pi, vol
    pi = 3.14159265
    rad = 5.0
    hei = 10.0
    vol = pi * rad ** 2 * hei
    print*, "volume is : ", vol
end program main

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

Строим нашу ситуацию

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

  • Основное введение → Обход углов AOE и AOD

Выше мы в первую очередь обсуждали, что такое AOE (угол возвышения) и AOD (угол депрессии). Но как нам настроить сценарий, достаточный для решения. Ну, это может быть довольно просто, мы можем вернуться к ссылке на птицу, где мы видим человек смотрит на птицу под углом 45 градусов. Теперь мы можем использовать изображение и графику ниже, чтобы показать это и записать это.

На этом рисунке показаны 2 важные детали: угол обеих противоположных сторон (людей/животных) и названия углов, которые показывают AOE и AOD. Теперь, используя этот график, мы можем настроить наш сценарий следующим образом.

A bird is spotted by a person walking on a trail, the person represented as person A is looking at a bird overhead at a 45° angle, this angle is known as the angle of elevation or AOE , solve for x where x is the length between person A looking diagnolly above to the bird. Use the angle of depression and a trigonometric function to find the distance

ПРИМЕЧАНИЕ (ЭТО ВАМ ПОНАДОБИТСЯ): вам может быть интересно, что вы только что прочитали, вы можете быть сбиты с толку, вы можете очень-очень потеряться в том, куда это пошло, но важно знать, что я сделал это намеренно, чтобы запутать вас, и вот почему . Еще со времен линейной алгебры я узнал, что на большинстве моих математических экзаменов они намеренно пихают бессмысленные слова, бессмысленные значения, бессмысленные утверждения и затягивают утверждение. Это можно рассматривать как форму социальной инженерии, пытающуюся отвлечь вас и сжечь от значений в уравнении. Это способ сделать его scary или, другими словами, сбить с толку испытуемого или студента, поскольку это действительно направляет их умственное внимание на тест. Математика — это одна гигантская область азбуки, единиц и нулей, к которой на самом деле сводится вся математика, она ничем не отличается от информатики сама по себе.

Чему я научился, когда изучал линейную алгебру и предварительное вычисление, так это «отфильтровывать ненужное», что означало, что я брал вопрос и переформатировал его. Все, что делает приведенный выше вопрос, — это расширяет его цель, чтобы еще больше запутать вас, в конце концов все, что мы пытаемся найти, — это расстояние между человеком А и птицей, представленной X. Другие слова, фразы и т. д. не имеют значения в этом утверждении, нам нужны только основные детали, которые показаны на графике.

Теперь, когда мы убрали это с пути и можем отфильтровать ненужное, давайте возьмем это предложение, переформатируем его и сократим.

Given the graphic above, solve for x where x is the distance between person A and the bird.

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

Этот график дает нам следующие важные значения для нашего уравнения

  • Тип угла: мы будем использовать угол депрессии
  • Градус угла: 45 градусов
  • Высота: 50 футов
  • Решите для: X или расстояние между птицей и наблюдателем или людьми
  • Решение для → гипота треугольника

Мы можем составить простое уравнение, используя SIN, чтобы решить это, мы используем SIN, потому что помните, что SIN = opp / hypot. Поскольку мы знаем обратное, угол и, мы также знаем, что пытаемся найти гипотенузу, у нас уже есть наша функция настройки, как показано ниже.

SIN 45 ГРАДУС = 50 / х

Мы используем SIN 45 DEG для представления этого sin(45°), потому что 45 градусов — это угол депрессии. Теперь, если мы запустим этот SIN (45), мы получим следующее

0.85090352453

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

рад = град * пи / 180

поэтому, если мы подставим наши значения, мы получим

рад = 45 * пи / 180 = пи / 4

теперь, когда у нас есть наш радиан, который равен PI / 4, мы можем реализовать его в нашей синусоидальной функции, которая…

SIN(PI / 4)

Который дает

0.707106769

Которое значит что

0.707106769 ≈ 50 / x

в свою очередь уходит

(0.707106781)x ≈ 50

мы остаемся с этим странным запутанным назначением, чтобы сказать, что 0,7071 .. примерно равно 50. Это уравнение немного сбивает с толку, поэтому давайте разберем его, наше уравнение и значение, которое мы пытаемся найти, находится в тесной связи с противоположной стороной h = 50 и гипот, который является стороной, которую мы пытаемся решить, для которой мы знаем, мы также знаем, учитывая, что оба угла равны 45, что это прямоугольный треугольник 45–45–90. Когда мы использовали функцию синуса для вычисления 45, мы получили это длинное число, теперь мы должны решить для этого числа, другими словами, гипот, разделив противоположную сторону (h = 50) на значение синуса, которое равно 0,707106781. Это даст нам наш окончательный ответ 70,71, в заключение…

x ≈ 70.71

Значит, расстояние между птицей и людьми равно 70,71.

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

  • Сценарий 2 -> Использование TAN для решения AOE

Этот сценарий разыгрывается и записывается так

The height of the given rocket is marked as H & the distance from the observer to the launch site is 975 feet. Using the AOE and a trigonometric function, solve for x where X is the height of the rocket right before the observer looses contact. Note again that the distance represented by DIST is 975 feet from the observer to the launch pad

Этот вопрос переформатирован, вспомните предыдущий раздел, где мы отфильтровали мусор и ищем только основные детали в тексте и вопросе. Это все еще будет сбивать с толку, поэтому давайте разберем его и упростим до следующего.

A observer is looking UP at a rocket taking off at a 29 degree angle, the observer is 975 feet away from the launch pad. Using the AOE find the height of the rocket.

На рисунке показан сценарий ниже

Этот рисунок дает нам все необходимые детали, поэтому, как и раньше, мы упростили наш вопрос, который задавали, теперь давайте отфильтруем важные детали и переменные.

  • Угол для решения = AOE (угол места) или угол от наблюдателя до ракеты.
  • Переменная для решения = h, которая является высотой ракеты.
  • Расстояние от стартовой площадки = 975.

Теперь как насчет того, чтобы выяснить, что мы собираемся использовать для решения этой проблемы? Будем ли мы использовать ТАН? COS? ГРЕХ? Чтобы выяснить это, мы можем изолировать значения в треугольнике, глядя на график, поэтому, учитывая, что мы смотрим с угла возвышения (AOE), мы можем проверить, что смежная сторона угла равна 975 и что мы хотим решить for is h, что является противоположным значением. Напомним, что TAN = opp / adj, что означает, что для решения этого уравнения мы будем использовать TANGENT. Мы знаем наши значения, поэтому мы можем настроить наше уравнение следующим образом.

Высота TAN = opp / смежный

TAN 29° = высота / 975

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

Примечание. Наше число пи = 3,14159274.

Мы можем взять значение числа пи, равное 4,0 * атан (1,0), и мы можем преобразовать градусы, используя степень * пи / 180. Если мы запустим это преобразование, мы получим следующее в качестве нашего радиана

0.506145477

мы можем использовать это как значение подключаемого модуля к касательной, например, tan(0,506145477), что даст результат.

0.554309011

Теперь мы можем использовать это значение для решения остальной части нашего уравнения и упростить его, как мы делали раньше. Обратите внимание, что мы должны пройти тот же пошаговый процесс, наше уравнение, которое мы пытаемся решить, для которого есть h, следующее.

0.554309051 ≈ ℎ / 975

поэтому мы можем решить, используя наши значения, которые мы получили так

0.554309051 * 975 = 540.4513247250001

в свою очередь, наши следующие значения такие

h = 540.45

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

Понимание различий

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

  • Стандартная математика: Стандартная математика — это непосредственное изучение и применение теорий, алгоритмов и различных методов для решения математических концепций или задач. Это будет включать в себя различные символы, символы, единицы измерения, идеи, измерения и многое другое по пути. Это делает математику полностью отличной от вычислительной математики.
  • Вычислительная математика. Вычислительная математика будет отличаться от стандартной математики, поскольку, в отличие от стандартной математики, вычислительная математика фокусируется на выполнении и реализации этих алгоритмов. Например, теорема Пифагора была теоремой, созданной с использованием стандартной математики, но реализованной и выполненной не только на бумаге, но и в компьютерах, однако эта теорема не была создана с использованием вычислительной математики, потому что вычислительная математика фокусируется только на понимании и выполнении этих концепций или теорий, чтобы помочь решить проблемы реального мира. Существует также большое ключевое различие в используемых символах и инструментах, используемых для выполнения этих алгоритмов, которые высечены в камне.

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

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

.mod.

где в таких языках, как golang, вы можете использовать оператор % для создания эффекта по модулю. Не говоря уже о том, когда выполняются эти операции, важно отметить, что эта операция выполняется на языке, на котором был разработан язык программирования. Например, умножение питонов приведет к умножению C, поскольку стандартная операция выполняется через C и выполняется и возвращается из вывода выполнения языков программирования C и собственной интерпретации *, это одинаково даже для самостоятельных языков. Важным моментом здесь является то, что математика изменится, некоторые языки будут выводить лишние десятичные знаки, а другие будут их обрезать, в любом случае 2 * 2 может привести к одному и тому же значению на нескольких языках программирования, но в конце концов форматируется совершенно по-разному. При использовании таких языков, как fortran, языка, который имеет серверную часть, заполненную идентификаторами формата для таких сценариев, как вывод и формат десятичных точек, вы можете не получить желаемого ответа из-за форматирования. Поэтому важно отметить и знать, что не все языки одинаковы и что все языки программирования совершенно разные, и важно изучить бэкэнд и операции языка программирования, который вы изучаете или пытаетесь работать, особенно когда это касается к математике. Теперь, когда это устранено и прояснилось, мы можем, наконец, перейти к разработке наших программ и работе по автоматизации этих решений.

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

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

Реализация нашего первого уравнения

Напомним, что наше первое уравнение имело следующий результат

x ≈ 70.71

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

  • Тип угла: мы будем использовать угол депрессии
  • Градус угла: 45 градусов
  • Высота: 50 футов
  • Решите для: X или расстояние между птицей и наблюдателем или людьми
  • Решение для → гипота треугольника

SIN 45 ГРАДУС = 50 / х

0.85090352453

рад = град * пи / 180

поэтому, если мы подставим наши значения, мы получим

рад = 45 * пи / 180 = пи / 4

SIN(PI / 4)

0.707106769

0.707106769 ≈ 50 / x

x ≈ 70.71

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

  • Установить имена переменных → Это будут значения, которые будет использовать наша программа.
  • Установите наш PI → Нам нужно убедиться, что у нас есть правильное уравнение для этого
  • Преобразовать → Помните, что нам нужно взять заданную степень и преобразовать ее в радианы для нашего аргумента SIN.
  • Store → Сохраните наш вывод из SIN, который должен быть 0,707106769 для последующего использования.
  • Multiple → Умножьте и завершите уравнение, которое будет в 50 раз больше значения синуса 0,707106769.
  • Вернуться → вернуться и завершить наш ответ

Мы можем начать эти шаги, выполнив следующие действия и создав путь и полную реализацию.

Create a program, set the variables of x as our input variable, then create a function which takes a degree as input (x) then convert the values using the calculated pi value to radians then get the sine value and divide the sine value by h ( height ) .

Мы можем выполнить это, выполнив следующие шаги

Создание записи

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

module TrigonometricImplementation 
    IMPLICIT NONE 

    CONTAINS 

        REAL FUNCTION SOLVE(Degree)
            IMPLICIT NONE
            REAL, INTENT(IN) :: Degree
            REAL             :: PI, Rads, Sine
            REAL             :: Final
            pi               = 4.0 * atan(1.0)
            WRITE(*,*) "Using PI = ", pi
            ! 
            ! 4.0 comes from one quarter of pi
            ! we use this because we want to find the sine
            ! of x degrees, and converting degrees to radians
            ! requires the formula 
            !
            ! R = DEG * PI / 100 
            !
            ! say x is 45, we can use the algorithm like so
            !
            ! x sineof = 45 = degrees 
            !
            ! 45 * PI / 180 = PI / 4 
            !
            ! when we get the result and divide PI by 4 we get the value
            ! which represents 45 degrees in radians which is the argument 
            ! that we will use for the SIN function. It may be important to 
            ! note that we need this conversion because SIN takes one 
            ! Positional argument which needs to be a radian.
            !
            !
            !
            !
            Rads  = Degree * pi / 180.0
            Sine = sin(Rads)
        END FUNCTION SOLVE
end module TrigonometricImplementation

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

program main 
    use TrigonometricImplementation
    implicit none 
        REAL :: FinalValue
        REAL :: Inputx
        REAL :: x
    write(*,*) "Enter the value of the degree"
    read(*,*) Inputx
    write(*,*) "Enter the value of the height"
    read(*,*) x
    FinalValue = x / SOLVE(Inputx)
    WRITE(*,*) 'CALC ->', FinalValue
end program main

Когда мы запускаем основной блок программы, мы вызываем использование файла trigometricimplementation.mod, который создается при компиляции нашего двоичного файла main. Мы объявляем неявный блок none для хранения наших значений, а затем считываем эти значения в качестве входных данных от пользователя и внедряем их в переменную, которая делит синус наших вычисленных радианов на x, который является высотой, и, наконец, записываем окончательное значение. Если мы используем эту функцию, мы получим что-то вроде того, что мы хотели для нашего ответа.

Это не наш прямой ответ, однако мы можем сказать Fortran упростить это с помощью выходных идентификаторов.

WRITE(*,'(f9.2)') x / SOLVE(Inputx)

что даст нам

   70.71

Это потому, что мы сообщаем fortran, что вывод должен быть числом с плавающей запятой, состоящим всего из 9 символов, включая 2 десятичных знака. Это значение должно по большей части обрезаться при (большинстве) обстоятельств.

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

Реализация нашего второго вопроса в F95

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

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

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

  • Проблема для решения (ДЛИННОЕ):

The height of the given rocket is marked as H & the distance from the observer to the launch site is 975 fet. Using the AOE and a trigonometric function, solve for x where X is the height of the rocket right before the observer looses contact. Note again that the distance represented by DIST is 975 feet from the observer to the launch pad

  • Проблема для решения (упрощенная):

A observer is looking UP at a rocket taking off at a 29 degree angle, the observer is 975 feet away from the launch pad. Using the AOE find the height of the rocket.

  • Угол для решения = AOE (угол места) или угол от наблюдателя до ракеты.
  • Переменная для решения = h, которая является высотой ракеты.
  • Расстояние от стартовой площадки = 975.

Высота TAN = opp / смежный

TAN 29° = высота / 975

Примечание. Наше число пи = 3,14159274.

0.506145477
0.554309011

0.554309051 ≈ ℎ / 975

0.554309051 * 975 = 540.4513247250001

h = 540.45

Развитие нашего пути логики и нашей логической реализации

Теперь, когда мы установили наши переменные, наш процесс можно записать следующим образом.

write a program to automate user input where h is the height and x is the angle, then make a function inside of that program to convert the degree to radians and finally using tan calculate the radian and finalize your answer.

Мы можем начать писать нашу базу сейчас, это будет то же самое, что и предыдущий модуль, но можете ли вы представить, что мы изменим?

module TrigonometricImplementation 
    IMPLICIT NONE 

    CONTAINS 

        REAL FUNCTION SOLVE(Degree)
            IMPLICIT NONE
            REAL, INTENT(IN) :: Degree
            REAL             :: PI, Rads, Tangent
            REAL             :: Final
            pi               = 4.0 * atan(1.0)
            ! 
            ! 4.0 comes from one quarter of pi
            ! we use this because we want to find the sine
            ! of x degrees, and converting degrees to radians
            ! requires the formula 
            !
            ! R = DEG * PI / 100 
            !
            ! say x is 45, we can use the algorithm like so
            !
            ! x sineof = 45 = degrees 
            !
            ! 45 * PI / 180 = PI / 4 
            !
            ! when we get the result and divide PI by 4 wwe get the value
            ! which represents 45 degrees in radians which is the argument 
            ! that we will use for the SIN function. It may be important to 
            ! note that we need this conversion because SIN takes one 
            ! Positional argument which needs to be a radian.
            !
            !
            !
            !
            Rads  = Degree * pi / 180.0
            Tangent = tan(Rads)
        END FUNCTION SOLVE
end module TrigonometricImplementation

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

program main 
    use TrigonometricImplementation
    implicit none 
        REAL :: FinalValue
        REAL :: Inputx
        real :: x
    write(*,*) "Enter the value of the degree"
    read(*,*) Inputx
    write(*,*) "Enter the value of the height"
    read(*,*) x
    print*, "Answer is = "
    WRITE(*,'(f9.2)') SOLVE(Inputx) * x
end program main

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

Мы получаем точный ответ, который нам нужен! Потрясающий! мы успешно реализовали оба примера и многое узнали в процессе о том, как Фортран обрабатывает математику. Тем не менее, мы еще не закончили, нам действительно нужно сделать еще одну вещь и еще один тренировочный раунд или реализацию. Эта реализация кажется немного более сложной, но следует тому же процессу.

Прогулка по последнему уравнению с fortran 95

Нам дается следующее описание изображения или графика

Показана окружность с вертикальным радиусом. Радиус обозначен как 3963. В верхней части круга находится антенна с номером 1. Горизонтальная касательная проходит от антенны в верхней части круга вправо. Спутник нарисован на правом конце касательной. Гипотенуза проведена от правого конца касательной к центру окружности. Вторая антенна, обозначенная цифрой 2, расположена в точке, где гипотенуза пересекает окружность. Угол между касательной и гипотенузой равен 8,7 градуса.

На следующем рисунке показано, с чем мы столкнулись

Этот рисунок немного сбивает с толку, но на самом деле это не так, он просто полностью отличается от двух последних, которые мы сделали, но он почти такой же!

Решить уравнение

На графике и в описании есть две станции, каждая из которых отражает соединения и лучи от спутника, чтобы добраться до места назначения. Теперь нам нужно выяснить, какова длина пути от первой станции до спутника, возвращающегося обратно на станцию ​​два. Это потребует от нас, в основном, объединения всего, что мы знаем, и всего, чему мы научились, чтобы действительно пройти через это уравнение. Итак, давайте разберем вопрос, чтобы узнать общий путь, нам нужно узнать длину между обоими путями, а затем сложить их вместе. Видите, как это можно сформулировать? Итак, давайте начнем с установки нашей переменной и именованных констант.

NC1 → радиус Земли = 3963

NC2 → Угол на спутник = 8,7 градуса

Теперь мы знаем только два значения, и поначалу это может показаться сложным, но на самом деле мы можем использовать cos, sin и tangent здесь, чтобы действительно понять это, что, в свою очередь, делает это намного проще, чем кажется. Помните, как мы работали с AOD и AOE и как менялись значения и уравнения в зависимости от того, как мы работали с этими сторонами и углами? Что ж, наше текущее уравнение должно будет реализовать эту концепцию.

  • Решение стороны 1 → Очень интересный способ сделать это

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

  • Сторона A = соседняя сторона
  • Сторона B = Гипот

если мы сосредоточимся на стороне а, мы увидим, что наша противоположная сторона имеет значение 3963, но теперь нам нужно найти соседнюю сторону. Напомним, что

TAN = напротив / прил.

так что теперь мы можем настроить нашу функцию для решения этой стороны вот так.

TANx = 3 963 / прил.

и если мы объединим это, мы можем сделать следующее

TAN 8,7° = 3963 / сторона а

мы делаем сторону а, потому что сторона а является нашей соседней стороной

теперь мы можем добавить и сконцентрировать их вместе

а = 3693 / тангенс 8,7 °

когда мы вычисляем это и делаем это деление, снова вычисляя наши радианы, мы получаем следующее

а = 25 898 миль

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

  • Решение стороны 2 → Использование SINE

Символ или вызов, с которым нам нужно будет работать на этот раз, чтобы решить сторону 2, будет SIN. Это потому, что мы можем вспомнить, что

ГРЕХ х = опп / хайп

и если вы помните, как это сделать, мы уже можем определить наш ответ так

Мы знаем, что наши значения составляют 8,7 ° как градус для угла и что противоположное, если смотреть со стороны 2 или стороны b, равно 3963, мы можем составить наше уравнение следующим образом.

SIN 8,7° = 3963 / сторона b

мы делаем тот же процесс для SINE, что и для касательной

б = 3963/sin(8,7°)

Теперь обратите внимание на процесс, который мы должны были сделать раньше, если вы сделаете это правильно, мы получим 26 200. Теперь мы должны вычесть это значение вот так

b = 26,200–3,963

что дает нам

22,237

теперь мы должны взять обе стороны и объединить их вместе, что означает

22,237 + 25,898 = 48, 135

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

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

module TrigonometricImplementation 
    IMPLICIT NONE 

    CONTAINS 

        REAL FUNCTION SolveSIN(Degree)
            IMPLICIT NONE
            REAL, INTENT(IN) :: Degree
            REAL             :: PI, Rads, Sine
            pi               = 4.0 * atan(1.0)
            Rads             = Degree * pi / 180
            Sine             = sin(Rads)
        END FUNCTION SolveSIN

        REAL FUNCTION SolveTAN(Degree)
            IMPLICIT NONE
            REAL, INTENT(IN) :: Degree
            REAL             :: PI, Rads, Tangent
            REAL             :: Final
            pi               = 4.0 * atan(1.0)
            Rads  = Degree * pi / 180.0
            Tangent = tan(Rads)
        END FUNCTION SolveTAN

        SUBROUTINE SOLVESide1(tanofdegree)
                                    ! solving for side one we require the following format 3,693 / tan 8.7° where tan 8.7° is the result from the function SOLVE
            IMPLICIT NONE
            REAL, INTENT(IN) :: tanofdegree
            REAL             :: FinalAnswerForSide1
            INTEGER  :: rad
            rad = 3963
            print*, rad, " / ", tanofdegree, " = "
            print*, rad / tanofdegree
        END SUBROUTINE SOLVESide1

        SUBROUTINE SolveSide2(sinofdegree)
                                ! We use the format b = 3,963 / sin(8.7°) for this equation where sin(8.7°) is the output from SolveSIN(degree)
            IMPLICIT NONE
            REAL, INTENT(IN) :: sinofdegree
            REAL             :: FinalAnswerForSide2
            INTEGER          :: rad
            rad = 3963
            print*, rad, " / ", sinofdegree, " - x = " 
            print*, rad / sinofdegree - rad, " < round to the nearest hundredth "
        END SUBROUTINE SolveSide2

end module TrigonometricImplementation

program main 
    use TrigonometricImplementation
    implicit none 
        REAL :: Inputx, seconddegree
    write(*,*) 'Enter the degree solving for (TAN)'
    read*, Inputx
    write(*,*) 'Enter Second Degree solving for (SIN)'
    read*, seconddegree
    write(*,*) "---------= Settings =--------- "
    write(*,*) "[1] TANGENT  - "
    write(*,*) SolveTAN(Inputx)
    write(*,*) "[2] SINE     - "
    write(*,*) SolveSIN(seconddegree)
    ! now call to solve for individual sides
    write(*,*) "--------= Side one =----------- "
    CALL SOLVESide1(SolveTAN(Inputx))
    write(*,*) "--------= Side two =----------- "
    CALL SolveSide2(SolveSIN(seconddegree))
    CALL ADDBOTHSIDESANDFINAL(SOLVESide1(SolveTAN(Inputx)), SolveSide2(SolveSIN(seconddegree)))
end program main

ВАУ! Весь наш модуль сильно изменился, так что давайте пройдемся по нему. Сначала мы рассмотрим две новые ФУНКЦИИ в верхней части модуля. У нас есть SolveSIN и SolveTAN, которые решают радианы как для SIN, так и для TAN. Теперь, если бы мы захотели, мы могли бы добавить логическую функцию с условными выражениями для определения типа функции, которую мы хотели запустить, но это выходит за рамки этой статьи. Эти функции такие же, как те, которые использовались ранее, только все в том же модуле, поскольку нам понадобились СИНУС и ТАНГЕНТ. Двигаясь дальше, мы видим новое ключевое слово SUBROUTINE, которое указывает fortran объявить подпрограмму, которая в основном предназначена для fortran функции, которая не возвращает никаких данных. Мы не возвращаем данные, потому что если бы мы это сделали, у нас возникли бы проблемы с форматированием, когда нам пришлось бы использовать научные операторы, чтобы указать формат и правильно вывести его на экран. Обе подпрограммы довольно ясно понимают, что они реализуют, первая сторона реализует окончательное уравнение для решения, используя в качестве входных данных тангенс степени, который был тангенсом радиана, который был сделан из преобразованного градуса, так что в основном это идет

→ Градус → Радиан → Тан (радиан) → возврат → ARG[0] → REAL

То же самое и четвертое со второй функцией SolveSide2. Теперь мы можем, наконец, запустить программу и закончить эту статью!

Значения, которые мы возвращаем, не на 1100% соответствуют нашим ожиданиям, и если мы проверим side2 немного больше, мы заметим, что это одно значение меньше, чем должно быть. Это из-за форматирования и того, как математика выполнялась по разделам. На самом деле я сделал это намеренно, потому что, оставив вам лучшую подсказку и задачу, чтобы закончить эту программу самостоятельно, использовать правильные идентификаторы формата и сделать более сильный модуль, вы получите гораздо больше опыта. Но нет нужды говорить, что если мы возьмем второе значение стороны два и стороны один и сложим их вместе

22236 + 25898

мы получаем

48134

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

22236.7812 + 25898.3223

мы получаем наш ответ

48135.1035

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

Заключение и& Резюме

Вау! Вы сделали это, каким-то образом вам удалось пройти через все это, и я, конечно, надеюсь, что вы чему-то научились. Сегодняшняя статья очень сильно отличалась от большинства из них, но мы многому научились и сделали МНОГО, особенно по математике. Сначала мы начали понимать концепцию, почему эта статья существует и термины, которые мы использовали в этой статье, затем мы рассмотрели самые основы математики и разницу между ними. Наконец, мы достигли точки, когда мы создали свои собственные сценарии и проработали каждый из них, а затем реализовали их с помощью фортрана, выделив ключевые различия между стандартной математикой и вычислительной математикой, которая была на 100% ясна к концу.

Заключение

  • Математика — один из самых полезных и мощных навыков, благодаря ей существует все, что мы используем, от автомобилей до телефонов, сетей, компьютеров и даже самого маленького стола. Без тригонометрии у нас в любом случае не было бы столов или домов, без вычислений у нас не было бы трехмерных изображений, без квантовой математики у нас не было бы квантовых компьютеров, которые могут вычислять больше функций, чем мы можем думать, быстрее, чем мы можем мигать! Однако между каждой областью математики есть большая разница, конечно, все они находятся в одной и той же области, и все они являются математикой, но все они имеют разные варианты использования, такие как системы защиты, булева алгебра существует в языках программирования, чтобы помочь с условными операторами где линейная алгебра помогает в векторной математике для реальных приложений, таких как игровые читы, которые являются основными для векторной математики. Каждая поисковая система использует свои собственные алгоритмы и игры! Теперь реализация и вариант использования также имеют значение, как мы обсуждали выше, математика имеет много разных реализаций, особенно в зависимости от языка программирования и проблемы, которую вы пытаетесь решить. В таких случаях, как реверс-инжиниринг, вы можете обнаружить, что мы собираемся использовать алгоритмы намного чаще, потому что нам нужно понять, как компьютерная память глубокого уровня интерпретирует различные типы данных, такие как int32, int16 и float64 или complex128. Основная конечная точка заключается в том, что математика — это все, и это удобный навык, его можно использовать где угодно и когда угодно, и нет причин не использовать его, потому что, опять же, это единственная причина наполовину, если не на 90% вещи в мире существуют сегодня, которые мы используем каждый день.
  • Заключительные мысли о реализации алгоритмов

Как было сказано выше, алгоритмы используются повсеместно, но если вы занимаетесь кибербезопасностью и занимаетесь такой работой, как разработка эксплойтов или работаете над чем-то, что работает на более глубоком уровне компьютера, не забывайте о математике. В долгосрочной перспективе или даже в текущей перспективе это может показаться бесполезным, но это не так, поверьте мне, когда я говорю это из многих написанных мною эксплойтов и программ, которые я разработал в математических областях, таких как булева алгебра, векторная математика и особенно тригонометрия и геометрия. меня больше всего. Это безумие, как сильно вы можете увидеть разницу в своей программе, когда используете алгоритмы для стабилизации производительности или используете определенные логические операции для улучшения работы или даже такие алгоритмы, как алгоритмы линейного и бинарного поиска, ВСЕ ИХ ПОМОГАЮТ. Так что может быть хорошей идеей немного почитать по математике или, по крайней мере, придумать что-нибудь, с чем можно читать или с чем работать. Я объяснял это много раз, особенно в своей статье о разработке внешних читов для игр, что стоит иметь хорошее представление об алгоритмах, используемых приложениями, прежде чем использовать их, поскольку это улучшает ваше понимание того, что вы делаете, и позволяет вам так сильно модифицировать это приложение. более. В этом разделе ниже говорилось о том, как более глубокое понимание алгоритмов может помочь и что оно дает разработчикам эксплойтов, в частности, обманывает разработчиков в этом случае.

Что такое линейное преобразование?

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

T : V -> W

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

«Обычным преобразованием в евклидовой геометрии является вращение в плоскости вокруг начала координат. Рассматривая евклидовы точки как векторы в векторном пространстве \mathbb{R}²R2, повороты можно рассматривать в линейно-алгебраическом смысле. Поворот vv против часовой стрелки на угол \thetaθ определяется выражением

\text{Rotate}(v) = \begin{pmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{pmatrix} v.Rotate(v)=(cosθsinθ​−sinθcosθ​)v.

Линейное преобразование \text{Rotate}Rotate переходит от \mathbb{R}²R2 к \mathbb{R}²R2 и задается матрицей, показанной выше. Поскольку эта матрица обратима для любого значения \thetaθ, отсюда следует, что это линейное преобразование на самом деле является автоморфизмом. Поскольку повороты можно «отменить», повернув в противоположном направлении, это имеет смысл.

Линейные преобразования | Блестящая вики по математике и естественным наукам

Разработчики используют это для преобразования 3D-позиции в позицию на вашем экране с помощью линейного преобразования, поэтому еще раз скажем, что у нас есть один вектор, который в нашем случае и в случае линейного преобразования будет известен как наш входной вектор, который указывает куда угодно. в заданном пространстве вы можете в основном умножить это на заданную матрицу, вы можете перемещать любой вектор одним и тем же предсказуемым образом каждый раз, когда он умножается на данную матрицу. Теперь, чтобы сделать ESP, вам не нужно понимать, как это работает, но всегда приятно это делать, когда мы снова нарисуем линию, как на фото выше, к персонажу, мы должны быть в состоянии захватить игроков X, Y , и ось Z, как только нам удастся это сделать, мы можем перейти к вычислению расстояния до игрока, которое дано нам в игре, которое уже просто скрыто.

Именно так разработчики игр могут создавать такие вещи, как коробки в 3D-пространстве, или преобразовывать мир в пользовательский вид в 3D-пространстве и так далее. Мне очень жаль, если это была не лучшая объясненная часть, я знаю, что это не так, но идея есть, и сейчас это все, что имеет значение! Подводя итог этому разделу, разработчикам, а иногда даже игровым хакерам необходимо использовать такие функции, как функция линейного преобразования, чтобы управлять преобразованием определенных позиций объекта в трехмерном пространстве в позиции на вашем экране. При разработке таких вещей, как ESP, хорошо, чтобы хакеры понимали основы таких вещей, как 3D-векторы и пространства, потому что даже без базового понимания того, как они работают, вы не сможете преобразовать расстояние. Я также хотел отметить тот факт, что точки A и B между игроком в заданном пространстве можно рассматривать как луч или 3D-луч, потому что нет 100% определенной точки двух мест. Скажем, как в приведенном выше чите, у нас есть игроки A и B на этом снимке экрана ниже.

ЗАКЛЮЧИТЕЛЬНОЕ ЗАЯВЛЕНИЕ → Итак, в любом случае, когда вы думаете о себе что-то новое для изучения, это принесет вам пользу, даже если это утомительная математика, и общая информатика принесет вам много пользы. Я говорю информатика, потому что информатика на более глубоком уровне фокусируется на том, как работают системные часы, как числа с плавающей запятой и десятичные числа представлены в компьютере, как выполняются шестнадцатеричные преобразования, выполняются переводы и как можно предсказать определенные точки в компьютер для дальнейшей эксплуатации. Думайте об этом как о предсказании адреса переменной среды перед использованием двоичного файла с использованием переменных среды или чего-то в этом роде.

Наконец-то ~ НОП-НОП-ТРОП-ТРОП!

В любом случае, я надеюсь, что вам понравилась сегодняшняя статья, так как я действительно чувствовал себя в силах поговорить об этом, и я, конечно же, надеюсь, что вы узнали или узнали что-то новое! До тех пор, Totally_Not_A_Haxxer ВЫХОДИТ!

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

  • Гитхаб

ArkAngeL43 — Обзор

  • Cash App (пожертвования приветствуются)

Заплати мне через приложение Cash

  • Инстаграм

https://instagram.com/Totally_Not_A_Haxxer