用辛普森方法进行数值积分

时间:2016-09-28 02:46:44

标签: matlab

我试图通过simpsons方法解决这种积分,并将结果绘制成图。该图仅取得for循环中P0 = -6的值。当我设置I(K,P)时,它会给出错误:

  

尝试访问P0(0); index必须是正整数或逻辑

我该如何解决?

@

1 个答案:

答案 0 :(得分:0)

目前,只有在P0 = -6中保存I(k)时,才会使用结果P0 = 6。首先保存P0 = 6的结果,然后覆盖它并保存另一个。 for k = 1:length(w) L_shift = @(w1) (1-((1i*(w(k)-w1))/alpha))^(-1)* (1-((1i*(w(k)-w1))/beta))^(-1); Q_shift = @(w1) (1/(r_e^2))*((1-((1i*(w(k)-w1))/gamma_e))^(2) - (1/(1-G_ei*L_shift(w1)))*... (L_shift(w1)*G_ee + (exp(1i*(w(k)-w1)*t_0)*(L_shift(w1)^2*G_ese +L_shift(w1)^3*G_esre))/(1-L_shift(w1)^2*G_srs))); P_shift = @(w1) (pi/r_e^4)* (abs((L_shift(w1)^2*G_esn)/((1-L_shift(w1)^2*G_srs)*(1-G_ei*L_shift(w1)))))^2 *.... abs((atan2((imag(Q_shift(w1))),(real(Q_shift(w1)))))/imag(Q_shift(w1))); for P0 = [6 -6] G = 150*exp(- (f - P0).^2./(2*(delt_P).^2)); P2 = @(w1) G(k) + P_initial(w1); p = @(w1) P2(w1)*P_shift(w1); I(k) = simprl(p,a,b,n); end end 的结果既未使用也未保存。如果您按如下方式编写代码,则会明确说明。

I(k,P)

您无法访问I,因为P0 = -6是一个向量而非矩阵。但是,这将为您提供索引超出矩阵维度。您可以将P0 = 6的结果保存在一个变量中,将function myOnEdit(e) { ... var x = fetchUrlApp.fetch(...); ... }保存在另一个变量中,因为代码中的结果不依赖在彼此身上。