Я разрабатываю небольшую утилиту, которая вычисляет уравнение в частных производных в MATLAB
. Я получаю сообщение об ошибке неверного синтаксиса:
Parse error at '[' : usage might be invalid MATLAB syntax
в вызове функции, но я не понимаю, почему:
Ниже кода, который я использую для main_routine.m
:
% pde operations ..
% Explicit (nonstiff) integration
if(mf == 1)
[t,u] = ode45(@pde_1, tout, u0, options);
end
%
% Implicit (sparse stiff) integration
if(mf == 2)
S = jpattern_num;
options = odeset(options, 'JPattern', S)
[t,u] = ode15s(@pde_1, tout, u0, options);
end
Вызов функции jpattern_num.m
, где ошибка:
function S = jpattern_num
global n
% Set independent, dependent variables for the calculation
% of the sparsity pattern
tbase = 0;
for i=1:n
ybase(i) = 0.5;
end
ybase = ybase';
%
% Compute the corresponding derivative vector
ytbase = pde_1(tbase,ybase);
fac[]; % <-- Error Here but don't know wy
thresh = 1e-16;
vectorized = 'on';
[Jac,fac] = numjac(@pde_1, tbase, ybase, ytbase, thresh, fac, vectorized);
%
% Replace nonzero elements by "1" (so as to create a "0-1" map of the
% Jacobian matrix)
S = spones(sparse(Jac));
%
% Plot the map ….
Что я пробовал до сих пор:
1) Я думал что это была просто проблема объявления массива, но ошибка не исчезла. Я просмотрел официальную документацию , чтобы дважды проверить возможные несоответствия, но не смог найти ошибку.
2) Этот источник был очень полезен, так как у пользователя было похожее проект. Я применил ту же модификацию:
из
fac[];
Я применил
fac();
Но это, к сожалению, не решило проблему.
3 Я больше покопался в возможной причине проблемы и наткнулся на этот источник , который всегда из официальной документации. Я применил то, что было рекомендовано, но проблема все еще сохраняется.
Пожалуйста, если у кого-то возникла подобная проблема, посоветуйте, как решить эту проблему, и укажите правильное направление.