为什么我算的结果(P2)是Nan,分母也不是0呀。
Mostrar comentarios más antiguos
clc
clear
%%
%%
m=100;
n=100;
H=ones(m,n);
A=ones(m,n);
B=ones(m,n);
C=ones(m,n);
D=ones(m,n);
E=ones(m,n);
F=ones(m,n);
% Psi=5*1e-2;
% lamda=2*z/l;
d_lamda=2/n;
phi=2*pi;%任意转角15
epslion=linspace(-1,1,m);
theta=linspace(pi/2,3*pi/2,n);
d_phi=phi/m;
l=0.18;%m
d=l/0.8;%m
H=1+epslion.*cos(phi-theta)';
surf(theta,epslion,H);
%% 初始条件
% p0=2*ou*miu/Psi^2;
P=zeros(m,n);
for i=1:m
for j=1:n
epslion1(i,j)=epslion(i);
end
end
for i=1:m
theta1(i,:)=theta(1,:);
end
%% 边界条件
P(1,:)=ones(1,n)*0;%最上面第一行全部是1
P(m,:)=ones(1,n)*0;%最下面第一行全部是1
for i=1:m
P(:,1)=0;%最左边第一列为1,
P(:,n)=0;%最右边最后一列为1,
end
%% 压力分布计算
P2=ones(m,n);
for i=2:m-1
for j=2:n-1
A(i,j)=((H(i+1,j)-H(i,j))/2)^3;
B(i,j)=((H(i,j)-H(i-1,j))/2)^3;
C(i,j)=(d/l*d_phi/d_lamda)^2*((H(i,j+1)-H(i,j))/2)^3;
D(i,j)=(d/l*d_phi/d_lamda)^2*((H(i,j)-H(i,j-1))/2)^3;
E(i,j)=A(i,j)+B(i,j)+C(i,j)+D(i,j);
F(i,j)=3*d_phi*(H(i+1,j)+H(i,j))/2-(H(i,j)-H(i-1,j))/2;
end
end
上面的没问题,最后迭代求解出来的结果就是nan了,P2
<blockquote>maxt=1;
迭代格式P2(i,j)=(A(i,j)*P(i+1,j)+B(i,j)*P(i-1,j)+C(i,j)*P(i,j+1)+D(i,j)*P(i,j-1)-F(i,j))/E(i,j) 的分母E也不是0,我感觉是不是数太小了导致的,希望指点迷津
Respuesta aceptada
Más respuestas (0)
Categorías
Más información sobre Logical en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!