2014 dxdy logo

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

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




 
 Matlab, численное решение ДУ (ode23, ode...)
Сообщение01.04.2017, 06:22 
Вот пытаюсь решить простейшее ДУ (упростил ситуацию донельзя)
$\frac{dx}{dt}=-x$

Пробую через анонимную функцию
Код:
f = @(xx) -xx;
[t1,x] = ode23(f,[0 1],1);

Получаю:
Цитата:
??? Error using ==> @(xx)-xx
Too many input arguments.

Error in ==> odearguments at 111
f0 = feval(ode,t0,y0,args{:}); % ODE15I sets args{1} to yp0.

Error in ==> ode23 at 172
[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...

Error in ==> k23_48 at 36
[t1,x] = ode23(f,[0 1],1);

-------------------
Выношу в отдельный m-файл
Код:
function f=ff(xx)
f=-xx;

Делаю
Код:
[t1,x] = ode23(ff,[0 1],1);

Получаю:
Цитата:
??? Input argument "xx" is undefined.
Error in ==> ff at 2
f=-xx;

Что не так с синтаксисом?

 
 
 
 Re: Matlab, численное решение ДУ (ode23, ode...)
Сообщение01.04.2017, 08:12 
См. в справке сколько должно быть аргументов у (задающей правую часть уравнения) функции и как её передавать в ode23.
Используется синтаксис Matlab M
>> [t1,x] = ode23(@ff,[0 1],1);
??? Error using ==> ff
Too many input arguments.

Error in ==> C:\MATLAB6p5\toolbox\matlab\funfun\private\odearguments.m
On line 104  ==> f0 = feval(ode,t0,y0,args{:});

Error in ==> C:\MATLAB6p5\toolbox\matlab\funfun\ode23.m
On line 154  ==> [neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, args, ...

Добавляем второй аргумент
Используется синтаксис Matlab M
function f=ff(t, xx)
f=-xx;
Теперь [t1,x] = ode23(@ff,[0 1],1); или [t1,x] = ode23('ff',[0 1],1); будет работать.

 
 
 
 
Сообщение01.04.2017, 09:24 
Спасибо!
Оба варианта зафурычили!

 i  GAA:
Если будут новые вопросы по этой теме, то создайте, пожалуйста, после чтения справки и учебников новую ветку. Эта ветка закрыта.

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


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