我怎样才能拯救我的函数变量之一吗?

3视图(30天)
ADNAN
ADNAN 2023年5月12日
评论道: ADNAN2023年5月13日
你好,
我想节省时间变量之一(“ NOD1 ”)的功能。米,但我不能算出来。你能帮我吗?
我这里有附加的功能。m和MAIN.m
我想 保存 所有“NOD1”的结果。
这有可能吗?
谢谢你的帮助。
亲切的问候,
1评论
詹姆斯Tursa
詹姆斯Tursa 2023年5月12日
看起来像你的导数函数不是连续的(即。一个if - then - else部分,导致输出跳在某些点)。这可能导致问题的数值()。

登录置评。

接受的答案

Torsten
Torsten 2023年5月12日
编辑:Torsten 2023年5月12日
数值已经完成后,重新计算NOD1调用程序的时间t向量:
(t, x) =数值(@odeHar tspan, x0);
C_n = 300 * 10 ^ 3;
NOCo1 = x (: 1)。* x (:, 3);
NOD1 = C_n * x (:, 3)。* (NOCo1 < 0) + 100 * x (:, 3)。* (NOCo1 > = 0)
2的评论

登录置评。

答案(1)

沃尔特·罗伯森
沃尔特·罗伯森 2023年5月12日
不要这样做。
数值是通过评估给定函数6次试验,根据当前输入精心挑选的边界条件和当前内部步长。别人的评价是一个在测验。如果再确认失败然后数值重用相同的初始位置和一个更小的步长。连续大量的反复试验可以失败…我估计40以上连续失败之前,放弃了在某些情况下。
你问, 所有 那些NOD1被记录,尽管许多连续可能不是用在最后的位置。
如果你在黑暗中走在山上一个上发条的闪光灯手电筒,你会想要记录所有的高度或只有相对应的高度方向你旅行结束了吗?
现在,如果再确认成功,然后用默认选项,不仅数值记录输出之一:它还篡改三之间的中间位置前面的位置和当前位置, 没有 调用函数。所以有也没有计算相应NOD1输出。所以不仅会有很多无用的NOD1值记录,会有输出,没有NOD1记录!
记录“所有”的一个中间值为数值几乎总是一个坏主意。
5个评论

登录置评。

s manbetx 845


释放

R2022a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!