.

8 views (last 30 days)

Show older comments

hey all

im trying to solve PDE with derivative boundary condition , so i tend to use the imaginary node method , could i have another way to solve it without any built in function

this is the qustion:

๐๐๐๐ก=๐2๐๐๐ฅ2+๐(๐ฅ) (1)

With ๐(๐ฅ)=100sin(๐๐ฅ) (2)

1)

๐(๐ฅ,0)=0 (3)

2)

๐๐๐๐ก(0,๐ก)=๐(0,๐ก)โ10 (4)

3)

๐๐๐๐ก(1,๐ก)=10โ๐(1,๐ก) (5)

clear all;

close all;

clc;

%% Demo program for parapolic pde

dt = 0.25;

dx = 0.1*dt;

alpha=1;

t = 0:dt:15;

x = 0:dx:4;

q_x=(100*sin(pi*x));

N = length(x)-1;

T=[]; %Dynamic size

T(1,:) = zeros(1,5) ; %Initial condition

for j=1:length(t)-1

T(1,N-1) = T(j+1,N) + (2*dx*(T(j+1,N+1)-10));

for i=2:N

T(j+1,i) = T(j,i)+alpha*(dt/(dx^2))*(T(j,i+1)+ T(j,i-1)-2*T(j,i))+q_x;

end

T(2,N+2) = T(j+1,N) + (2*dx*(10-T(j+1,N+1)));

end

mesh(t,x,T)

colorbar;

the code isn't evaluated , what is the proplem?

darova
on 2 Apr 2021

Try these corrections

T = zeros(length(t),length(x));

for j=1:length(t)-1

T(j+1,1) = T(j,1) + dt*(T(j,1)-10);

T(j+1,N) = T(j,N) + dt*(10-T(j,N));

for i=2:N-1 % changed

T(j+1,i) = T(j,i)+alpha*(dt/(dx^2))*(T(j,i+1)+ T(j,i-1)-2*T(j,i)) + q_x(i); % note: q_x(i)

end

end

mesh(t,x,T)

darova
on 3 Apr 2021

I made some change sto your code. Some notes:

- should be larger than ( should be small )
- should be small too
- i changed boundary conditions ๐๐๐๐ก(0,๐ก)=๐(0,๐ก)โ10 and ๐๐๐๐ก(1,๐ก)=10โ๐(1,๐ก)

clc,clear

%% Demo program for parapolic pde

dt = 0.25;

dx = 5*dt;

alpha=1;

t = 0:dt:5;

x = 0:dx:20;

q_x = sin(pi*x/max(x));

N = length(x);

r = alpha*dt/dx^2;

T = zeros(length(t),length(x));

for j=1:length(t)-1

T(j+1,1) = T(j,1) + dt*(T(j,1)-1/10); % changed these

T(j+1,N) = T(j,N) + dt*(1/10-T(j,N));

for i=2:N-1 % changed

T(j+1,i) = T(j,i)+r*diff(T(j,i-1:i+1),2) + q_x(i); % note: q_x(i)

end

end

surf(x,t,T)

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!