【问题标题】:MATLAB Integration variable inside interpolation function插值函数内的 MATLAB 积分变量
【发布时间】:2013-12-01 23:57:22
【问题描述】:

我希望执行如下所示的集成。

我正面临一个错误,因为我在插值函数中使用积分变量“u”。 (如果我将插值函数中的 'u' 替换为某个常数,则集成运行良好。)

>>syms u
>>double(int(2*interp1(x,y,u),u,0,0.1))
   Error using interp1>Interp1D (line 330)
   Inputs must be floats, namely single or double.
    Error in interp1 (line 220)
    Vq = Interp1D(X,V,Xq,method);

能否请您提供一些解决方法。

P.S.:为澄清起见,y=f(x) [分段函数] 这就是我插值以确定中间值的原因。

非常感谢!!

【问题讨论】:

  • 你为什么使用syms u?输入是数值数据,我也会使用数值插值和积分。
  • @DanielR,感谢您的回复。如果我省略 syms u 集成失败:>> double(int(2*interp1(x,y,u),u,0,0.1)) Undefined function or variable 'u'. 如果我初始化 u=0 那么我得到:>> u=0; >> double(int(2*interp1(x,y,u),u,0, 0.1))`Undefined function 'int' for input arguments of type 'double'.我肯定不是很熟悉,所以请原谅我的无知:)

标签: matlab interpolation symbolic-math numerical-integration


【解决方案1】:

你应该用一个更简单的集成例程替换int,而忘记syms。试试内置的integrate,或者https://ece.uwaterloo.ca/~dwharder/NumericalAnalysis/13Integration/romberg/matlab.html

或者,您可以找到interp1 的替代方法,并在其每个子间隔上调用int

【讨论】:

    【解决方案2】:

    感谢大家的帮助, 我发现积分()解决了这个问题,而不是符号积分。非常感谢!!

    【讨论】:

      猜你喜欢
      • 2016-11-05
      • 1970-01-01
      • 2016-05-09
      • 2014-09-06
      • 2018-05-09
      • 1970-01-01
      • 2019-08-04
      • 2023-03-08
      • 2023-03-11
      相关资源
      最近更新 更多