gpt4 book ai didi

matlab - Octave: For-loop error 说 A(I) = X: X must have the same size as I

转载 作者:太空宇宙 更新时间:2023-11-03 20:33:34 24 4
gpt4 key购买 nike

我需要计算函数 x*e^(x)*sin(pi*) 从 x=-1x=1 的积​​分x)。为此,我使用了高斯求积法。这种方法可以概括为 (weights)*(function evaluated at given roots)k=1k=n 的总和其中 n=30

在我下面的代码中,根位于列向量 LegendreGaussQuadratureConstants(n).x 中。我进行转置是因为我想对存储在 row 向量 LegendreGaussQuadratureConstants(n).w

中的权重逐元素乘法

我的代码:

fx = @(x) x .* e.^(-x) .* sin(pi .* x);

for k = 1:50

Leg(k) = (fx(LegendreGaussQuadratureConstants(k).x))' .* LegendreGaussQuadratureConstants(k).w;

endfor

问题是它给了我标题中的错误,暗示使用 k 的标量值存在一些问题并且它应该与相乘的值的大小相匹配,但这没有意义......

最佳答案

你自己在问题中说的

the roots are found in the column vector LegendreGaussQuadratureConstants(n).x. I'm taking the transpose because I want to perform element by element multiplication on the weights, which are stored in the row vector LegendreGaussQuadratureConstants(n).w.

您要对两个向量进行逐元素乘积,结果也将是一个向量。但是,您随后尝试将其分配给一个标量 Leg(k),这会产生您的错误。

您要么需要将这些向量存储在 Leg 的 2D 版本中

for k = 1:50
Leg(k,:) = (fx(LegendreGaussQuadratureConstants(k).x))' .* LegendreGaussQuadratureConstants(k).w;
endfor

或者对逐元素乘法结果执行一些其他操作,使其成为标量。

for k = 1:50
Leg(k) = sum((fx(LegendreGaussQuadratureConstants(k).x))' .* LegendreGaussQuadratureConstants(k).w);
endfor

关于matlab - Octave: For-loop error 说 A(I) = X: X must have the same size as I,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36672182/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com