Something must be a floating point scalar?

15 Ansichten (letzte 30 Tage)
Mathidiot Superfacial
Mathidiot Superfacial am 14 Mär. 2016
Kommentiert: Walter Roberson am 10 Apr. 2022
f=@(x,y) sqrt(9-x.^2-y.^2);
xmax=@(y) sqrt(9-y.^2);
volume=integral2(f,0,xmax,0,3)
But it says XMAX must be a floating point scalar? What's wrong?

Akzeptierte Antwort

James Tursa
James Tursa am 14 Mär. 2016
Bearbeitet: James Tursa am 14 Mär. 2016
The error message seems pretty clear. The x limits must by scalar values. The y limits can be functions of x. Just rearrange things so that is the case. Since f is symmetric with respect to x and y, you can just switch arguments.
integral2(f,0,3,0,xmax)
  2 Kommentare
Mathidiot Superfacial
Mathidiot Superfacial am 14 Mär. 2016
what if f is not symmetrical with respect to x and y? Can you still switch like that? for an integral is like SS f(x,y)dxdy, and say there is the code to evaluate like integral2(f,a,b,c,d) then are a and b always the bounds of the inner integral's variable? Or would a and b still be the bounds of x even when I'm trying to evaluate in reverse order like SS f(x,y)dydx ?
Walter Roberson
Walter Roberson am 14 Mär. 2016
Bearbeitet: Walter Roberson am 14 Mär. 2016
For 2D integrals, theory says that it does not matter which order you evaluate the integration. So define the function handle to be integrated so that the first parameter is the one with fixed bounds and the second parameter is the one with variable bounds. Remember it is not required that x be the first parameter.
f = @(y, x) x.^2 + x.*sin(y).^2;
xmax=@(y) sqrt(9-y.^2);
integral2(f, 0, 3, 0, xmax )

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Albert Justin
Albert Justin am 10 Apr. 2022
Enter the function f(x,y)=@(x,y) x.*y
Enter the outer integral lower limit:0
Enter the outer integral upper limit:a
Enter the inner integral lower limit:@(x) x.^2
Enter the inner integral upper limit:@(x) 2-x
i get the same error
  1 Kommentar
Walter Roberson
Walter Roberson am 10 Apr. 2022
a = 5;
f = @(x,y) x.*y
f = function_handle with value:
@(x,y)x.*y
xmin = 0
xmin = 0
xmax = a
xmax = 5
ymin = @(x) x.^2
ymin = function_handle with value:
@(x)x.^2
ymax = @(x) 2-x
ymax = function_handle with value:
@(x)2-x
integral2(f, xmin, xmax, ymin, ymax)
ans = -1.2823e+03

Melden Sie sich an, um zu kommentieren.

Community Treasure Hunt

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

Start Hunting!

Translated by