【问题标题】:MATLAB's legendre function returns an arrayMATLAB 的 legendre 函数返回一个数组
【发布时间】:2013-12-12 17:39:42
【问题描述】:

我正在处理书中的一个方程,当我使用 Mathematica 求解它时它就可以工作。它本质上包含勒让德多项式的某些阶数的积分。例如。 P_1(x)、P_2(x)、P_3(x)。

当我将 Mathematica 用于特定情况时,例如

LegendreP[3, 0.5]

我明白了

-0.4375

这让我可以继续我的评估。但在 MATLAB 中我得到:

>> legendre(3,0.5)
ans =
-0.4375
-0.3248
5.6250
-9.7428

第一个返回值总是正确的,但随后它会吐出......我认为其他系数?所以我想做的是告诉 MATLAB 只返回第一个值。有没有办法做到这一点,而无需事后将其分配给自己的变量?例如。像

legendre(3,0.5)(1)   

显然不会工作,因为它还不存在于内存中。我是否以正确的方式解决这个问题?

谢谢

【问题讨论】:

  • 类似问题here
  • 非常好,谢谢。好吧,这回答了一点。现在我想知道是否可以在大循环中使用它,或者我应该编写自己的 legendre 函数来返回第一个订单......?
  • 坚持使用库总是更好,因为官方功能已经优化。由于在这种情况下调用库并不麻烦,我建议直接使用它。

标签: matlab math


【解决方案1】:

如果它困扰您,只需将 legendre 放入一个新函数 legendre1,这样您就可以使用库函数,但具有您想要的功能。

function [ P ] = legendre1( n,X )
P = legendre(n,X);
P = P(1);
end

或实现自定义范围:

function [ P ] = legendre1( n,X,range )
P = legendre(n,X);
P = P(range);
end

所以legendre1( 3,0.5,1 ) 会返回:

P =

   -0.4375

legendre1( 3,0.5,1:2 )

P =

   -0.4375
   -0.3248

【讨论】:

  • 老兄,好主意!我会用那个。谢谢你们!
  • 只是一个小小的改进。将P(1) 替换为P(1,:),因为X 也可以是一个向量,这意味着legendre(N,X) 将返回一个矩阵。 P(range) 也是如此。
猜你喜欢
  • 1970-01-01
  • 2011-05-10
  • 2017-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-23
  • 2012-04-01
  • 1970-01-01
相关资源
最近更新 更多