2013-11-20 3 views
0

Я пытаюсь решить дифференциальное уравнение с использованием ode45 в Matlab. Я бегу два сценария:Как изменить значение параметра внутри решателя ode45 Matlab

function xdot=linearproblem(t,x) 

global kappa mass F 

xdot(1)=-(kappa/mass)*x(2)+(F/mass)*(cos(omega1*t)); 
xdot(2)=x(1); 

xdot=xdot'; 

end 

Затем во втором сценарии, у меня есть

close all 
clear 
clc 

global kappa mass F 

kappa=4; 
F=2; 
mass=0.5; 
options=odeset('omega1',[1.4 1.5 1.6]); 

[t x]=ode45(@linearproblem,0:0.005:100,[0 0],options); 
a=x(8000,2); 

omega1=omega1' 
a=a' 

Я пытаюсь решить уравнение с помощью трех значений omega1, но это дает мне сообщение об ошибке:

Error using odeset (line 226) 
Unrecognized property name 'omega1'. 

Error in frequencysweep (line 12) 
options=odeset('omega1',1.4); 

Я попытался определения omega1 в качестве аргумента: function xdot=linearproblem(t,x,omega1), но это не помогло.

ответ

1

В справочной системе или документации по odeset нет параметра omega1. Эта функция предназначена для установки параметров для ode45 (или других решателей ODE), а не для передачи ваших собственных значений в функцию интеграции.

И не используйте глобальные переменные.There's no need in this case and most others. Вместо этого используйте анонимную функцию, чтобы передать параметры:

@(t,x)linearproblem(t,x,kappa,mass,F) 

и убедитесь, что сама linearproblem функция также принимает эти параметры в качестве входных данных. Может быть, omega1 должен быть принят таким же образом:

@(t,x)linearproblem(t,x,omega1,kappa,mass,F) 

(Тем не менее, вы получите сообщение об ошибке в качестве первого ydot уравнения правым стороны будет вектор, но xdot(1) это единственный элемент - может пройти omega1(i) и используйте цикл for вокруг ваших звонков на ode45?)

+0

Спасибо. yup я использовал цикл для хранения значений omega 1 в файле, а затем решил оду. Он работал хорошо. – user3014799

+0

@ user3014799: Помог ли мой ответ решить вашу проблему? Если это было полезно, пожалуйста, примите его. Спасибо. – horchler

Смежные вопросы