- Specify ranges for x1, x2 and parama using the linspace command.
- Use [X1,X2,PARAMA] = meshgrid(x1,x2,parama) to get volumetric input data.
- Evaluate your function F as DY3 = F(PARAMA,B,C,X1,X2)
- Plot the isosurface to the value 1e-4, e.g.
Plot 4D function with respect to two variables and a parameter
1 回表示 (過去 30 日間)
古いコメントを表示
There is a differential equation
. I would like to change the value of parameter value of A from
to
and plot C against
and Aas shown in the picture below.





I tried it in MATLAB as follows:
DY3 = {};
PARAMA = linspace(-0.067,0.067,20);%parameter A
for i=1:numel(PARAMA)
param.A = PARAMA(i);
otherparams;%m file that contains other parameters
Tend = 200;
Nt = 100;
RHS = @(t,x) func(t,x,param,1);
%Execution-----------------------------------------------------------------
x0 = [0.001,0.004,0.006]; %Initial condition
t = linspace(0,Tend,Nt); %TSPAN
options = odeset('RelTol',1e-4,'AbsTol',1e-4);
sol = ode45(RHS, t, x0, options);
[y,yp] = deval(sol,t);
x1 = y(1,:);
x2 = y(2,:);
dy3 = yp(3,:);%evaluate derivative
DY3{i} = dy3;
end
M = cell2mat(DY3);
[X1,X2,PARAMA] = meshgrid(x1,x2,PARAMA);
[faces,verts] = isosurface(x1,x2,PARAMA,M,0);
Whe I run this code I get the following error message.
Error using isosurface (line 79)
V must be a 3D array.
Can someone please help me to resolve this? Thank you very much!
0 件のコメント
採用された回答
Torsten
2022 年 4 月 30 日
I don't think that you really want to solve the differential equation.
To get volumetric data for DY3, you will have to do
2 件のコメント
Torsten
2022 年 5 月 1 日
Isosurfaces can be drawn from 3d-data (i.e. data that are given on a volume).
dy3 = f(x1,x2,Parama) can be 3d data if x1, x2 and Parama are independently prescribed and f is then used to evaluate them to get dy3.
In an ODE solution, x1 and x2 don't span a surface (2d), but only give a curve (1d). This means that DY3 is not 3d as necessary to get isosurfaces, but only 2d - thus itself a surface.
その他の回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!