Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 如何使用ODE45求解具有困难终端条件的微分方程组?_Matlab_Solver_Ode45 - Fatal编程技术网

Matlab 如何使用ODE45求解具有困难终端条件的微分方程组?

Matlab 如何使用ODE45求解具有困难终端条件的微分方程组?,matlab,solver,ode45,Matlab,Solver,Ode45,我的方程组可以写为- y1'=F_1(x,y1,y2) y2'=F_2(x,y1,y2) 其中F1和F2是x、y1、y2的一些函数。y1和y2是x和y1'=dy1_-dx和y2'=dy2_-dx的函数 初始条件为x=0,y1=y2=0。然而,我需要在y1=1时得到解,也就是说,一旦达到y1=1,迭代就需要停止。我想用一个合适的解算器,比如MATLAB中的ODE45或ODE15s,来解这个问题。但是,我不确定如何设置x_跨度,即x的初始值和最终值。请引导我 请注意,将x设置为一个较大的值(比如10

我的方程组可以写为-

y1'=F_1(x,y1,y2)

y2'=F_2(x,y1,y2)

其中F1和F2是x、y1、y2的一些函数。y1和y2是x和y1'=dy1_-dx和y2'=dy2_-dx的函数

初始条件为x=0,y1=y2=0。然而,我需要在y1=1时得到解,也就是说,一旦达到y1=1,迭代就需要停止。我想用一个合适的解算器,比如MATLAB中的ODE45或ODE15s,来解这个问题。但是,我不确定如何设置x_跨度,即x的初始值和最终值。请引导我

请注意,将x设置为一个较大的值(比如1000)将不会有帮助,因为我不知道y1=1的位置。

使用您提供给ODE解算器的事件函数(通常等于y1-1):


一旦解算器检测到事件函数的符号变化,它就会停止。

这个问题似乎有点奇怪,因为方程组尚未确定。你有两个微分方程,但有三个变量。或者,y1和y2是x的函数,而您提供的方程组是由于变量的变化而导致微分方程的阶数降低?对不起,忘了提到y1和y2确实是x和y1'=dy1_dx和y2'=dy2_dx的函数。我正在更新这个问题。你能提供你想要解的微分方程吗?这可能有助于为问题找到答案。@Thales函数F1和F2表示函数。我不能写这些方程,因为它们几乎每行有35行,但是你可以把它们放在函数F1和F2后面。