Приближенное решение дифференциального уравнения - PullRequest
0 голосов
/ 23 марта 2020

Я новичок в программе Matlab. Я хочу приблизить решение дифференциального уравнения и написал этот «код». Я пытался использовать мои старые знания о C.

function u=MDF_EqTrpt_CdtN(f,g)

N= 100; 
h= 2/(N-1); 
x= -1:h:1;

M= 150; 
k= 1/(M-1);
t= 0:k:1;

c= k/(2*h);


u=zeros(N,M);
u(1,1)= g(1+2*h);
u(N,1)= g(1+(N-1)*h);

for i= 2:N-1
    u(i,1)= g(1+i*h);
end

for j=2:M

    u(2,j)= k*f(1+2*h,(j-1)*k)+(c+1)*u(1,j-1)-c*u(3,j-1);
    u(1,j)= u(2,j);

    for i=3:N-2
        u(i,j)= k*f(1+i*h,(j-1)*k)+u(i,j-1)+c*(u(i-1,j-1)-u(i+1,j-1));
    end

    u(N-1,j)= k*f(1+i*(N-1),(j-1)*k)+c*u(N-1,j-1)+(1-c)*u(N-1,j-1);
    u(N,j)= u(N-1,j);
end

Это код вызова:

clc;
g=@(x) exp(x);
f=@(x,y) sin(x)+sin(y);

u=MDF_EqTrpt_CdtN(f,g);

figure
plot(x,t,u)

Я получаю это

Error in Test_MDF (line 9)
plot(x,t,u)

Я надеюсь что кто-то может сделать эту работу

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...