ode45 - nonscalar

조회 수: 1 (최근 30일)
John Barr
John Barr 2020년 4월 6일
답변: James Tursa 2020년 4월 6일
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
madhan ravi
madhan ravi 2020년 4월 6일
편집: madhan ravi 2020년 4월 6일
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 2020년 4월 6일
It is not, no, it builds further on that question however.

댓글을 달려면 로그인하십시오.

답변 (1개)

James Tursa
James Tursa 2020년 4월 6일
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( ).

카테고리

Help CenterFile Exchange에서 Ordinary Differential Equations에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by