Question about calling user defined function to another script

2 Ansichten (letzte 30 Tage)
N/A
N/A am 27 Okt. 2022
Kommentiert: Stephen23 am 27 Okt. 2022
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.

Akzeptierte Antwort

Matt J
Matt J am 27 Okt. 2022
Bearbeitet: Matt J am 27 Okt. 2022
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 Kommentare
N/A
N/A am 27 Okt. 2022
thx for your answer.
can i draw graph through anonymous function?
plot(@(r)), xlabel(''), ylabel('')
grid
or
plot(fun), xlabel(''), ylabel('')
grid
Matt J
Matt J am 27 Okt. 2022
Yes, using fplot,
fun=@(r) r.^2;
fplot(fun, [-1,1])
or with,
r=linspace(-1,1);
plot(r,fun(r))

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu 2-D and 3-D Plots finden Sie in Help Center und File Exchange

Produkte


Version

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by