Jump to content

    
Sign in to follow this  
sour

Моделирование обьекта на ПК

Recommended Posts

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

 

y(t) = y0*exp(0.88*g*t) - х, где y0 - начальное значение, g - подпитка, x - расход, exp() - экспонента:), t - время

 

К примеру, мне надо построить график - в маткаде без проблем, 5, 15 секунд - все отлично. А вот как описать это в алгоритме, я не совсем понимаю.. Ведь в программе уравнение будет в цикле, счетчик t будет инкрементироваться, и через пару сотен секунд будет оказывать влияние на результат куда больше, чем подпитка.. избавляться от t нельзя - начальные значение исказятся.. Какие методы необходимо применять для переноса алгоритма для непрерывного вычисления в цикле?

Share this post


Link to post
Share on other sites

У Вас зависимость только от времени? Другие параметры - константы?

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

Либо уточните вопрос, если не так Вас понял.

Edited by DTF

Share this post


Link to post
Share on other sites
У Вас зависимость только от времени? Другие параметры - константы?

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

Либо уточните вопрос, если не так Вас понял.

экспонента считается через разложение в степенной ряд Тейлора

 

exp(x)=sum(x.^n/n!) n=0.........k

k- любое целое положительное число

http://ru.wikipedia.org/wiki/Экспонента

 

Share this post


Link to post
Share on other sites
экспонента считается через разложение в степенной ряд Тейлора

 

exp(x)=sum(x.^n/n!) n=0.........k

k- любое целое положительное число

http://ru.wikipedia.org/wiki/Экспонента

Ваш ответ, видимо, адресован автору темы? Насколько я понял, у него вопрос не в том, как посчитать экспоненту.

 

Share this post


Link to post
Share on other sites
Ваш ответ, видимо, адресован автору темы? Насколько я понял, у него вопрос не в том, как посчитать экспоненту.

Конечно

 

А как ВЫ думали компутер считает синусы-косинусы Бессели и экспоненты? Через разложение в степенной ряд

или Вы знете другие алгоритмы расчета таких функций?

Share this post


Link to post
Share on other sites
Есть простейшая матмодель некоторого объекта... Какие методы необходимо применять для переноса алгоритма для непрерывного вычисления в цикле?

Если я Вас правильно понял, то как вариант: организуете массив, и в том же цикле, после завершения счета очередной итерации, записываете туда интересующие параметры. После завершения расчета переписываете массив в файл в формате понятном для программы рисования графиков. (Можно,конечно, сразу писать в файл - но это медленнее, или передавать программе рисования значения для каждого значения, например по технологии OLE, если программа рисования его поддерживает :)).

 

Share this post


Link to post
Share on other sites
У Вас зависимость только от времени? Другие параметры - константы?

Как Вы пишите, так оно и будет, другого не дано - все согласно Вашему уравнению. С ростом времени будет расти аргумент экспоненты, экспонента и сама функция.

Подпитка изменяется также. Да будет расти, но до определенного значение. Вот график принебольшом расходе

post-59745-1295784577_thumb.png

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

post-59745-1295784583_thumb.png

Вот меня и интересует - можно ли как-то упростить зависимость от временой составляющей? например, по окончанию переходного процесса приравнять ее к 1, а при внесении возмущения снова запускать счетчик?

 

экспонента считается через разложение в степенной ряд Тейлора

Спасибо, и это пригодится:)

 

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

Мне не столько графики нужны, сколько непрерывный ввыод информации о уровне и подпитке..

Share this post


Link to post
Share on other sites
Guest TSerg

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

Все эти Ваши подпитки, расходы и пр., это воздействующие факторы на некоторую физическую сущность.

Как только Вы составите ее модель, а также модель "подпиток" - все станет на свои места.

Результат ( графики ) Вы будете получать как следствие моделирования Вашей динамической системы.

Все остальное - ненужная потеря времени, подгонка и т.д.

 

Share this post


Link to post
Share on other sites
Есть простейшая матмодель некоторого обьекта ... y(t) = y0*exp(0.88*g*t) - х

 

Судя по графикам, у вас не совсем простейшая модель, т.к. y=f(t), g=f(t), x=f(t).

Действительно при неконтролируемом увеличении t будет иметь место как переполнение буферов, так и потеря точности.

Как обычно исходной информации минимум, поэтому решение в общем виде: работайте с производными, задайте

кванты времени, приведите формулу к ним, проанализируйте граничные условия всех переменных (min/max)

за выбранный квант времени, проверьте разрядность АЦП и требуемую точность. Другими словами-

уйдите от "времени".

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this