# Matlab function HW help please

• MATLAB
atrid32
Hi, i need to write function for the following.
W=k1x if x<d
W=k1x+2k2(x-d) if x>=d

Question is: Create function that computes distance x using the input parameters W, k1, k2, and d.
k1=10^4
k2=1.5*10^4
d=0.1
W=500 and 2000
so i get the formulas solving for x that are
x=W/k1 and x=(W+2k2d)/(k2+2k2)
but I dont know how to solve for x as I get error which says that x is not defined when i use if/else and i tried using for loop and got the same problem.
here is my code:
function x = spring (W)
k1=10^4;
k2=1.5*10^4;
d=0.1;
if x < 0.1
x=W/k1
else x >= 0.1
x=(W+(2*k2)*d)/(k1+(2*k2))
end

Amrsfmt
Hi,
I see the problem not with the code but with the concept of this calculation it self. If you took a look on what you have written it's obvious why doesn't it work.
How can you evaluate a function depending on the output of the function?
you say for example
y = 3 * x if y < 5
y = 5 * x + 7 if y >= 5
this conditions can't be on the dependent variable it can only be on the independent variable you can calculate it easily.
so y = 3 * x if x < 5/3
and y = 5 * x + 7 if x >= -2/5

I know that's are not mutual exclusive conditions. Which in fact what you are doing in first place?

but why matlab say this error?
review the code:
Code:
function x = spring (W)
k1=10^4;
k2=1.5*10^4;
d=0.1;
if x < 0.1
see untill this comparison you haven't made any evaluation for the x.
If your calculation are recurrsive - depend on the previous value of x -, then you can assume an inital value for x to make this comparison

That's all,
bye