首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Matlab求解常微分方程在状态空间系统中的应用

Matlab求解常微分方程在状态空间系统中的应用
EN

Stack Overflow用户
提问于 2012-01-27 12:05:33
回答 1查看 4.2K关注 0票数 0

我在State System,在边界上有“强制”输入。我的SS方程是: zp = A*z * B。(A是一个方阵,B列)

如果B是一个步骤(沿着经验的时间),没有问题,因为我可以使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  tevent = 2;
  tmax= 5*tevent;

  n =100;
  dT = n/tmax;
  t = linspace(0,tmax,n);
  u0 = 1 * ones(size(z'));
  B = zeros(nz,n);
  B(1,1)= utop(1)';
  A = eye(nz,nz);

  [tt,u]=ode23('SS',t,u0);

而SS是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  function zp = SS(t,z)
          global A B
          zp = A*z + B;
  end

我的问题是我什么时候应用了斜率,所以B将是时间相关的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  utop_init= 20;
  utop_final = 50;
  utop(1)=utop_init;
  utop(tevent * dT)=utop_final;

  for k = 2: tevent*dT -1
      utop(k) = utop(k-1) +(( utop(tevent * dT) - utop(1))/(tevent * dT));
  end

  for k = (tevent * dT) +1 :(tmax*dT)
      utop(k) = utop(k-1);
  end

  global A B
  B = zeros(nz,1);
  B(1,1:n) = utop(:)';
  A = eye(nz,nz);

我写了一个新的等式(试图解决),这个问题,但我不能调整“时间步长”,我得不到22x100的u(这是目标)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  for k = 2 : n
  u=solveSS(t,k,u0);
  end

SolveSS的代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function [ u ] = solveSS( t,k,u0)

  tspan = [t(k-1) t(k)];

  [t,u] = ode15s(@SS,tspan,u0);

      function zp = SS(t,z)
          global A B
          zp = A*z + B(:,k-1);
      end

  end

希望你能帮上忙!

EN

回答 1

Stack Overflow用户

发布于 2012-01-27 17:33:07

您应该定义一个随t不断变化的函数B,并将其作为函数句柄传递。这样,您将允许ODE求解器有效地调整时间步长(您使用ode15s,一个严格的ODE求解器,表明可变时间步长甚至更重要)

代码的形式如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function [ u ] = solveSS( t,k,u0)

    tspan = [t(k-1) t(k)];

    [t,u] = ode15s(@SS,tspan,u0,@B);

        function y = B(x)
            %% insert B calculation
        end

        function zp = SS(t,z,B)
            global A
            zp = A*z + B(t);
        end

    end
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9033033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文