Solving Multi-variable Partial Differential Equation

boundary conditions;
Please help me to solve above differential eqation. I want P = P(x,y) and also generate a 3D plot for the same.
I am a new to MATLAB, any help shall be highly appreciated.
Thanks in advance.

 採用された回答

Torsten
Torsten 2023 年 10 月 3 日
編集済み: Torsten 2023 年 10 月 3 日

1 投票

The only thing you can get with the "boundary condition" you gave is the solution on the characteristic curve of the PDE through (x0,y0).
Look up "method of characteristics" for more details.
And I don't understand why you write
I am a new to MATLAB, any help shall be highly appreciated.
It's not a MATLAB problem.

6 件のコメント

Captain Rituraj Singh
Captain Rituraj Singh 2023 年 10 月 3 日
編集済み: Captain Rituraj Singh 2023 年 10 月 3 日
I wrote this because I don't know which MATLAB subroutine or function is suitable to solve such an equation. I want to write a MATLAB code for above equation but not certain where to start. I won't post anything here if it is not related to MATLAB.
Torsten
Torsten 2023 年 10 月 3 日
編集済み: Torsten 2023 年 10 月 3 日
Do you know how the method of characteristics works and how it is to be applied to your problem ?
If you understand this method, you will see that your problem is equivalent to solving three ordinary differential equations. The MATLAB solver to be used for this system is ode45.
Captain Rituraj Singh
Captain Rituraj Singh 2023 年 10 月 3 日
I am not aware of "method of characteristics". But I have used ode45 earlier and sample program can help me better, though I fill try to look into "method of characteristics".
Thanks
Torsten
Torsten 2023 年 10 月 3 日
編集済み: Torsten 2023 年 10 月 3 日
Set x = x(t) and y = y(t) (x(t) and y(t) will describe the characteristic curve through (x0,y0)) and P = P(x(t),y(t)).
Then
dP/dt = dP/dx * dx/dt + dP/dy * dy/dt
So if you define the curve (x(t),y(t)) by
dx/dt = cosh(y) , x(0) = 0.1
dy/dt = -sinh(y)/x, y(0) = 0.1,
then
dP/dt = -P/(3*x), P(0) = P(x0,y0) = 0.5.
on this curve.
Summarizing: you get a solution for P on the curve (x(t),y(t)) by solving the three ordinary differential equations
dx/dt = cosh(y) , x(0) = 0.1,
dy/dt = -sinh(y)/x, y(0) = 0.1,
dP/dt = -P/(3*x), P(0) = P(x0,y0) = 0.5
More is not possible with the condition P(0.1,0.1) = 0.5.
It's like solving an initial value problem: Given the condition in only one point gives a 1d solution curve, not a 2d function P(x,y).
Do you see what I mean: it's not a problem with MATLAB ?
Torsten
Torsten 2023 年 10 月 4 日
編集済み: Torsten 2023 年 10 月 4 日
fun = @(t,u)[cosh(u(2));-sinh(u(2))/u(1);-u(3)/(3*u(1))];
u0 = [0.1;0.1;0.5];
tstart = -10;
tend = 10;
tspan1 = [0 tstart];
[T1,U1] = ode45(fun,tspan1,u0);
tspan2 = [0 tend];
[T2,U2] = ode45(fun,tspan2,u0);
T = [flipud(T1);T2(2:end)];
U = [flipud(U1);U2(2:end,:)];
plot3(U(:,1),U(:,2),U(:,3))
xlabel('x')
ylabel('y')
zlabel('P')
Captain Rituraj Singh
Captain Rituraj Singh 2023 年 10 月 5 日
Thank you so much @Torsten, provided solution was very helpful.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

製品

リリース

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by