Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.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_Numerical Methods_Integral_Numerical Integration_Numerical Analysis - Fatal编程技术网

如何在MATLAB中执行基于阵列的求积? 介绍

如何在MATLAB中执行基于阵列的求积? 介绍,matlab,numerical-methods,integral,numerical-integration,numerical-analysis,Matlab,Numerical Methods,Integral,Numerical Integration,Numerical Analysis,考虑以下两个阵列: N = 100; % for example x(1:N) = [real values in ascending order]; y(1:N) = foo(x); 我想计算y相对于x的积分 假设y通常不是通过x函数定义的(例如foo)。如果是这种情况,那么使用quad将非常简单,它将对foo进行大量函数调用。我明确地希望避免基于函数的求积,因为在我的情况下,我只有x和y,并且没有方便的函数(比如foo)可以计算 注意,我还假设foo是一个性能良好的函数:在整个域[m

考虑以下两个阵列:

N = 100;  % for example

x(1:N) = [real values in ascending order];
y(1:N) = foo(x); 
我想计算
y
相对于
x
的积分

假设
y
通常不是通过
x
函数定义的(例如
foo
)。如果是这种情况,那么使用
quad
将非常简单,它将对
foo
进行大量函数调用。我明确地希望避免基于函数的求积,因为在我的情况下,我只有
x
y
,并且没有方便的函数(比如
foo
)可以计算

注意,我还假设
foo
是一个性能良好的函数:在整个域
[min(x),max(x)]
中连续且可微。
foo(x)
的示例包括
sin(x)
exp(x)
sqrt
(如果
min(x)>0
),
x^2
,等等。当然,这些示例函数可以很容易地进行分析集成,但我们从中没有学到任何东西。:-)

通过
trapz
我可以通过
trapz
通过梯形方法执行基于阵列的正交:

result = trapz( x, y );
问题: 我知道有很多方法可以比trapz方法更精确地近似此积分,例如使用。另一种方法可能是积分插值勒让德多项式或样条曲线。我想还有其他聪明的方法

除了
trapz
之外,使用MATLAB逼近该积分的更好方法是什么?在典型精度/性能方面,它与
trapz
相比如何?


注意:由于至少R2014b,
quad
被标记为不推荐使用,以支持
integral
。指定答案适用的MATLAB版本可能对其他人有所帮助

我不确定你的问题是否能得到回答。我得说它太宽了。这在很大程度上取决于离散数据的平滑度和密度。就像ODE积分一样,没有单一的最佳正交或插值方案。在大多数情况下,
integral
interp1
可以正常工作。@horchler:同意。我想通过询问典型的准确性/性能来解决这个问题。我假设一个比较类似于“一阶精确,假设一个行为良好的函数和一个统一的网格”——即使网格不一定是统一的,函数也不一定是行为良好的。这是比较不同方法的基线。虽然并没有一种最佳方案适用于每种情况,但也有一些方案在精度(如龙格-库塔法)或速度(欧拉法)方面优于其他方案。这个比较是我问这个问题的一个主要原因。问题是你正在转向数学或计算科学,而不是编程,可能会偏离这个网站的主题。如果你能提供一个“行为良好的函数和统一的网格”的具体例子,那就更好了。@horchler:我同意这对那些网站更有利。(我的坏!)我问它是因为这个网站有
matlab
标签。是否有一种简单、自动的方法将此问题转移到其中一个站点?也许可以这样做:。然而,如果是这样的话,我不确定它与其他方法相比如何。不确定你的确切问题能否得到回答。我得说它太宽了。这在很大程度上取决于离散数据的平滑度和密度。就像ODE积分一样,没有单一的最佳正交或插值方案。在大多数情况下,
integral
interp1
可以正常工作。@horchler:同意。我想通过询问典型的准确性/性能来解决这个问题。我假设一个比较类似于“一阶精确,假设一个行为良好的函数和一个统一的网格”——即使网格不一定是统一的,函数也不一定是行为良好的。这是比较不同方法的基线。虽然并没有一种最佳方案适用于每种情况,但也有一些方案在精度(如龙格-库塔法)或速度(欧拉法)方面优于其他方案。这个比较是我问这个问题的一个主要原因。问题是你正在转向数学或计算科学,而不是编程,可能会偏离这个网站的主题。如果你能提供一个“行为良好的函数和统一的网格”的具体例子,那就更好了。@horchler:我同意这对那些网站更有利。(我的坏!)我问它是因为这个网站有
matlab
标签。是否有一种简单、自动的方法将此问题转移到其中一个站点?也许可以这样做:。然而,如果是这样,我不确定它与其他方法相比如何。