gpt4 book ai didi

matlab - 基准积分与双积分程序

转载 作者:行者123 更新时间:2023-12-02 03:51:49 26 4
gpt4 key购买 nike

我有一个关于在 MATLAB 中实现二重积分的问题。

众所周知 enter image description here

利用

k1 = 1E-04:0.001:1E+04;k2 = 1E-04:0.001:1E+04;k3 = 1E-04:0.001:1E+04;

以上程序(调用F11、F22、F33的公式)得到如下结果: enter image description here

问题来了:

我想通过仅涉及 phi11、phi22 和 phi33 的二重积分(或嵌套在 k2 和 k3 中的单积分)实现相同的结果,因此无需直接调用 F11、F22 和 F33 的公式。

到目前为止,我正在使用这段代码(仅限于 F11 计算):

clc,clear all,close all
k1 = (1E-04:0.01:10000);
k2 = (1E-04:0.01:10000);
k3 = (1E-04:0.01:10000);
F_11_benchmark = ((9/55)*1.453)*(1./(1+k1.^2).^(5/6));
count = 0;
F_11 = zeros(1,numel(k1));
for i = 2:numel(k1)
count = count + 1;
phi_11 = @(k2,k3) (1.453./(4.*pi)).*((k2.^2+k3.^2)./((1 + k1(count).^2 + k2.^2+k3.^2).^(17/6)));
F_11(count) = dblquad(phi_11,k2(i-1),k2(i),k3(i-1),k3(i));
end

不会导致上图中显示的相同基准测试结果。

您建议如何解决这个问题?提前谢谢你。

最好的问候,FPE

最佳答案

您使用的 dblquad 有误。你这样做的方式是为每个 k1 计算小盒子 [k1(i-1) k1(i)]x[k1(i-1) k1(i)] 上的积分,这绝不近似于整个域整合。请改用 integral2 命令:尝试只使用

F_11(count) = integral2(phi_11,-100,100,-100,100);

F_11(count) = integral2(phi_11,-Inf,Inf,-Inf,Inf);

哪个应该更准确但会更慢。您也可以为 k1 使用更大的分辨率。我用过

k1=10.^(-4:.01:3);

为了匹配您的图表。

关于matlab - 基准积分与双积分程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14114155/

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