2014 dxdy logo

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

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




 
 Вопрос по MATLAB'у - кусочно-непрерывная функция
Сообщение14.05.2014, 17:10 
Аватара пользователя
Возникла задача немного изменить чужой скрипт. Надо вместо гладкой функции (в 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 
Не знаю, как её оформить в инлайне, но даже и во внешней функции эта запись работать не будет (вообще говоря). Надо примерно так:

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

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

 
 
 
 Re: Вопрос по MATLAB'у - кусочно-непрерывная функция
Сообщение19.05.2014, 12:32 
Аватара пользователя
Спасибо, 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 
Аватара пользователя
Нашел функцию heavisade в MATLAB'е.
С помощью нее можно представить исходную разрывную функцию.
Но она похоже в инлайне тоже не работает :-(

 
 
 [ Сообщений: 4 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group