• Sep 11th 2013, 01:33 AM
rc2208
Hi, my code keeps giving me the following error:

Undefined function or variable 'u'.

Error in
program1/@(x)exp(-v.^3*a*x.^-3*q)/(x*(exp(u*x/(k*S))-1))

fx = FUN(x);

[y,too_close] = evalFun(t2t);

[fx,too_close] = f(x);

Error in program1 (line 46)

I have tried for ages to figure out what the problem is but I'm not getting anywhere, so if anyone could offer some advice it would be much appreciated.

Here is the problem section of the code:

for m = 1:n

if m == 1
q = 0;
else
q = d*(symsum(y(z*d),z,1,m-1) + y(m*d));
end

syms x

f = @(x,u) exp(-v.^3*a*x.^-3*q)/(x*(exp(u*x/(k*S))-1));

g = @(u) abs(2*pi*k*a*R.^2*v.^3*c.^-2*u*(m*d).^2*Q - B*(H-u).^2);

u1 = 0;
u2 = H;

if g(u1) < 500
y(m) = u1;

elseif g(u2) < 500
y(m) = u2;

elseif g(u2) <= g(u1)
u1 = 0.5*(u1+u2);

elseif g(u1) < g(u2)
u2 = 0.5*(u1+u2);

end

Basically, the code is trying to solve the equation 2*pi*k*a*R.^2*v.^3*c.^-2*u*(m*d).^2*Q = B*(H-u).^2 for u using an iterative method.
d, n, v, a, S, k, c, H, b are all constants that have been defined earlier in the program.

I'm fairly new to matlab by the way, so I'm sure the error is something stupid on my part. For example, I'm not sure if I've defined the functions f and g correctly for how I want to use them - I have tried several different ways of defining them but had no luck :(

Thanks again for any help.
• Sep 11th 2013, 10:45 PM
zzephod