3 views (last 30 days)

Show older comments

This is my initial:

function V = fitnessFcn(Q)

deltad = -24.268; X=0.202;

V = sqrt ((Q(30)*X)/(2*(1-cos(deltad/2))));

Answer: V = fitnessFcn(rand(1,30))

V =

0.4335

>> V = fitnessFcn(rand(1,30))

V =

0.4956

>> V = fitnessFcn(rand(1,30))

V =

0.7894

>> V = fitnessFcn(rand(1,30))

V =

0.6970

>> V = fitnessFcn(rand(1,30))

V =

0.5132

>> V = fitnessFcn(rand(1,30))

V =

0.7035

>> V = fitnessFcn(rand(1,30))

V =

0.8027

>> V = fitnessFcn(rand(1,30))

V =

0.7466

>> V = fitnessFcn(rand(1,30))

V =

0.8897

>> V = fitnessFcn(rand(1,30))

V =

0.7190

>> V = fitnessFcn(rand(1,30))

V =

0.8302

>> V = fitnessFcn(rand(1,30))

V =

0.4334

>> V = fitnessFcn(rand(1,30))

V =

0.3439

>> V = fitnessFcn(rand(1,30))

V =

0.8189

>> V = fitnessFcn(rand(1,30))

V =

0.6515

>> V = fitnessFcn(rand(1,30))

V =

0.8410

>> V = fitnessFcn(rand(1,30))

V =

0.8377

>> V = fitnessFcn(rand(1,30))

V =

0.7555

>> V = fitnessFcn(rand(1,30))

V =

0.4869

>> V = fitnessFcn(rand(1,30))

V =

0.2456

>> V = fitnessFcn(rand(1,30))

V =

1.0383

So when I run the program, the answer for V will get a random number until I get the value in range 0.95<V<1.05.

After editing:

function V = fitnessFcn(Q)

deltad = -24.268; X=0.202;

V = sqrt ((Q(30)*X)/(2*(1-cos(deltad/2))));

if (V <= 1.05 V >= 0.95) true else false end

Answer:

V = fitnessFcn(rand(1,30))

ans =

1

V =

0.6990 (this value still not in range of 0.95 until 1.05)

How about if I want the answer between 0.95<V<1.05 automatically means that it will give the answer correct based on the range (0.95<V<1.05). Can anyone help me on this??

Aleksander
on 29 Mar 2011

just put a for loop around your while statement for example (and this is quick and dirty - might want to make it more efficient and 'nice':

b=[];

for i=1:30

while

statement

end

V=[V b]

end

Jan
on 28 Mar 2011

This is a strange line:

if (V <= 1.05 V >= 0.95) true else false end

What does it mean? Perhaps you want this:

if (0.95 <= V) && (V <= 1.05)

reply = true;

else

reply = false;

end

Or shorter:

reply = (0.95 <= V) && (V <= 1.05);

Aleksander
on 28 Mar 2011

From what I can tell, there's nothing in your statement that tells your program to continue executing until the condition 0.95<=V<=1.05 is true. I'm not sure what you're trying to do, but look copy and run this code for example. It will always produce a number within your range. you can "beautify" it but the point is that there is something in there that changes the value until the condition is true:

Q = rand(1,30);

deltad = -24.268;

X=0.202;

V = sqrt ((Q(30)*X)/(2*(1-cos(deltad/2))));

while (0.95 > V) || (V > 1.05)

Q = rand(1,30);

deltad = -24.268;

X=0.202;

V = sqrt ((Q(30)*X)/(2*(1-cos(deltad/2))));

end

V

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

Start Hunting!