Error calculating an integral: ""Input function must return 'double' or 'single' values. Found 'sym'."" How can i get the %% integral(F_potext,0,a) %% done? Thanks for the help :)
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Enrique Villa Coronado
am 15 Dez. 2020
Kommentiert: Enrique Villa Coronado
am 18 Dez. 2020
a=3; b=(2/3)*a; h=0.01;
q0 = -1000;
syms x y z c
X_m = [0 0 (x/a)^2 (x/a)^3 (x/a)^4];
Y_n = [0 0 (y/b)^2 (y/b)^3 (y/b)^4];
fn = sym([0 0 0 0 0]);
for i=1:5
for j=1:5
fn(i) = fn(i) + X_m(i)*Y_n(j);
end
end
Pot_ext = [0 0 0 0 0];
for i=1:5
F_potext = @(x) ((q0.*x)./a)*subs(fn(i),y,2*b/3);
Pot_ext(i) = integral(F_potext,0,a)
end
0 Kommentare
Akzeptierte Antwort
Walter Roberson
am 18 Dez. 2020
a=3; b=(2/3)*a; h=0.01;
q0 = -1000;
syms x y z c
X_m = [0 0 (x/a)^2 (x/a)^3 (x/a)^4];
Y_n = [0 0 (y/b)^2 (y/b)^3 (y/b)^4];
fn = sym([0 0 0 0 0]);
for i=1:5
for j=1:5
fn(i) = fn(i) + X_m(i)*Y_n(j);
end
end
Pot_ext = [0 0 0 0 0];
for i=1:5
F_potext = matlabFunction(((q0.*x)./a)*subs(fn(i),y,2*b/3), 'vars', x);
Pot_ext(i) = integral(F_potext,0,a, 'arrayvalued', true);
end
Pot_ext
The reason for the 'arrayvalued', true is that the first two entries in fn come out as 0, so the code does a
matlabFunction(sym(0), 'vars', x)
which generates @(x) 0.0 as the anonymous code. But when you use that code in integral() or fplot() you have a problem because those pass in arrays of x values and require that you return back an array of the same size, but @(x) 0.0 returns back a single x not an array.
Weitere Antworten (1)
Abhishek Gupta
am 18 Dez. 2020
Hi,
Referring to the following MATLAB Answers, which might help you in resolving the issue: -
0 Kommentare
Siehe auch
Kategorien
Mehr zu Number Theory finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!