INTEGRAL AT THE AREA

26 次查看(过去 30 天)
TT
TT 2014-10-13
评论: Mike Hosea 2014-10-13
Hello all,
Does anyone know how to integrate (x2*y3-x3*y2)+(y2-y3)*x+(x3-x2)*y; in MATLAB from domain x2 to x3 in X range and y2 to y3 in Y range?
Thanks!

采纳的回答

Mike Hosea
Mike Hosea 2014-10-13
编辑:Mike Hosea 2014-10-13
First define a function. This function must be able to accept an array and return an array. That is to say, if y1 = f(x1) and y2 = f(x2), where x1 and x2 are scalars, the function must also return [y1,y2] for f([x1,x2]). Actually the inputs will tend to be dozens or hundreds of elements long. There is more than one way to define a function in MATLAB, but the quickest is with the @ symbol. When you write @(x,y) it means that what follows that will be a function of x and y. That is to say, x and y will be treated as names of the variables of the function, and MATLAB will not try to evaluate the expression right then and there. So, it looks to me like you want to
1. First define x2, x3, y2, and y3. These will be scalar values. For example,
x2 = 0;
x3 = 1;
y2 = 0;
y3 = pi;
2. Define
f = @(x,y) (x2*y3-x3*y2) + (y2-y3)*x + (x3-x2)*y
Normally, I would have told you to be sure to use .* instead of * because .* is element-by-element multiplication and * is matrix multiplication, but in this case you basically have an expression of the form a + b*x + c*y, where a, b, and c are scalars. When one argument is a scalar * and .* are the same operation. Note that if you want to change x2, x3, y2, or y3, you must define f again because when you create the function, it takes a snapshot of all the variables other than the arguments.
3. Perform the integral
integral2(f,x2,x3,y2,y3)
  2 个评论
TT
TT 2014-10-13
Thank you,
However, I want x2,x3,y2,y3 to be remained after integration. In other words, I do not want to assign variables for them.
Thanks
Mike Hosea
Mike Hosea 2014-10-13
OK. So what you're saying is that, just as we wanted to define the integrand with "arguments", we want to define our integral with arguments. No problem! But because the x2, x3, y2, and y3 variables with have their values saved when the integrand function is defined, we will need to bring the definition of the integrand in-line. It will look cluttered, but try to see it as one thing at a time from the inside out.
q = @(x2,x3,y2,y3)integral2(@(x,y)(x2*y3-x3*y2) + (y3-y2)*x + (x3-x2)*y,x2,x3,y2,y3);
When you're ready to supply the x2, y3, y2, and y3 values, you can do this:
>> q(0,1,0,pi)
ans =
9.869604401089358
I took the liberty of changing your problem slightly. If I had left the second term as (y2 - y3)*x, the correct answer would always have been zero.
Now, if you were wanting a symbolic integral, producing an expression involving x2, x3, y2, and y3, then that involves the int command. I'll do it with your original problem first:
>> int((x2*y3-x3*y2)+(y2-y3)*x+(x3-x2)*y,y,y2,y3)
ans =
((y2 - y3)^2*(x2 - 2*x + x3))/2
>> int(ans,x,x2,x3)
ans =
0
And on the slightly different problem:
>> int((x2*y3-x3*y2)+(y3-y2)*x+(x3-x2)*y,y,y2,y3)
ans =
((y2 - y3)^2*(2*x + x2 + x3))/2
>> int(ans,x,x2,x3)
ans =
-(x2^2 - x3^2)*(y2 - y3)^2

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Numerical Integration and Differentiation 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by