Calculating double integral of a single variable
조회 수: 16 (최근 30일)
이전 댓글 표시
I want to calculate the double integral int [E1,E2] ( f(x) * {int [E1,x] (g*dy)} * dx)
I am trying to solve this integral by breaking it into two ode's and then solving the ode's simultaneously using ode45 but I am not sure if this is the correct way to solve this integral.
Can anyone suggest me if I am doing it correctly or is there any other way to do it?
Thanks.
댓글 수: 2
Roger Stafford
2013년 1월 26일
No, I don't think that is valid. Solving a double integral with respect to two different variables x and y could be done by solving a particular kind of partial differential equation with boundary conditions corresponding to the integration limits, but that would not in general be an easier solution. It is better to solve double integrals using the tools that have been designed for that purpose.
Roger Stafford
2013년 1월 26일
I'll have to modify my previous statement. If the g integrand in your expression is a function only of y, then you could solve your double integral as the solution of an ordinary differential equation. If g also depends on x I think you're out of luck.
답변 (2개)
Mike Hosea
2013년 1월 28일
Three ways:
integral2(@(x,y)f(x).*g(x,y),E1,E2,E1,@(x)x)
integral(@(x)f(x).*integral(@(y)g(x,y),E1,x),E1,E2,'ArrayValued',true)
integral(@(x)f(x).*arrayfun(@(x)integral(@(y)g(x,y),E1,x),x),E1,E2,'ArrayValued',true)
Things simplify just slightly if g is only a function of y.
댓글 수: 0
Muhammad Danish
2015년 2월 18일
Hi Mike Hosea, I have been following your posts to find a solution to my problem but not yet able to solve it yet.
I want to integrate a pressure equation to get the hydrodynamic bearing forces. the way I am doing it is as follows: function [forceR,forceT]=forces(eps,epsd,dalfa,ombar)
c=0.0001; Rb=0.024; Rj=Rb-c; Lb=0.02; u=0.01;
del0=(atan(epsd/(eps*(ombar-dalfa)))); del1=del0+pi;
z0=0; z1=z0-(Lb/2); z2=z0+(Lb/2);
%Pr=(((6.*u.*c)./((c.*(1+eps.*cos(del0))).^3)).*((epsd.*cos(del0))+(eps.*(dalfa-ombar).*sin(del0))).*((z0.^2)-(0.25*(Lb^2))));
fun1 = @(del,z)((((6.*u.*c)./((c.*(1+eps.*cos(del))).^3)).*((epsd.*cos(del))+(eps.*(dalfa-ombar).*sin(del))).*((z.^2)-(0.25*(Lb^2)))).*cos(del)); fun2 = @(del,z)((((6.*u.*c)./((c.*(1+eps.*cos(del))).^3)).*((epsd.*cos(del))+(eps.*(dalfa-ombar).*sin(del))).*((z.^2)-(0.25*(Lb^2)))).*sin(del));
forceR=-integral2(fun1,del0,del1,z1,z2)*Rb; forceT=-integral2(fun2,del0,del1,z1,z2)*Rb;
end
fun1 and fun 2 are dependent on del and z and the upper and lower limits are from del0 to del1 and z1-z2.
this is an embedded function in a simulink model. (coder.extrinsic).
The program starts running then give me an error when the simulation reaches 2-3 percent.
I shall be really grateful if anyone of you could help me in this.
Regards Danish
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!