How to pass multiple vectors (possibly a matrix) to pdepe and output a respective vector matrix?

1 回表示 (過去 30 日間)
Hi!
I have a matrix of parameters (lets say a design of experiments) which I would like to pass to pdepe and obtain a numerical output. That output will be used to calculate the flux and the flux is multipled by a bunch of constants to obtain my quanitity of interest. I want to then bunch up the quanity of the interest in a vector of similar dimensions to the experimental output to be able to fit coefficients to my coupled equations.
I need a way to pass my parameter matrix (lets say) x to obtain my I_num.
  6 件のコメント
Torsten
Torsten 2022 年 5 月 1 日
Pass the values of alphaa to the functions of pdepe where they are needed, e.g.
icfun = @(x) Uinit(x,alphaa(1))
sol = pdepe(m,pdefun,icfun,bcfun,xmesh,tspan,options)
function u0 = Uinit(x,alphaa)
u0 = alphaa;
end
Hashim
Hashim 2022 年 5 月 1 日
編集済み: Hashim 2022 年 5 月 1 日
alphaa = [2.00000000000000e-06,3.46000000000000e-06,3.54444000000000e-07;
6.00000000000000e-06,4.46000000000000e-06,4.54444000000000e-07;
7.00000000000000e-06,5.46000000000000e-06,5.54444000000000e-07;
8.00000000000000e-06,6.46000000000000e-06,6.54444000000000e-07;
9.00000000000000e-06,7.46000000000000e-06,7.54444000000000e-07;
7.00000000000000e-06,8.46000000000000e-06,8.54444000000000e-07];
Let's say this is our alphaa respectively for every row N I want a solution matrix. This is what I am struggling with atm. Using this solution matrix I want to calculate I_num which would be a vector 6*1. I am trying to use a loop with no success so far. Looks like this so far:
for i=1:length(tspan)
ic_arg(i) = {@(x)alphaa(i,1).*ones(size(N)) ; @(x)alphaa(i,2).*ones(size(N)); ...
@(x)alphaa(i,3).*ones(size(N))};
IC(i) = @(x)PDE_PSw_EK_IC(x, ic_arg(i));
BC = @(xl, yl, xr, yr, t)PDE_PSw_EK_BC(xl, yl, xr, yr, t, epsilon, alphaa);
optns = odeset('MaxStep',1e-00,'RelTol',1e-7,'AbsTol',1e-7);
sol1(i) = pdepe(m, @(x, t, y, DyDx)PDE_PSt_EK(x, t, y, DyDx, beeta, alphaa), ...
IC(i), BC, x, tspan, optns);
end
Pretty sure i will have to loop through my BCfun as well considering it has terms from alphaa as well.

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

採用された回答

Torsten
Torsten 2022 年 5 月 2 日
optns = odeset('MaxStep',1e-00,'RelTol',1e-7,'AbsTol',1e-7);
for i=1:size(alphaa,1)
INIT = @(x) alphaa(i,1:3);
BC = @(xl, yl, xr, yr, t)PDE_PSw_EK_BC(xl, yl, xr, yr, t, epsilon, alphaa);
PDE = @(x, t, y, DyDx)PDE_PSt_EK(x, t, y, DyDx, beeta, alphaa)
sol{i} = pdepe(m, PDE,INIT, BC, x, tspan, optns);
end

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeGeometry and Mesh についてさらに検索

タグ

製品


リリース

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by