Передайте внешнюю переменную в функцию sove с lsode в октаве - PullRequest
0 голосов
/ 03 февраля 2019

У меня есть функция, которую я хочу решить с помощью lsode, например:

function f = fcn(x,t)
  % Set spring stiffness and mass
  k = 500;
  m = 5;

  % Assign function
  f1 = x(2);
  f2 = -(k/m)*x(1);
  f = [f1; f2];
 endfunction

И вот сценарий, который вызывает эту функцию:

% Initial value
x0 = [0.2, 0];

%time
t = linspace(0,1,500);

[X] = lsode (@fcn, x0, t);
plot(t,X(:,1));

Теперь я хочузациклить этот сценарий, но каждый раз, когда я хочу другое значение «к».Функция, которую нужно решить с помощью lsode, должна принимать только «x» и «t» в качестве аргумента, тогда я не могу поместить «k» в список аргументов.

Я не могу использовать анонимную функцию,потому что реальная функция, которую я изучаю, более сложная (не просто линейный генератор).

...