MATLAB Answers

Uniformly distributed random variables

5 views (last 30 days)
Iam stuck in a part of the following question-
Plot the distribution of two resistors in a parallel connection assuming that they each have measured values, which vary uniformly about their nominal values by ±5%
I have approached this problem in the following way -
x = zeros(10000,1) ;
R1 = rand(1,1) ;
R2 = rand(1,1) ;
for i = 1:10000
x(i,1) = (R1*R2)/(R1+R2) ;
end
histogram(x,'normalization','pdf')
RIght now I dont have the idea about how to adjust the nominal values in the rand function . Please help :)
  1 Comment
the cyclist
the cyclist on 5 Apr 2021
I edited your code using the CODE button in the toolbar, and run it, show in your plot.

Sign in to comment.

Accepted Answer

Chad Greene
Chad Greene on 5 Apr 2021
Ah, this is a fun question, because the concept it's getting at is quite common across science and engineering.
The process of manufacturing resistors isn't perfect, so a 100 Ohm resistor might actually have a value anywhere between 95 and 105 Ohms. To make a uniform distribution of values between 95 and 105 Ohms, you could use the rand function, which creates values between 0 and 1. This means you'll want to multiply rand by 2 times the full spread, and center it so half the values are less than zero and half the values are greater than zero.
percent_error = 5;
NominalResistance = 100;
ErrorDistribution = 2*(percent_error/100)*NominalResistance*(rand(1000,1)-0.5);
R = NominalResistance + ErrorDistribution;
histogram(R)
  2 Comments
Anand Kumar
Anand Kumar on 5 Apr 2021
Thanks Chad for the explanation.

Sign in to comment.

More Answers (2)

David Hill
David Hill on 5 Apr 2021
nomR1=1000;
nomR2=2000;
R1=nomR1*(.05*(2*rand(1,1e4)-1)+1);
R2=nomR2*(.05*(2*rand(1,1e4)-1)+1);
x=(R1.*R2)./(R1+R2);
  2 Comments
Anand Kumar
Anand Kumar on 5 Apr 2021
Thank you David. @the cyclist Thanks for your advice , I won't copy.

Sign in to comment.


the cyclist
the cyclist on 5 Apr 2021
The main reason your output looks like this is that you are only generating ONE random value for each resistor -- and then recalculating x over and over again, with those values.
So, you need to change your code so that you generate a new random value for each value of x. (Check out the documentation on rand to see how to generate many values at once.)
You can generate a uniform random value with mean m and width w by doing
m = 37;
w = 2;
R1 = m + w*(rand(1,1) - 0.5)
R1 = 37.8963
  1 Comment
Anand Kumar
Anand Kumar on 5 Apr 2021
Yes I got the point . Thank you for the explanation :)

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!