Может кто написал прогу для такой фигни?
причем граничные условия
-1<=x<0
Получается вот такой бред... Здесь видно, что функция очень быстро отходит от граничных условий, что вряд ли возможно.
CODE
N = 80; % разбиение по Х
M = 50; % разбиение по T
h = 1/N; %шаг по координате
t = 1.5/M; %шаг по времени
F = zeros(M,N); % массив значений функции (время,координата)
T = zeros(M,1); % время
X = zeros(N,1); % координата
for i = 0:N-1 % граничные условия. строки 9 - 15
F(1,i+1) = 1 +i*h ;
end
for j = 0:M-1
F(j+1,1) = (2 - (j*t)^2)/(4*j*t + 2);
end
for i = 1:M-1 %массив значений времени и координаты. строки 17 - 23
T(i+1,1) = i*t;
end
for i = 1:N-1
X(i+1,1) = -i*h;
end
%метод Ньютона решения уравнения
eps = 0.1;
for j = 0:M-2
for i= 0:N-2
y0 = -5;
y1 = -10;
delta = 1;
while(delta > eps)
y1 = y0 - f(y0, F(j+2,i+1), F(j+1,i+2), h, t, j)/fshtrih(y0, h, t);
delta = abs(y1-y0)
y0 = y1;
end
F(j+2,i+2)=y0;
end
end
surf(X, T, F)
shading interp
xlabel('X')
ylabel('Time')
title('Numeric')
function [k] = f( Fxs, Fs,Fx, h, t, i)
k = - ((Fxs)^2)/h - (Fxs)*i*t/h +Fxs/t - (Fx)/t + (Fs^2 + Fs*i*t)/h;
function [m] = fshtrih(Fxs, h,t)
m = -2*Fxs/(h) - (i*t)/(h)+1/t;
M = 50; % разбиение по T
h = 1/N; %шаг по координате
t = 1.5/M; %шаг по времени
F = zeros(M,N); % массив значений функции (время,координата)
T = zeros(M,1); % время
X = zeros(N,1); % координата
for i = 0:N-1 % граничные условия. строки 9 - 15
F(1,i+1) = 1 +i*h ;
end
for j = 0:M-1
F(j+1,1) = (2 - (j*t)^2)/(4*j*t + 2);
end
for i = 1:M-1 %массив значений времени и координаты. строки 17 - 23
T(i+1,1) = i*t;
end
for i = 1:N-1
X(i+1,1) = -i*h;
end
%метод Ньютона решения уравнения
eps = 0.1;
for j = 0:M-2
for i= 0:N-2
y0 = -5;
y1 = -10;
delta = 1;
while(delta > eps)
y1 = y0 - f(y0, F(j+2,i+1), F(j+1,i+2), h, t, j)/fshtrih(y0, h, t);
delta = abs(y1-y0)
y0 = y1;
end
F(j+2,i+2)=y0;
end
end
surf(X, T, F)
shading interp
xlabel('X')
ylabel('Time')
title('Numeric')
function [k] = f( Fxs, Fs,Fx, h, t, i)
k = - ((Fxs)^2)/h - (Fxs)*i*t/h +Fxs/t - (Fx)/t + (Fs^2 + Fs*i*t)/h;
function [m] = fshtrih(Fxs, h,t)
m = -2*Fxs/(h) - (i*t)/(h)+1/t;
использована чисто неявная схема вида: