当前位置: 首页 > 知识库问答 >
问题:

用MATLAB求解一个ODEs系统?

松增
2023-03-14

这是我第一次发帖,所以如果你需要更多的信息或者我没有做正确的事情,请让我知道!

F=@(t,x) [
.the RHS of my first order ODES.
];


[t x]=ode45(F,[Range], [Initial conditions]);

其中f(a)可以是另一个基于常数的函数a。

我已经按照以下顺序设置了我的代码;

常数,然后是f(a)形式的方程,然后是我的微分方程,后面是ode45求解器和plot命令。然而,我得到了几个错误“未定义的函数或变量”,因为早期的方程依赖于变量/方程,直到后来才被定义。

非常感谢您的帮助:)

正如建议的,这里是我的代码类型的示例;

`%Constants
a=34
b=31
c=20
%Equations
A=b*cos(2*pi)
B=a*EQ1
C=c*x(2)
%DifferentialEquations
EQ1=x(1)*A
EQ2=(EQ3-EQ1)*(B-C)
EQ3=x(2)*x(3)
F=@(t,x) [EQ1;EQ2;EQ3;];[t x]=ode45(F,[0 10], [0 0 0 ]);

共有1个答案

周翰池
2023-03-14

根据注释,您试图在定义变量之前使用它。在MATLAB中,你需要定义你的变量和函数,然后再使用它们。因为方程是彼此的函数,所以您可以使用匿名函数来定义f

示例:

a=34;
b=31;
c=20;
A = b*cos(2*pi);
EQ1 = @(x) x(1)*A;
B = @(x) a*EQ1(x);
C = @(x) c*x(2);
EQ3 = @(x) x(2)*x(3);
EQ2 = @(x) (EQ3(x) - EQ1(x))*(B(x)-C(x));
F = @(t,x) [EQ1(x);EQ2(x);EQ3(x)];
[t,x] = ode45(F,[0 10], [0 0 0]);
 类似资料:
  • 我现在正在做一个项目,我已经建立了一个多体机械系统的运动模型。它是一个复杂的非光滑系统,系统的运动并不总是由同一组方程组描述的,这意味着如果我用数值方法求解它,我必须有时停止积分(然后用新的初始条件和方程组重新开始)。 我如何告诉ODE-solver在事件发生后要使用什么新的初始条件和方程式?

  • 我正在尝试用Java解决一个ODE,到目前为止,我已经尝试了两个不同的库。我最信任的是Apache Commons Math,然而,即使是简单的问题,我似乎也得不到正确的解。 当我在Mathematica中求解系统时,我得到了这样的结果: 如果我用Apache Commons Math中的Dormand-Prince8(5,3)求解器求解,我会得到以下结果:

  • MATLAB系统包括五个主要部分: 开发环境. 这是一组帮助你使用MATLAB的函数和文件的工具和设备。这些工具大部分是图形用户界面。它包括MATLAB桌面和命令窗口,命令历史,和用于查看帮助的浏览器,工作空间,文件和查找路径。 MATLAB数学函数库. 这里汇集了大量计算的算法,范围从初等函数如:求和,正弦,余弦和复数的算术运算,到复杂的高等函数如:矩阵求逆,矩阵特征值,贝塞尔(Bessel)函

  • 主要内容:在MATLAB中求解基本代数方程,求解代数中的基本代数方程,在MATLAB中求解二次方程,在Octave中求解二次方程,求解MATLAB中的高阶方程,在Octave中求解高阶方程,MATLAB中求解方程组,在Octave中求解方程组,在MATLAB中扩展和集合方程,在Octave扩展和集合方程,代数表达式的因式分解和简化到目前为止,我们已经看到所有的例子都在MATLAB以及它的GNU,或者称为Octave。 但是,为了求解基本代数方程,MATLAB和Octave都不同,所以这里将分别介

  • 使用一些钩子软件可以让人使用电脑更加方便,比如audio router(一款可以控制不同软件使用不同声卡,使用不同音量大小的软件,这个是应用程序级别的钩子软件),再比如防火墙(控制不同特征的进出流量,可以禁止某个应用链接网络,这是操作系统级别的钩子软件) 一般操作系统只是提供 具有网络系统调用 钩子的功能(就是防火墙),但是对于其他系统调用却没有提供钩子功能(比如直接监控文件的读写,可以理解为 文