How to input multiple value of 'lbar' like 0.1, 0.2 , 0.3 and multiple value of 'sigma' like 0.1, 0.15, 0.2 to obtain multiple output values of W?

4 views (last 30 days)
% For plane slider: H = Ho + a(1-x)
Ho = 1;
alpha = 0.1;
eps = 0.1;
a = 1.0;
lbar = 0.3;
sigma = 0.15;
H = @(x) Ho + a*(1 - x);
G1 = @(x) H(x).^3 + 3 .* H(x).^2 .* alpha + 3 .* H(x) .* alpha^2 + 3 .* H(x) .* sigma^2 + eps + 3*sigma^2*alpha + alpha^3 - 12*lbar^2 .* (H(x) + alpha);
G2 = @(x) 24 * lbar^3 .* tanh(H(x)./(2*lbar));
G3 = @(x) (12*lbar^2*alpha - eps - alpha^3 - 3*sigma^2*alpha) .* (1 - (tanh(H(x)./(2*lbar))).^2);
G = @(x) G1(x) + G2(x) + G3(x);
Hm1 = @(x) H(x).* (1 ./ G(x));
Hm2 = @(x) (1 ./ G(x));
IntHm1 = integral(Hm1,0,1);
IntHm2 = integral(Hm2,0,1);
Hm = IntHm1 / IntHm2
P1 = @(x) 6 .* (1 ./ G(x)) .* (H(x) - Hm);
P2 = @(x) integral(P1,0,x);
W = integral(P2,0,1, 'ArrayValued', true)

Accepted Answer

Torsten
Torsten on 6 Jun 2022
% For plane slider: H = Ho + a(1-x)
Ho = 1;
alpha = 0.1;
eps = 0.1;
a = 1.0;
LBAR = 0.1:0.01:0.3;
SIGMA = 0.1:0.01:0.2;
result = zeros(numel(LBAR),numel(SIGMA));
for i=1:numel(LBAR)
lbar = LBAR(i);
for j = 1:numel(SIGMA)
sigma = SIGMA(j);
H = @(x) Ho + a*(1 - x);
G1 = @(x) H(x).^3 + 3 .* H(x).^2 .* alpha + 3 .* H(x) .* alpha^2 + 3 .* H(x) .* sigma^2 + eps + 3*sigma^2*alpha + alpha^3 - 12*lbar^2 .* (H(x) + alpha);
G2 = @(x) 24 * lbar^3 .* tanh(H(x)./(2*lbar));
G3 = @(x) (12*lbar^2*alpha - eps - alpha^3 - 3*sigma^2*alpha) .* (1 - (tanh(H(x)./(2*lbar))).^2);
G = @(x) G1(x) + G2(x) + G3(x);
Hm1 = @(x) H(x).* (1 ./ G(x));
Hm2 = @(x) (1 ./ G(x));
IntHm1 = integral(Hm1,0,1);
IntHm2 = integral(Hm2,0,1);
Hm = IntHm1 / IntHm2;
P1 = @(x) 6 .* (1 ./ G(x)) .* (H(x) - Hm);
P2 = @(x) integral(P1,0,x);
W(i,j) = integral(P2,0,1, 'ArrayValued', true);
end
end
[LBAR,SIGMA]=meshgrid(LBAR,SIGMA);
surf(LBAR.',SIGMA.',W)

More Answers (0)

Community Treasure Hunt

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

Start Hunting!