首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ode45和deval时出错

使用ode45和deval时出错
EN

Stack Overflow用户
提问于 2014-10-12 16:08:13
回答 1查看 1.8K关注 0票数 1

我试图积分一组常微分方程,并在给定的点上计算解及其一阶导数。Matlab提供了求解方程的"ode45“和计算解及其一阶导数的"deval”,但是在我的情况下,我无法使用它们。

Matlab给出了以下示例:

sol =ode45(@sol 1,0 20,2 0); X=直线空间(0,20,100); Y= deval(sol,1); 地块(x,y);

我猜"vdp1“是由Matlab定义的,这个例子运行得很好。但是,当我尝试使用以下代码时:

sol =ode45(‘vdp1 1’,0.20,2.0); X=直线空间(0,20,100); Y= deval(sol,1); 图(x,y);它声称错误:

使用deval (第46行)溶胶的错误必须是由微分方程求解器返回的结构。

因此,我认为我必须在"ode45“中使用”@vdp1 1“,而不是”vdp1“,否则"deval”将无法工作。

但在我的例子中,我在一个文件中将我的导数定义为:

代码语言:javascript
复制
function dv = der( ~,vec,~,alpha, eta, m )
%UNTITLED4 Summary of this function goes here
%   Detailed explanation goes here

vx=vec(1);
vy=vec(2);
vz=vec(3);

dv(1,1)=(alpha-eta*vx)/m;
dv(2,1)=(alpha-eta*vy)/m;
dv(3,1)=(alpha-eta*vz)/m;

end

我可以用以下代码使用"ode45“来求解方程:

代码语言:javascript
复制
clear all;

% Parameters 
alpha=10;
eta=0.5;
m=1;

% Inititial conditions
vec_ini=[0,0,0]';

% Integration time
Tf=10;

OPTIONS=odeset('abstol',1e-6,'reltol',1e-6);

sol=ode45('der',[0,Tf],vec_ini,OPTIONS,alpha,eta,m);

密码有效。但是,当我再添加两行来使用"deval“时,如下所示

代码语言:javascript
复制
tvec=linspace(0,Tf,10);

[sxint,spxint]=deval(sol,tvec);

它说:

使用deval错误(第46行) sol必须是由微分方程求解器返回的结构。

如果我将ode45部件更改为

代码语言:javascript
复制
sol=ode45(@der,[0,Tf],vec_ini,OPTIONS,alpha,eta,m);

上面写着

错误使用der (第9行) 输入参数不够。 O参数中的错误(第88行) f0 = feval(ode,t0,y0,args{:});% ODE15I将args{1}设置为yp0。 ode45中的错误(第114行) . tspan =‘tspan 1’> t0,tfinal,tdir,y0,f0,odeArgs,odeFcn,

那么,有人能告诉我如何使用"ode45“和"deval”来计算解决方案及其与客户定义的导数的一次导数吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-12 21:02:59

我认为您没有正确地使用函数句柄。我建议重写您的der函数如下:

代码语言:javascript
复制
function dv = der( t,y,params )

vx=y(1);
vy=y(2);
vz=y(3);

dv(1,1)=(params(1)-params(2)*vx)/params(3);
dv(2,1)=(params(1)-params(2)*vy)/params(3);
dv(3,1)=(params(1)-params(2)*vz)/params(3);

end

然后按以下方式求解ode

代码语言:javascript
复制
params = [alpha eta m];
sol=ode45(@(t,y) der(t,y,params),[0,Tf],vec_ini,OPTIONS);
tvec=linspace(0,Tf,10);
[sxint,spxint]=deval(sol,tvec);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26327129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档