1

我对 MATLAB 很陌生,我正在尝试使用该函数集成两个ode45()函数。我的代码:

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

其中TSIITFII是包含我的两个函数的值的列向量 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和初始条件向量必须具有相同数量的元素。

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

或者,我应该使用ode45()内部循环来生成 151 个值吗?

4

1 回答 1

0

我猜了一下,但试一试:

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

您应该使用类似的东西interp1(TSII,x)而不是TSII. 您的函数应如下所示:

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

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

于 2017-12-22T21:35:13.257 回答