Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.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解算器具有相同的输出_Matlab_Simulink_Solver_Matlab Deployment - Fatal编程技术网

不同的MATLAB解算器具有相同的输出

不同的MATLAB解算器具有相同的输出,matlab,simulink,solver,matlab-deployment,Matlab,Simulink,Solver,Matlab Deployment,我通过在simulink中实现一个简单的方程来测试不同的MATLAB解算器 dy/dx=y^2-y^3 现在当我为ODE23运行这个 输出是 现在,当我为ODE45运行这个时,输出是相同的 现在据我所知,ode23将二阶和三阶解与ode45进行了比较,ode45将四阶和五阶解进行了比较,因此从数学上讲,ode45应该给我一个更准确的答案,但现在我不知道我的MATLAB脚本中是否有错误,在我选择在my flame.slx文件中手动解算器 clear all clc tic sim('fl

我通过在simulink中实现一个简单的方程来测试不同的MATLAB解算器 dy/dx=y^2-y^3

现在当我为ODE23运行这个

输出是

现在,当我为ODE45运行这个时,输出是相同的

现在据我所知,ode23将二阶和三阶解与ode45进行了比较,ode45将四阶和五阶解进行了比较,因此从数学上讲,ode45应该给我一个更准确的答案,但现在我不知道我的MATLAB脚本中是否有错误,在我选择在my flame.slx文件中手动解算器

clear all
clc

tic
sim('flame.slx',10)
toc

figure(1)
stem(tout,yout.signals.values)
xlabel('Time [sec]')
ylabel([]);
ylabel('Relative flame ball radious [%]')
figure(2)
stem(diff(tout))
xlabel('Steps [num]')
ylabel('Size [sec]')

解算器的输出不应完全相同,但在比较图时可能接近。输出之间的标准化差异是什么:
norm(y45-y23)
(其中
y45
y23
是来自相同
x
值的值)?你的初始状态是什么?(如果是
0
1
,则解决方案将保持不变)。是的,但解决方案完全相同(我无法添加图像,因为我的评级很差)。ode45应该更精确,我在集成中使用0.1作为“y”的首字母。它们看起来可能类似,但根据我的R2014b安装,它们在
x=1时的差异约为
2E-9
,在
x=10时的差异约为
7E-4
x=[0,10]
上的标准差为
5.1E-3
。答案是不同的。但是,由于解算器内置的误差控制,通过绘图查看时,它们将足够相似。y轴是从0到0.5,步长为5e-2,因此我认为5.1e-3的差异是明显的,但它们完全相同,我没有足够的评级,否则我会将
MaxStep
设置为
5E-2
,标准差是
8E-7
超过
x=[0,10]
y=[0.1,0.48]
,最大逐点差是
1.1E-7
。将步长设置为较低将使解决方案彼此更接近,因为误差取决于步长。绘制结果时,它们可能看起来相似,但在数值上并不相同。