Error: Function definitions are not permitted in this context.
조회 수: 8 (최근 30일)
이전 댓글 표시
I am not able to use function as all in my code, I am confused now that is using because I am suing R2015b version? Do I need to buy the toolbox ?
댓글 수: 0
채택된 답변
Walter Roberson
2019년 6월 19일
It is never valid to copy and paste a "function" definition to the command line. It is also not valid to eval() a character vector that contains a "function" definition.
In releases up to R2015a, it was never valid to have a "function" definition inside a script file (a .m file in which the first executable word was not "function" and not "classdef"). In R2015b, it became legal to define functions inside of script files, provided that they were after the script, and provided that every "function" definition ended with a corresponding "end" statement.
Whether in functions or scripts, there are places where it is not valid to have a function definition. For example it is not valid to have a function definition inside a for loop or if statement.
if true
function result = test %invalid function
result = 5;
end
end
댓글 수: 0
추가 답변 (2개)
Nishaben Desai
2019년 6월 19일
댓글 수: 2
Walter Roberson
2019년 6월 19일
No, you cannot run that code without having the symbolic toolbox.
You would have to numeric methods, such as using ode45(). That would not, however, give you the equation of the result.
Nishaben Desai
2019년 6월 19일
댓글 수: 2
Walter Roberson
2019년 6월 19일
If U is an unknown variable and dy/dt = u - y and presuming that U and u are the same thing, then you have three values to be concerned with: t, y(t), and u
If u is a constant, then integrating dy/dt = u - y on both sides, we get y = u*t - 1/2*y^2 + C for some boundary condition value C. y(0) = 0 tells us that u*0 + 1/2*0^2 + C = 0 which tells us that C = 0, so y = u*t - 1/2*y^2 which gives us that 1/2*y^2 + y - u*t = 0 which gives us that y = sqrt(2*t*u + 1) - 1 . We know this must stay in the range 0 to 90, and by examination we can see that it is largest when u is largest, so we can solve 90 == sqrt(2*t*u + 1) - 1 which would give us u = 4140/t . But time is potentially unlimited and this is not a constant in time.
From this we conclude that either u is not a constant or else time for the system is not unlimited.
Either way, we do not have enough information to determine u .
참고 항목
카테고리
Help Center 및 File Exchange에서 Special Values에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!