View Full Version : Problem on QDAWO in fortran

Aarahan

05-01-2008, 04:00 AM

Hi everyone:);)

I have a question about IMSL library ,use of QDAWO function in Fortran90

As you know in this function we can use X as variable , but I want to solve this problem;

U(t)=integral(0,t){f(x)*sin[ω(t-x) ]}dx

And here we have ω as OMEGA and ( t-x ) as variable x ,what can I do to solve this problem?:confused:

Is there any function in fortran90 library which can solve this?

Anybody can help me?:confused:

Richard Hanson

05-01-2008, 06:42 AM

There are codes in the Fortran library or algorithms in books that can do this calculation. But more detail about the problem is needed before specifics.

What is a typical f(x) that occurs for you?

Give a range for t.

Give a range for \omega.

State the accuracy requirements.

Aarahan

05-01-2008, 02:40 PM

Thank you:);

here is the complete problem;

http://www.freewebs.com/sartipjoon/Math/integ.gif

Where;

>>a and b are limits of integration;

>>ωd, ωn,ξ,t and A are input number;

>>x is variable;

I use QDAWO function of IMSL library, in this function the weight you can use x as variable(sinx) but I should use sin(t-x);

Do you think this is the correct function?

If so help me solve the problem if not give me the correct function, thank again:)

Richard Hanson

05-01-2008, 04:07 PM

Using that routine would probably be fine. But change integration variables to get U(t) into a form where the routine directly applies. This change of variable can be done once, no matter how you do the integration.

Define the integration variable by \omega_d(t-x)=s. So dx=-\omega{_d}^{-1}ds. And if my algebra is correct, U(t)=(A/\omega{_d}^{2})\int_{\omega_d(t-b)}^{\omega_d(t-a)}exp{-(\xi \omega_n / \omega_d) s}\ sin(s) \ ds.

If you call the routine QDAWO your input value of \omega is =1.

This particular problem can be integrated explicitly. To do this consider the complex valued integral

V(t)=(A/\omega{_d}^{2})\int_{\omega_d(t-b)}^{\omega_d(t-a)}exp{-(\xi \omega_n / \omega_d -i) s}\ \ ds. This is a familiar and trivial problem. Your required values are given by the imaginary part of V(t). Check the algebra here!

If your function was something different than the exponential * sine, then the use of QDAWO is a good routine to start with.

Aarahan

05-02-2008, 11:41 AM

Thank you dear Richard for your help:)

I try it and give you the results; but is there any better routine that I can use?

If so which one; and as you know I programming in Fortran90 so which routine is better to use?

And I have an other question, how can I use Microsoft spread sheets OLE in visual Fortran?;)

Richard Hanson

05-02-2008, 12:18 PM

The point here is that you do not need a quadrature routine for this problem. Since you ask the question it may be you do not understand that you analytically calculate the anti-derivative and evaluate it at the limits of integration. It amounts to evaluations of a complex function exp(z). Then take the imaginary part of the algebraic result. You can use variables of type COMPLEX(kind(1.D0)) in Fortran 90 for efficiency and accuracy.

I have no background in your other question. Perhaps some other reader can comment on what to do. You may need to give more details.

Powered by vBulletin® Version 4.2.3 Copyright © 2020 vBulletin Solutions, Inc. All rights reserved.