ode45 - nonscalar
조회 수: 1 (최근 30일)
이전 댓글 표시
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
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
답변 (1개)
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( ).
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Ordinary Differential Equations에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!