Double Integral unkown limits
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
erhan aksu
am 10 Feb. 2019
Kommentiert: John D'Errico
am 11 Feb. 2019
Hi
In this problem a=0.5 b=0.1 funa*x.^2 + b*y.^2 0<x<5 0<y<2xk and q=125. I try fo find that What is the value of the k? now I don't know a value but I know q. How can I estimate a value and use random command for a value.
a =0.5;
b = 0.1;
fun = @(x,y) a*x.^2 + b*y.^2;
%0<x<5 0<y<2xk
ymax=2*x*k
q = integral2(fun,0,5,0,ymax)==125 % real value 125
What is the value of the k???
4 Kommentare
Walter Roberson
am 10 Feb. 2019
Instead of passing ymax to integral2, pass @(x) ymax(x,k)
Meanwhile, the @(x,y,k)fun(x,y) should just be fun as no third parameter is going to be passed by integral2 and fun does not need k.
Akzeptierte Antwort
John D'Errico
am 10 Feb. 2019
Bearbeitet: John D'Errico
am 10 Feb. 2019
Basic calc? I hope this is not homework. But at least you made some effort.
You have formulated the problem as
q = int( int( a*x^2 + b*y^2,0,2*x*k), 0,5)
Where a, b, q are all known. The problem is, you want to solve for k, where k is part of that upper limit on y. We can do this on paper, at last most of it, but easy enough to do entirely in MATLAB too.
syms x y k
q = 125;
a = 0.5;
b = 0.1;
The symbolic toolbox is smart enough to recognize the decimal values 0.5 and 0.1 as their true fractional equivalents.
We can do the inner integral on y easily enough.
int(a*x^2 + b*y^2,y,0,2*x*k)
ans =
(k*x^3*(4*k^2 + 15))/15
So we should see the double integral is simple too.
dubint = int(int(a*x^2 + b*y^2,y,0,2*x*k),x,0,5)
dubint =
(125*k*(4*k^2 + 15))/12
What we see is a cubic polynomial in k.
solve(dubint == 125,'maxdegree',3)
ans =
(269^(1/2)/8 + 3/2)^(1/3) - 5/(4*(269^(1/2)/8 + 3/2)^(1/3))
5/(8*(269^(1/2)/8 + 3/2)^(1/3)) - (3^(1/2)*(5/(4*(269^(1/2)/8 + 3/2)^(1/3)) + (269^(1/2)/8 + 3/2)^(1/3))*1i)/2 - (269^(1/2)/8 + 3/2)^(1/3)/2
(3^(1/2)*(5/(4*(269^(1/2)/8 + 3/2)^(1/3)) + (269^(1/2)/8 + 3/2)^(1/3))*1i)/2 + 5/(8*(269^(1/2)/8 + 3/2)^(1/3)) - (269^(1/2)/8 + 3/2)^(1/3)/2
Kind of a symbolic mess. But vpa can reduce it simply.
vpa(ans)
ans =
0.70611518025253139152901981827648
- 0.35305759012626569576450990913824 - 2.0307508428749447828026672218255i
- 0.35305759012626569576450990913824 + 2.0307508428749447828026672218255i
Now, could I have done that on paper? Yes, except for the last part, where I'd probably have thrown the cubic polynomial into roots to solve.
expand(dubint)
ans =
(125*k^3)/3 + (625*k)/4
>> roots([125/3 0 625/4 -125])
ans =
-0.353057590126266 + 2.03075084287495i
-0.353057590126266 - 2.03075084287495i
0.706115180252531 + 0i
Could you have done it without using the symbolic toolbox? Yes. It is a bit easier to do the integration symbolically, and I am a bit lazy. I'd certainly have done the integrations on paper as calc 101.
Verification step:
k = 0.706115180252531;
ulimy = @(x) 2*x*k;
integral2(@(x,y) a*x.^2 + b*y.^2,0,5,0,ulimy)
ans =
125.000000000043
Ok. Could I have solved it using fzero and integral2? Do I really need to? Sigh.
k = fzero(@(k) integral2(@(x,y) a*x.^2 + b*y.^2,0,5,0,@(x) 2*x*k) - 125,[0.1,5])
k =
0.706115180252333
It seems to have worked this way too. I suppose if the integrand were more complicated, you would have had no choice in the matter.
4 Kommentare
John D'Errico
am 11 Feb. 2019
Ah. Ok. I just got too busy with the other solutions, that the last one got lost. I do that sometimes.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!