All streams
Search
Write a publication
Pull to refresh
5
0
Филя @FeelUs

User

Send message

Механическая модель электрических цепей

Reading time7 min
Views20K
Здесь даже можно будет замоделировать трансформатор и операционный усилитель, но все по порядку.

Электрические цепи можно описать следующими уравнениями:

  • U=\dot \Phi; \qquad \Phi=LI\qquad- для катушки
  • I=\dot Q; \qquad Q=CU\qquad- для конденсатора
  • U=RI\qquad- для резистора

(Напряжение падения на катушке равно минус ЭДС)

В механике есть следующие уравнения:

  • F=\dot p; \qquad p=mv \qquad- для массивного тела
  • v=\dot x; \qquad x=(1/k)F \qquad- для пружины
  • F=\mu v \qquad- для вязкого трения

(Внешняя сила, действующая на пружину равна минус силе состороны пружины, если в точке приложение силы нет массы)

Как вы наверно догадались, электрические и механические величины можно сопоставить двумя способами:
электро мех.1 мех.2
U F v
I v F
Ф p x
Q x p
L m 1/k
C 1/k m
R \mu 1/\mu

Читать дальше →

Способ написания синтаксических анализаторов на c++

Reading time11 min
Views33K
В этой статье рассказывается, как писать синтаксические анализаторы с помощью этой небольшой библиотеки на с++.

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

Например, элемент xml состоит из открывающего тега, содержимого и закрывающего тега. —> Открывающий тег состоит из '<', имени тега, возможно пустого списка атрибутов и '>'. —> Закрывающий тег состоит из '</', имени тега и '>'. —> Атрибут состоит из имени, знаков '=', '"', строки символов и снова '"'. —> Содержимое в свою очередь тоже может содержать элементы. —> И т.д. Таким образом, после разбора получается синтаксическое дерево.

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

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

Например для БНФ вида expr ::= expr1 expr2 expr3 будем писать такую функцию:
Читать дальше →

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity