如何在 Matlab 中使用变化的输入/时间相关的输入函数求解 DAE?

2024-04-21

我正在使用 ode15i 求解器求解 DAE 问题。我有 8 个变量和 8 个方程,系统很复杂,到目前为止唯一可用的求解器是 ode15i。

我使用过该指南:http://se.mathworks.com/help/symbolic/set-up-your-dae-problem.html http://se.mathworks.com/help/symbolic/set-up-your-dae-problem.html。但是,本指南无法帮助我解决不同输入的问题。

我的系统有一个与时间相关的输入,一个函数。函数本身很简单,但问题是DAE系统中的时间t是符号形式的,而我的输入函数无法求解相应的输入值,因为它无法计算符号时间值t。

这是我的 DAE 系统的输入函数:

    function [delta] = delta(t)
    t=vpa(t)
       if t <= 1.01
       delta = 0;
       elseif t <= 3.61
       delta = 0.1222;
       elseif t <= 4.33
       delta = 0;
       elseif t <= 7.21
       delta = -0.1222;
       else
       delta = 0;
    end

戴伊问题:

syms v1(t) r1(t) r2(t) r3(t) r4(t) fii(t) sig(t) psi(t);
tspan = 0:0.01:10;
....
a11 = delta(t)-(v1(t)+r1(t)*l_1_1)/u;
....
eqs = [...]
vars [...]
f = daeFunction(eqs,vars);
y0est = zeros(8,1);
yp0est = zeros(8,1);
opt = odeset('RelTol',10.0^(-7),'Abstol',10.0^(-7));
[y0,yp0] = decic(f,0,y0est, [], yp0est, [], opt);
[t,y] = ode15i(f,tspan, y0, yp0, opt);

我收到的错误如下:

Conversion to logical from sym is not possible.
 Error in delta (line 3)
    if t <= 1.01
 Error in Nonlin_painonsiirto_DUO2 (line 181)
 a11 = delta(t)-(v1(t)+r1(t)*l_1_1)/u;

如果 delta 输入是常数或 (t) 的三角函数,则系统可以工作,例如:

delta = 0.0175;
delta = sin(t)*0.0175;

我也尝试过不使用 vpa(t) 命令和使用命令 double(t) 的 delta 函数,但它什么也没做。我还尝试使用系统的时间向量 tspan=0:0.01:10 作为输入,它作为 ode15i 的时间跨度给出:

delta(tspan)

但是,然后它尝试计算整个向量 tspan,这会导致错误,因为矩阵维度不一致。

希望这里的问题是可以理解的,谢谢。

-Jere


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Matlab 中使用变化的输入/时间相关的输入函数求解 DAE? 的相关文章

  • 同时使用两个数组中的元素的过滤器

    假设我们有两个大小相同的数组 A and B 现在 我们需要一个过滤器 对于给定的掩码大小 从以下位置选择元素A 但删除掩码的中心元素 并在其中插入相应的元素B 所以 3x3 伪掩码 看起来类似于 A A A A B A A A A 对平均
  • 检查是否有任何输入元素处于焦点

    我有一个 jquery 脚本 当按下键盘上的任意键时 它会显示一个 div 我想向脚本添加一个条件 仅当页面上没有其他输入区域 文本区域或文本字段 处于焦点时才运行脚本 这样您就可以在页面的其余部分实际键入内容 而无需显示 div docu
  • 计算向量中连续 1 和 0 的数量

    在 Matlab 中我有一个如下所示的向量 0 0 1 1 0 0 0 1 1 0 0 0 0 1 1 1 0 0 0 0 1 0 1 我现在要做的是统计这个向量中1的个数 连续的 1 算作 1 此外 我还想计算 1 之间 0 的平均值和中
  • CSS 隐藏输入按钮值文本

    我目前正在设计一个
  • Matlab,如何获取imagesc生成的结果?

    我读过一些类似的文章 但它们不是我想要的 得到imagesc之后的矩阵 https stackoverflow com questions 14364239 get the matrix after imagesc 14364434 143
  • MATLAB 黑洞变量

    MATLAB 是否有 黑洞 或丢弃变量 假设我正在做类似的事情 rows cols size A 但我不想存储行 是否有一个 黑洞 变量可以让我发送值去死 所以任务就像 BLACKHOLE cols size A 其中 BLACKHOLE
  • 如何将Matlab命令的输出重定向到文件? [复制]

    这个问题在这里已经有答案了 我想将 Matlab 命令的输出重定向或复制到文件中 我怎样才能做到这一点 就我而言 我想使用 UNIX 工具比较两个大型结构diff 示例 我可以在 Matlab 中执行此操作 gt gt s1 s1 a 32
  • Laravel 输入:get() 不起作用

    我正在尝试在 Laravel 4 中使用 post 函数 我的表单有许多字段 在提交时 会转到控制器中的 post 函数 问题是 表单中的字段名称之间有空格 例如 Type 1 是输入的名称 中间有一个空格 现在 当我尝试通过执行以下操作来
  • 在 Matlab、VB6 和 VB.NET 程序之间发送消息的最简单方法

    我们正在将一套数据采集和分析例程从 VB6 程序升级为 VB NET VB6 和 Matlab 程序的混合体 我们希望保持系统模块化 单独的 EXE 以便我们可以轻松创建专门的独立分析程序 而无需不断升级大型应用程序 当所有程序都是用 VB
  • 我的傅立叶逆变换中的尖峰

    我正在尝试在 MATLAB 中比较两个数据集 为此 我需要通过傅里叶变换数据来过滤数据集 对其进行过滤 然后对其进行逆傅里叶变换 然而 当我对数据进行逆傅里叶变换时 我在红色数据集的两端都出现了一个尖峰 图片显示了第一个尖峰 它在开始时应该
  • 如何将向量标准化/非标准化到范围 [-1;1]

    我怎么能够正常化到范围的向量 1 1 我想使用函数norm 因为它会更快 也让我知道我该怎么做非规范化之后的向量正常化 norm对向量进行归一化 使其平方和为 1 如果要对向量进行归一化 使其所有元素都在 0 和 1 之间 则需要使用最小值
  • 非数字输入导致死循环

    由于某种原因 如果用户输入了错误的数据类型 例如 j 或 循环将停止要求输入并继续显示 Enter an integer gt 一遍又一遍 如何让程序处理错误的输入 为什么输入非数字值会导致如此奇怪的行为 define SENTINEL 0
  • 字典条目被覆盖? [复制]

    这个问题在这里已经有答案了 我发现一些输入没有存储在 Python 3 的字典中 运行这段代码 N int input How many lines of subsequent input graph for n in range N st
  • 如何在matlab中绘制彩色一维直方图

    我有一个一维数组 X 其中包含相关系数的统计数据 我想绘制一个彩色直方图 我使用以下代码 histogram X 10 它可以创建具有单色的直方图 现在我想绘制一个直方图 其中每个条形都有不同的颜色 但 FaceColor 选项只能调整整个
  • 在Matlab中将矩阵中的元素i,j设置为i*j

    我想生成一个矩阵 其中 i j 元素等于 i j 其中 i j e g 0 2 3 2 0 6 3 6 0 到目前为止 我已经发现我可以使用这个索引矩阵访问非对角线元素 idx 1 eye 3 但我还没有弄清楚如何将矩阵单元的索引合并到计算
  • 在 MATLAB 中高效地形成动态窗口

    有人可以帮助我提供一种有效的方法 或者帮助我执行提供的代码 以尽可能少的步骤获得相同的结果 我将感激你 我有一个原始数组 A 1 1 1 4 3 4 5 4 4 3 3 1 0 0 2 6 2 6 3 6 6 2 7 4 8 7 2 2 2
  • 使用 python 内置函数进行耦合 ODE

    如果您需要的话 这部分只是背景知识 我正在开发二阶 Kuramoto 模型的数值求解器 下面给出了我用来求 theta 和 omega 导数的函数 n dimensional change in omega def d theta omeg
  • 将 javascript 变量作为 onsubmit href 链接传递到表单/输入字段

    id 喜欢有一个输入框 用户可以在其中输入搜索词 该搜索词可能会传递给一个 javascript 函数 然后该函数将一些 url 段与搜索词组合起来 创建一个完整的 url 到目前为止 它在没有表单的情况下工作正常 但我想向其中添加一个表单
  • 如何检测图像中对象的实例?

    我有一张包含几个特定对象的图像 我想检测这些物体在该图像中的位置 为此 我有一些模型图像 其中包含我想要检测的对象 这些图像在我想要检测的对象实例周围得到了很好的裁剪 这是一个例子 在这张大图里 我想检测此模型图像中表示的对象 自从你最初发
  • Microsoft Visual C++ 2008 和 R2007b 的 Mex 类型

    我想对 vs2008 和 matlab2007b 使用 mex 类型 我尝试了下面的代码 include

随机推荐