Question about calling user defined function to another script

2 次查看(过去 30 天)
hello
first here is my user_defined_function code.(name is A_execute1.m)
function A=A_execute1(r)
global V;
A=pi*r*(sqrt(r^2+((9*V^2)/(pi^2*r^4))));
end
second, this is the script file(i made) that i want to call A_execute1 file to.
(to draw graph to see)
r=[-100:0.01:100];
V=10;
fminbnd('A_execute1',-100, 100)
plot(r,A_execute1(r)), xlabel('r'), ylabel('A')
grid
but it says error that
Error using fminbnd (line 237)
User supplied objective function must return a scalar
value.
Error in test4 (line 3)
fminbnd('A_execute1',-100, 100)
why it says that error?
i think i designed scalar value, not vector.

采纳的回答

Matt J
Matt J 2022-10-27
编辑:Matt J 2022-10-27
It returns empty.
%r=[-100:0.01:100];
V=10;
A_execute1(-100)
ans = []
Don't use global variables. Use anonymous functions, or other alternatives discussed here.
[r,fval]=fminbnd(@(r) A_execute2(r,V),-100,100)
r = -99.9999
fval = -3.1416e+04
function A=A_execute1(r)
global V;
A=pi*r*(sqrt(r^2+((9*V^2)/(pi^2*r^4))));
end
function A=A_execute2(r,V)
A=pi*r*(sqrt(r^2+((9*V^2)/(pi^2*r^4))));
end
  3 个评论
Hakyoon Kim
Hakyoon Kim 2022-10-27
thx for your answer.
can i draw graph through anonymous function?
plot(@(r)), xlabel(''), ylabel('')
grid
or
plot(fun), xlabel(''), ylabel('')
grid

请先登录,再进行评论。

更多回答(0 个)

类别

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

产品


版本

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by