MATLAB中的Ode45

时间:2017-12-22 16:48:47

标签: matlab ode45

我是MATLAB的新手,我试图使用ode45()函数集成两个函数。我的代码:

[w,x] = ode45( @(w,x) ( TSII - TFII ) * w , [0 2], 0 );

TSII TFII 是包含我的两个函数值的列向量1x151。 w 还没有任何价值,但我已经尝试将其设为一个充满零长度1x151的列向量,但这并没有解决我的问题。

我收到以下错误消息:

  

@(W,X)(TSII-TFII)*W returns a vector of length 151, but the length of initial conditions vector is 1

@(W,X)(TSII-TFII)*W返回的向量和初始条件向量必须具有相同数量的元素。

是否可以将初始条件向量更改为与TSIITFII相同的长度?

或者,我应该使用内部带有ode45()的循环来制作151个值吗?

1 个答案:

答案 0 :(得分:0)

我猜了一下,但试一试:

ode45()希望您的匿名函数@(w,x)在位置x处插入函数值。如果TSII和TFII在写入时是表格函数值,则不会返回预期结果。

您应该使用[interp1][1](TSII,x)而不是TSII之类的内容。你的功能应该如下:

@(w,x) ( interp1(TSII,x) - interp1(TFII,x) ) .* w

还要注意元素明智乘法的.*