ode45 - nonscalar

1 Ansicht (letzte 30 Tage)
John Barr
John Barr am 6 Apr. 2020
Beantwortet: James Tursa am 6 Apr. 2020
Does anyone know what's wrong with this code?
F(1) = @(X, T) -50*(X*(1-0.167*(1-X))^0.5 - 2.2*(1-X)/(exp(-11.02+11570/T))/(exp(-14.96+11070/T)+(exp(-1.331+2331/T))*(1-X))^2);
F(2) = @(X, T) -4.1*(T-673.2)+ 10200*(X(1-0.167*(1-X))^0.5 - 2.2*(1-X)/(exp(-11.02+11570/T))/(exp(-14.96+11070/T)+(exp(-1.331+2331/T))*(1-X))^2);
F = F';
initialconditions = [1, 673.2];
zspan = [0 1];
[X,T] = ode45(F, zspan, initialconditions);
I keep on getting the error "Nonscalar arrays of function handles are not allowed; use cell arrays instead." and I'm not sure what it refers to.
  2 Kommentare
madhan ravi
madhan ravi am 6 Apr. 2020
Bearbeitet: madhan ravi am 6 Apr. 2020
Isn’t this the same question that you asked previously? https://www.mathworks.com/matlabcentral/answers/515898-column-vector-nonscalar-arrays
John Barr
John Barr am 6 Apr. 2020
It is not, no, it builds further on that question however.

Melden Sie sich an, um zu kommentieren.

Antworten (1)

James Tursa
James Tursa am 6 Apr. 2020
I suppose you could do something like this instead:
F{1} = etc.
F{2} = etc.
F = F';
f = @(X,T)cell2mat(cellfun(@(c)c(X,T),F,'uni',false));
and then pass f to ode45( ).

Kategorien

Mehr zu Programming finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by