How do I let the user enter an equation that is then able to be used in abs() calcualtions

1 次查看(过去 30 天)
I want the user to be able to enter a function that is then stored in y3 that I am able to use. I currently get an error with er=max(abs(y4-y3)); when i try and I and run it. I am able to make it work when I type the equation direcly into the code but not when getting from user input
x = 0:0.001:1;
fprintf(1,'For example: cos(x)\n');
s = input(' ', 's');
F = str2func(['@(x) ', s]);
y3 =F;
y4=x;
er=max(abs(y4-y3)); %maximum error
plot(x,y3);
title(['f(x) = ' s ' and Hermite interpolant, max. error is ' , num2str(er)]);
  1 个评论
Walter Roberson
Walter Roberson 2023-1-23
The code works for me when I use your input() instead of assigning a constant to s .
What problem do you observe?
It would be a problem if the user typed in a @() anonymous function definition instead of an expression. Or if the user expression does not include x

请先登录,再进行评论。

采纳的回答

Sulaymon Eshkabilov
Use this small change by specifying the input argument (x) in your code:
x = 0:0.001:1;
fprintf(1,'For example: cos(x)\n');
s = input(' ', 's');
F = str2func(['@(x) ', s]);
y3 =F(x); % This is necessary
y4=x;
er=max(abs(y4-y3)); %maximum error
plot(x,y3);
title(['f(x) = ' s ' and Hermite interpolant, max. error is ' , num2str(er)]);

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Function Handles 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by