我在数值分析中的任务是
我们感兴趣的是找到 z(x) = 2500 的 β0 值。使用有效的算法来确定通过接收器的射线。
现在我只是循环并打印和绘制它,并从检查中看到介于 8 和 9 之间以及介于 -8 和 -9 之间的值是候选值:
x=0:1:6076*25;
hold on
for w = -10:14
[X,Z] = ode45(@(t,Z) sys(t,Z,w),x,[2000 tand(7.8)]);
w
Z(end,[1,end])
plot(X,Z(:,1),'r') %Z(:,1) is z(x) and Z(:,2) is z'(x).
end
hold off
能不能做得更有效率?β0 是声源的角度,z(x) 是声音的深度。我的系统是:
function dZ=sys(t,Z,w)
% inline function for c(z)
c=@(z)4800 - 20.2090 + (17.3368)*z/1000+ (272.9057)*exp(-z*0.7528/1000);
% inline function for c'(z)
dc=@(z) 17.3368/1000 - (272.9057)*(0.7528/1000)*exp(-z*0.7528/1000);
q=c(2000);
dZ=zeros(2,1); % a column vector
dZ(1)=Z(2);
dZ(2)=-(q/cosd(w))^2* dc(Z(1))/c(Z(1))^3;
end