2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Вопрос по MATLAB'у - кусочно-непрерывная функция
Сообщение14.05.2014, 17:10 
Аватара пользователя


12/03/11
688
Возникла задача немного изменить чужой скрипт. Надо вместо гладкой функции (в inline):
Код:
ut = inline('-exp(-t*2/Rey)*cos(x)*sin(y)','x','y','t','Rey');

использовать другую, при чем кусочно-непрерывную. Я ее оформил в следующем виде:
Код:
function [F]= Funct (a,b)

if (a > 1/4) && (a < 3/4)
    F = 1 - exp(-10*b);
else
    F = 1;
end;
   
end


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

 Профиль  
                  
 
 Re: Вопрос по MATLAB'у - кусочно-непрерывная функция
Сообщение14.05.2014, 20:29 
Заслуженный участник


11/05/08
32166
Не знаю, как её оформить в инлайне, но даже и во внешней функции эта запись работать не будет (вообще говоря). Надо примерно так:

Код:
А=((a > 1/4) && (a < 3/4)).*(1 - exp(-10*b)) + 1*((a<=1/4)||(a < 3/4))

(не помню точно, как в Матлабе кодируются логические операции)

 Профиль  
                  
 
 Re: Вопрос по MATLAB'у - кусочно-непрерывная функция
Сообщение19.05.2014, 12:32 
Аватара пользователя


12/03/11
688
Спасибо, ewert. К сожалению, пока техническая проблема не решается.
Опишу ее подробнее. Быть может совместными усилиями удастся придумать решение.
Есть код:
Код:
function [u,v,p] = Navier_Stokes_thoer( x, y, t, Rey )

ut = inline('-exp(-t*2/Rey)*cos(x)*sin(y)','x','y','t','Rey');
vt = inline('0','x','y','t','Rey');
pt = inline('1','x','y','t','Rey');

m = length(x);
n = length(y);

u = zeros(m,n);
v = zeros(m,n);
p = zeros(m,n);
for k = 1:n
    u(:,k) = ut(x,y(k),t,Rey);
    v(:,k) = vt(x,y(k),t,Rey);
    p(:,k) = pt(x,y(k),t,Rey);
end


Здесь записана функция, которая получает x,y, t, Rey и выдает u,v,p. Вместо ut я хочу вставить разрывную функцию типа той, что описана выше. В инлайне такая запись не работает. Править и менять эту часть скрипта, к сожалению, не вариант, потому что векторный синтаксис этой маленькой функции используется все время дальше в большом скрипте...

 Профиль  
                  
 
 Re: Вопрос по MATLAB'у - кусочно-непрерывная функция
Сообщение19.05.2014, 15:45 
Аватара пользователя


12/03/11
688
Нашел функцию heavisade в MATLAB'е.
С помощью нее можно представить исходную разрывную функцию.
Но она похоже в инлайне тоже не работает :-(

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group