Definite integral with complex number

I need to solve an integral of the function f=(wn.*t).*exp(1i.*2.*pi.*t) where wn=1 and have complex numbers, it is a definite integral of 0 to 0.3 and I have to obtain a numeric answer. I tried to do with the comands int and integral but doesn`t help me because this comands uses symbolics variables and I need numeric answers, and I tried to obtain the sum under the wave but I couldn`t solve it. Can someone help me?

Answers (2)

Use the vpa function:
syms wn t
wn = sym(1);
f = (wn.*t).*exp(1i.*2.*pi.*t);
f_int = int(f, t, 0, 0.3)
f_int_num = vpa(f_int)
f_int =
- 1/(4*pi^2) - (((pi*3i)/5 - 1)*(1/4 + (2^(1/2)*(5^(1/2) + 5)^(1/2)*1i)/4 - 5^(1/2)/4))/(4*pi^2)
f_int_num =
0.012251815898938149373515863015179 + 0.038845017631697804582142824751429i

6 Comments

Thank you so much, the truth is that I´m little bit confusing because a professor tell me that the result that I must obtain is 0.300000, the way that I choose for try to obtain that result was to take the absolute of the result but I obtained the same result as you, and the absolute for this is 0.0407 that definitely is not the 0.3000 that the professor tell me. The code that I used was
an=int(wn.*(t).*exp(1i.*2.*pi.*t),0,0.3);
area=double(an);
I=abs(area);
Do you know how evaluate this integral with a program to obtain the area under the wave?, I tried to do too but I obtained the same result.
My pleasure.
If the absolute value of the integrated function is supposed to be 0.3 and you want to find the upper integration limit, my code changes to:
syms wn t u_lim
wn = sym(1);
f = (wn.*t).*exp(1i.*2.*pi.*t);
upper_limit = vpasolve(abs(int(f, t, 0, u_lim)) == 0.3, u_lim)
abs_upper_limit = abs(upper_limit)
upper_limit =
- 1.2344562607584131074713514095035 - 0.079932307838809295659734063695053i
abs_upper_limit =
1.2370414033338097576212422129676
Does this do what you want?
I`m not sure but I will share it with my professor to check it, thank you so much for your support. I will tell you if the code is that I need.
I checked with my professor and I have a mistake, the function is incorrect. Wn is not multiplied by t, it is in function of t. I mean, the correct expression is wn(t) not wn.*t, do you know how I can register that in the code?
My pleasure.
Please let me know.
To define ‘wn(t)’ as uniformly equal to 1 definitely changes the result:
syms wn t u_lim wn(t)
wn(t) = sym(1);
f = wn*exp(1i*2.*pi*t);
upper_limit = vpasolve(abs(int(f, t, 0, u_lim)) == 0.3, u_lim)
abs_upper_limit = abs(upper_limit)
upper_limit =
61.162453359143770665259861917249 - 0.1257699093208763500021861131513i
abs_upper_limit =
61.162582670939654308556507428042
Is the rest correct? Are you solving for the upper limit of integration that will make the integral equal to 0.3? If so, this works.

Sign in to comment.

Hello Diana, symbolic variables are a great thing, but if you are looking for a numerical result and are happy with 15 or so sigfigs, it isn't like they have to be invoked. You can just do
ff = @(t,wn) (wn.*t).*exp(1i.*2.*pi.*t) % or you could define this in an mfile
integral(@(t) ff(t,1),0,.3) % pass in wn =1
format long
ans = 0.012251815898938 + 0.038845017631698i
Now that symbolic variables are much better integrated into Matlab, sometimes I wonder if they are getting overused.

4 Comments

Thank you so much David, the truth is that I must do other details in my integral that does not allow me to handle symbolic variables, I had problems with them so I try to avoid them. And I´m little bit confusing because a professor tell me that the result that I must obtain is 0.300000, the way that I choose for try to obtain that result was to take the absolute of the result but I obtained the same result as you, and the absolute for this is 0.0407 that definitely is not the 0.3000 that the professor tell me. The code that I used was
an=int(wn.*(t).*exp(1i.*2.*pi.*t),0,0.3);
area=double(an);
I=abs(area);
Do you know how evaluate this integral with a program to obtain the area under the wave?, I tried to do too but I obtained the same result. I`ve been trying to do this many days but I obtain the same result in each code that I do.
Hi Diana, I think it's time to talk to your prof because it seems like there must be some kind of mistake. You and two of us on this site have all gotten the same answer, given the integrand and the integration limits that were specified.
Yes, I will share with him to check it. Thanks for you support.
I checked with my professor and I have a mistake, the function is incorrect. Wn is not multiplied by t, it is in function of t. I mean, the correct expression is wn(t) not wn.*t, do you know how I can register that in the code?

Sign in to comment.

Asked:

on 17 Jan 2017

Commented:

on 18 Jan 2017

Community Treasure Hunt

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

Start Hunting!