How to handle with double integral with complicated expressions?

2 vues (au cours des 30 derniers jours)
SeungHoon
SeungHoon le 13 Nov 2014
Réponse apportée : Orion le 13 Nov 2014
I want to do double integral with complicated expressions. simply , my code is that:
>> r=3;
>> t=2;
>> q= @(x,y) (x+(t./2)).^2+(x+(t./2)).*y.^2;
>> p = @(x,y) ((x+t)./2).^2+(x+(t./2)).*y.^2;
>> func = @(x,y) sqrt((q - x).^2 - r.^2) + asin(r.^2 - (p-x).^2);
>> y_min = @(x) sqrt(r.^2 - (x-t).^2);
>> y_max = @(x) sqrt(r.^2-(x-((t./2)-r)).^2);
after these codes, then I add this statement for double integral.
>> integral2(func, 0, t./2, y_min, y_max)
and I have this kinds of error messages.
함수 'minus'은(는) 'function_handle'형 입력 인수에 대해 정의되지 않았습니다.
오류 발생: @(x,y)sqrt((q-x).^2-r.^2)+asin(r.^2-(p-x).^2)
오류 발생: integral2Calc>integral2t/tensor (line 228) Z = FUN(X,Y); NFE = NFE + 1;
오류 발생: integral2Calc>integral2t (line 55) [Qsub,esub] = tensor(thetaL,thetaR,phiB,phiT);
오류 발생: integral2Calc (line 9) [q,errbnd] = integral2t(fun,xmin,xmax,ymin,ymax,optionstruct);
오류 발생: integral2 (line 106) Q = integral2Calc(fun,xmin,xmax,yminfun,ymaxfun,opstruct);
sorry for some Koreans.
how can I solve this problem?

Réponses (1)

Orion
Orion le 13 Nov 2014
Hi,
you defined q and p as function handles, and then you use them inside another function handle func.
in func you're asking to do a minus operation between x which will be a numerical parameter and q which is a function handle. this is a non-sense, that's the reason you get an error
Undefined function 'minus' for input arguments of type 'function_handle'.
just write func in one big line, replacing q and p with their expression.
func = @(x,y) sqrt(((x+(t./2)).^2+(x+(t./2)).*y.^2 - x).^2 - r.^2) + asin(r.^2 - (((x+t)./2).^2+(x+(t./2)).*y.^2-x).^2);
this way it will work.

Catégories

En savoir plus sur Numerical Integration and Differential Equations dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by