MATLAB How to Solve for x in a MATLAB Function Using Given Parameters?

  • Thread starter Thread starter atrid32
  • Start date Start date
  • Tags Tags
    Function Matlab
AI Thread Summary
The discussion revolves around creating a function to compute the distance x based on the given formulas and parameters. The user encounters an error stating that x is not defined when using if/else statements in their MATLAB code. The key issue identified is the misuse of the variable x within the conditional statements before it has been defined or calculated. The suggestion is to evaluate x based on the input W first, rather than trying to use x in the condition. The correct approach involves defining x as a function of W and ensuring that the conditions are based on W rather than x itself. The conversation emphasizes the importance of correctly structuring conditional logic in programming to avoid recursive dependencies that lead to errors.
atrid32
Messages
1
Reaction score
0
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 don't 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

Any help please?
 
Physics news on Phys.org
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 until 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
 

Similar threads

Replies
4
Views
4K
Replies
4
Views
2K
Replies
1
Views
1K
Replies
1
Views
2K
Replies
6
Views
4K
Replies
2
Views
2K
Back
Top