How to solve ODE match problem ?

1 次查看(过去 30 天)
my code is
global r;
y0=zeros(1,r^3);
t=[0,10];
[x,y]=ode23('diffusion',t,y0);
And the diffusion function is(I've simplified the code)
function [ c ] = diffusion(t,f)
global r;
for x=0:r-1
for y=0:r-1
for z=0:r-1
df(x*r*r+y*r+z+1)=f(x*r*r+y*r+z+1)*d;
end
end
end
c=df(:);
end
_Then the problem is
"错误使用 odearguments (line 90) Number of rows in exponent vector Alpha and volatility matrix Sigma must match.
出错 ode23 (line 114) odearguments(FcnHandlesUsed, solver_name, ode, tspan, y0, options, varargin);
出错 dif (line 10) [x,y]=ode23('diffusion',t,y0);"
How to solve this problem? Thanks a lot. If you want, you can download all my code.

采纳的回答

Walter Roberson
Walter Roberson 2017-9-12
The Finance diffusion class constructor https://www.mathworks.com/help/finance/diffusion_constructor.html is taking priority over your local diffusion function.
Have a look at https://www.mathworks.com/help/matlab/matlab_prog/function-precedence-order.html and see that @ class constructors are step 7 but functions in the current folder are step 9.
The easiest fix is to rename your diffusion function to something else.
  1 个评论
Victor Kang
Victor Kang 2017-9-13
Thanks! It is clearly that I've made a foolish mistake that my function's name is same as the diffusion tools. Without your help, I may wast more hours in it. Thanks a lot.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 数学 的更多信息

Community Treasure Hunt

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

Start Hunting!