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?

回答 (2 件)

Star Strider
Star Strider 2017 年 1 月 18 日

0 投票

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 件のコメント

Pilar Jiménez
Pilar Jiménez 2017 年 1 月 18 日
編集済み: Pilar Jiménez 2017 年 1 月 18 日
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.
Star Strider
Star Strider 2017 年 1 月 18 日
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?
Pilar Jiménez
Pilar Jiménez 2017 年 1 月 18 日
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.
Pilar Jiménez
Pilar Jiménez 2017 年 1 月 18 日
編集済み: Pilar Jiménez 2017 年 1 月 18 日
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?
Star Strider
Star Strider 2017 年 1 月 18 日
My pleasure.
Please let me know.
Star Strider
Star Strider 2017 年 1 月 18 日
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.

サインインしてコメントする。

David Goodmanson
David Goodmanson 2017 年 1 月 18 日
編集済み: David Goodmanson 2017 年 1 月 18 日

0 投票

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 件のコメント

Pilar Jiménez
Pilar Jiménez 2017 年 1 月 18 日
編集済み: Pilar Jiménez 2017 年 1 月 18 日
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.
David Goodmanson
David Goodmanson 2017 年 1 月 18 日
編集済み: David Goodmanson 2017 年 1 月 18 日
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.
Pilar Jiménez
Pilar Jiménez 2017 年 1 月 18 日
Yes, I will share with him to check it. Thanks for you support.
Pilar Jiménez
Pilar Jiménez 2017 年 1 月 18 日
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?

サインインしてコメントする。

質問済み:

2017 年 1 月 17 日

コメント済み:

2017 年 1 月 18 日

Community Treasure Hunt

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

Start Hunting!

Translated by