在 Matlab 中使用 ode45 求解 y'=y 和 y'=t
using ode45 to solve y'=y adnd y'=t in Matlab
我首先为 dy/dt=y 和 dy/dt=t 定义了函数:
function dy=d(y):
dy=y
end
function ddy=dd(t):
ddy=t
end
然后我分别使用了ode45:
[t,y]=ode45('d',[1 10],1)
[t,y]=ode45('dd',[1 10],1)
其中 returns 以下错误:使用 d 时出错
输入参数过多。
我的问题是:
- 我哪里错了?
- Matlab怎么知道y还是t是自变量?当我定义第一个函数时,它可以合理地解释为 dt/dy=y 而不是 dy/dt=y。是否有定义函数的内置约定?
第一件事:ode45
上的文档在 mathworks 网站上,或者您可以通过输入 help ode45
从控制台获取它们。
你传入的函数需要带两个变量,y
然后t
。正如您所注意到的,仅使用一个就不可能区分仅 y
的函数和仅 t
的函数。第一个参数必须是独立的,第二个是依赖的。
尝试将您的函数定义为具有相同主体的 dy = d(t, y)
和 ddy = dd(t, y)
。
另请注意,虽然使用表示函数名称的字符串应该有效,但您可以使用 @d
和 @dd
直接引用函数。
我首先为 dy/dt=y 和 dy/dt=t 定义了函数:
function dy=d(y):
dy=y
end
function ddy=dd(t):
ddy=t
end
然后我分别使用了ode45:
[t,y]=ode45('d',[1 10],1)
[t,y]=ode45('dd',[1 10],1)
其中 returns 以下错误:使用 d 时出错 输入参数过多。
我的问题是:
- 我哪里错了?
- Matlab怎么知道y还是t是自变量?当我定义第一个函数时,它可以合理地解释为 dt/dy=y 而不是 dy/dt=y。是否有定义函数的内置约定?
第一件事:ode45
上的文档在 mathworks 网站上,或者您可以通过输入 help ode45
从控制台获取它们。
你传入的函数需要带两个变量,y
然后t
。正如您所注意到的,仅使用一个就不可能区分仅 y
的函数和仅 t
的函数。第一个参数必须是独立的,第二个是依赖的。
尝试将您的函数定义为具有相同主体的 dy = d(t, y)
和 ddy = dd(t, y)
。
另请注意,虽然使用表示函数名称的字符串应该有效,但您可以使用 @d
和 @dd
直接引用函数。