以下积分的matlab代码是什么

问题描述 投票:0回答:0

我想使用数值技术求解以下积分。 我的积分是

1.) 我想求解一个由

给出的 PDE 系统

PDE system

我只需要积分项。这是我试过的

%% 年龄、空间和时间的离散化

% 时间离散化

dt=0.04;
t=0:dt:20;
m=length(t);

% 年龄离散化

da=0.08;
a=0:da:60;
n=length(a);

% 空间离散化

dx=0.06;
x=0:dx:20;
p=length(x);

%% 矩阵大小

f=zeros(m,n,p);
g=zeros(m,n,p);

%% 初始数据

for j=1:n
    for k=1:p
        f(1,j,k)=0.0009.*exp(-0.01.*a(j))+(sin(0.05*x(k)))^2;                 
        g(1,j,k)=0.0009*exp(-0.08.*a(j)) +(sin(0.05*x(k))^2)^2;                     
       
    end
end

%% 初始函数

for j=1:n
    r(j)=exp(-2*a(j));                                                                                                                               
end

r=@(a) r(j);
J=@(x)(1./sqrt(pi)).*exp(-x.^2);
f_space=@(x) f(1,j,k);
g_space=@(x) g(1,j,k);
g_age=@(a) g(1,j,k);
for j=1:n
     for k=1:p                                             
         B(j,k)=(1)./(exp{a(j)}+10);                                          
     end  
end
for j=1:n
   for k=1:p
P(1,j,k)=trapz(r(a(j)).*g_age(a(j)),a)*da;
J_1(1,j,k)= conv(J(x(k)),f_space(x(k)))*dx;
J_2(1,j,k)= conv(J(x(k)),g_space(x(k)))*dx;
   end
end

%% 有限差分方案(正向)

for i=2:m
   for j=1:n-1
        for k=1:p
 f(i,j,k)=dt*(-P(i-1,j,k).*(f(i-1,j,k)))+dt*(J_1(i-1,j,k)-f(i-1,j,k))-f(i-1,j,k);
 g(i,j,k)=dt*(P(i-1,j,k).*(f(i-1,j,k)))+dt*(J_2(i-1,j,k)-I(i-1,j,k))-I(i-1,j,k);
 g_age=@(a) g(i,j,k);
 f_space=@(x) f(i,j,k);
 g_space=@(x) g(i,j,k);
 P(i,j,k)=trapz(r(a(j)).*g_age(a(j)),a);
 J_1(i,j,k)=conv(J(k),f(i,j,k)); 
 J_2(i,j,k)=conv(J(k),g(i,j,k));  
 I(i,1,k)=0;
        end
    end
 end

这段代码似乎首先不起作用它为所有 i、j 和 k 显示函数 P 的相同值。此外,代码不会在最后一步运行。你能给我提示如何改进这段代码吗?

matlab integration finite-difference
© www.soinside.com 2019 - 2024. All rights reserved.