Making the assumption to be the same as results

2 views (last 30 days)
Hi everyone! I dont know how to fit the parameter of b and n in my code to get the calculation of area equal 1. Could someone help me to modify it? I literally confuse how to fix this up. Thank you in advance before!
ro_init=0.2:0.1:100;
b=0.0517; % assume
n=1.0145; % assume
cdfVdp=(1-exp(-b*((2*ro_init).^n)));
pdfvdp=2*b*n*exp(-b*(2*ro_init).^n).*(2*ro_init).^(n-1);
area=trapz(ro_init,pdfvdp); %this results should be 1

Accepted Answer

KSSV
KSSV on 26 Oct 2020
Edited: KSSV on 26 Oct 2020
ro_init=0.2:0.1:100;
r = 200 ; c = 200 ; % Try increasing these values
B = linspace(0,0.1,r) ;
N = linspace(0.8,2,c) ;
[B,N] = meshgrid(B,N) ;
A = zeros(r,c) ;
for i = 1:r
for j = 1:c
b=B(i,j) ; % 0.0517; % assume
n=N(i,j) ; % 1.0145; % assume
% cdfVdp=(1-exp(-b*((2*ro_init).^n)));
pdfvdp=2*b*n*exp(-b*(2*ro_init).^n).*(2*ro_init).^(n-1);
area=trapz(ro_init,pdfvdp); %this results should be 1
A(i,j) = area ;
end
end
% GEt area equal to one
idx = abs(A-1)<10^-3 ;
[B(idx) N(idx)] % these are the values of b and n
  3 Comments
Kevin Isakayoga
Kevin Isakayoga on 26 Oct 2020
Edited: Kevin Isakayoga on 26 Oct 2020
By the way ,could you help me to explain why are my codes still not working if i change the value? and also what should i change?
clc;clear;
n=1000; %number of trial
rlower=0.002;
rupper=130; % Assume the initial radius in micron meter
r_initial=rlower+(rupper-rlower).*rand(1,n);
r_initial=sort(r_initial);
%r_initial=0.2:0.1:100;
r = 500 ; c = 500 ; % Try increasing these values
B = linspace(0.01,0.09,r) ;
N = linspace(0.9,1.4,c) ;
[B,N] = meshgrid(B,N) ;
A = zeros(r,c) ;
for i = 1:r
for j = 1:c
b=B(i,j) ; % 0.0517; % assume
n=N(i,j) ; % 1.0145; % assume
% cdfVdp=(1-exp(-b*((2*ro_init).^n)));
pdfvdp=2*b*n*exp(-b*(2*r_initial).^n).*(2*r_initial).^(n-1);
area=trapz(r_initial,pdfvdp); %this results should be 1
A(i,j) = area ;
end
end
% GEt area equal to one
idx = abs(A-1)<10^-3 ;
[B(idx) N(idx)] % these are the values of b and n
the answer will be like this,
ans =
0×2 empty double matrix
Looking forward to hearing from you. Thank you!
KSSV
KSSV on 26 Oct 2020
Try decreasing the tolerance value.
idx = abs(A-1)<10^-2 ;

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!