我正在写一个代码来解决平流方程"它表示给定的属性或物理量如何随时间变化。为此,我表达了这个词:https://gyazo.com/f531cb756ffbd3ec28ab85ea1f09b18d 这是我的一个问题,我不知道如何实现它。 这是我目前的代码:
%%Our paramatres
k = 1e-4;
x = [1 2 2.1 13.9 14 28 28.1 39.9 40 59 69 79 150];
y = [3000 3000 3150 3150 3000 3000 3080 3080 3000 3000 3150 3000 3000];
vx = 0.1; % velocity in x m/s
tmax = 250; %time max
xmin = min(x);
xmax = max(x);
axis([0 150 2990 3160])
plot(x,y,'--')
%% discretization of domain
%
dx = 150;
dt = dx/(5*vx); % delta time is equal delta x * vx
n = tmax / dt ;
m = (xmax - xmin)/dx;
x = linspace(xmin,xmax,m+1); % é igual a x = xmin:dx:xmax
%% Stability condition
%
lambda = k * dt/vx^2;
while lambda > 1/2
fprintf ('Satisfied\n\n')
fprintf ('Value of dt is %5.1f and for z is %i \n\n', dt,dx)
dt = input('New value for dt: ')
dx = input ('New value for dx: ')
lambda = k*dt/dx^2;
n = tmax/dt;
m = xmax/dx;
x = linspace(xmin,xmax,m+1);
end
%%Initial conditions and frontier
%
h = zeros(size(x));
h(x>0)=1;
plot(x,h)
xlabel('Distance')
ylabel('Density')
grid on
答案 0 :(得分:0)
您可以将ode45
用于首阶差异eq。
http://www.mathworks.com/help/matlab/ref/ode45.html
或者
使它成为一个简单的线性方程。用矩阵逆乘法\
来解决它。
如果方程不可解,则用pinv
http://www.mathworks.com/help/matlab/ref/pinv.html计算Moore-Penrose伪逆。