首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Matlab ode45迭代问题

Matlab ode45迭代问题
EN

Stack Overflow用户
提问于 2019-05-19 17:09:06
回答 1查看 52关注 0票数 0

我试着用ode45函数解微分方程。

其中,参数C1、C2、C3和C4是大小为1:1001的列向量。我想要做的是把它们放在ode45 (fun.m)引用的函数中,并在等式中使用它们,但我希望每次迭代后这些值都会改变。例如,开始时我想要的C1值是C1(1),下一次迭代是C1(2),下一次迭代是C1(3),依此类推。

我的代码:

代码语言:javascript
复制
[t1,X2]=deal(cell(numel(C1),1));
[t1,X2]=deal(cell(numel(C2),1));
[t1,X2]=deal(cell(numel(C3),1));
[t1,X2]=deal(cell(numel(C4),1));
for k = 1:numel(C1)
    [t1{k},X2{k}] = ode45(@(t,x)fun(t,x,C1(k),C2(k),C3(k),C4(k)),t0,X01);
end

代码开始给我1001x1个只有括号的单元格,像这样的"[]“,每个括号里面都是空的。每个C都是1x1001双精度的,并且都有值。

EN

回答 1

Stack Overflow用户

发布于 2019-05-19 17:33:10

You C1 to C4是单元格而不是矩阵。因此,如果您这样访问它:

代码语言:javascript
复制
C1(k)

结果将是:

代码语言:javascript
复制
ans =

  1×1 cell array

    {value}

但是你直接需要这个值,所以简单的调用:

代码语言:javascript
复制
C1{k}

然后得到这样的答案:

代码语言:javascript
复制
ans =

    value

这是您的求解器调用,并提供了更改:

代码语言:javascript
复制
[t1{k},X2{k}] = ode45(@(t,x)fun(t,x,C1{k},C2{k},C3{k},C4{k}),t0,X01);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56206317

复制
相关文章

相似问题

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