Consider the initial value problem
.
We wish to explore how long a time interval is required for the solution
to become "negligible" and how this interval depends on the damping coefficient
. To be more precise, let us seek the time
such that for all
t > . Note that critical damping for this problem
occurs for .
(a) Let and determine , or at least estimate it fairly accurately from a plot of the solution.
(b) Repeat part (a) for several other values of in the
interval . Note that
steadily decreases as increases for
in this range.
(c) Create a graph of versus by plotting the pairs of values found in parts (a) and (b). Is the graph a
smooth curve?
(d) Repeat part (b) for values of between 1.5 and 2. Show that continues to decrease until
reaches a certain critical value , after which increases. Find and the corresponding minimum value of to two decimal places.
(e) Another way to proceed is to write the solution of the initial value
problem in the form (26). Neglect the cosine factor and consider only the exponential factor and the amplitude R. Then find an expression for
as a function of . Compare the approximate results obtained in this way with the values determined in parts
(a), (b) and (d).
Since , we can use the methods of section 3.4 to find the solution of this second order initial value problem. We get:
.
The following MATLAB code will generate a graph of this solution curve:
MATLAB note: We need to use the matrix operators '.*' and './' to do multiplication and division term-by-term on arrays. If we forget to use the '.', then MATLAB will try to do standard matrix multiplication and 'division' (multiplication by an inverse), which will fail since the dimensions of these arrays are not compatible. Remember that 'tpts' and 'ypts' are arrays, not single values.
>> gamma=.25;
lambda=-gamma/2; % lambda and mu come from the quadratic formula
mu=sqrt(4-gamma^2)/2;
a=2; % a and b are the constants in y(t) = a*y1(t) + b*y2(t)
b=-2*lambda/mu; % where y1 and y2 are fundamental solutions
tmin=0;
tmax=100;
stry=sprintf('%g*exp(%g.*t).*cos(%g.*t) + %g*exp(%g.*t).*sin(%g.*t)',a,lambda,mu,b,lambda,mu);
y=inline(stry,'t');
figure; % Create a figure
hold on;
tpts=(tmin:0.001:tmax); % Generate t-values
ypts=feval(y,tpts); % Generate corresponding y-values
plot(tpts,ypts); % Plot points
axis([tmin tmax -1 1]); % Set window size
xlabel('t'); % Identify horizontal axis
ylabel('u(t)'); % Identify vertical axis
title(sprintf('Gamma = %g',gamma)); % Add title to identify gamma
>>
We want to find the value of so that -0.01 < u(t) < 0.01 for all t > . That is, we want to find the smallest value of t so that u(t) is between the aqua lines shown on the graph below from that point onward. These commands will add to the graph created above.
>> tolerance=0.01;
z=inline(sprintf('%g',tolerance),'t'); % Define the function z = 0.01
negz=inline(sprintf('%g',tolerance),'t'); % Define the function negz = -0.01
fplot(z,[tmin,tmax],'c'); % Plot the horizontal line y = 0.01
fplot(negz,[tmin,tmax],'c'); % Plot the horizontal line y = -0.01
Instead of looking for the value of t for which all y-values beyond that point are between -0.01 and 0.01, let's look backwards from the right side of the graph back to the left. When is the first time the graph of the solution crosses either one of the horizontal aqua lines going from right to left?
>> num=size(ypts,2); % How many points did we have?
for i=1:num
j=num+1-i; % Count backwards
if abs(ypts(j))>tolerance % if outside of the aqua lines, notify user
disp(sprintf('\nFor all t > %g, -%g < y < %g',tpts(j), tolerance, tolerance));
break % Exit loop when we find the first y-value outside of the aqua band
end
end
plot(tpts(j),ypts(j),'rp') % Add a red star
plot(tpts(j:num),ypts(j:num),'r') % Re-draw the end of the curve in red
For all t > 41.715, -0.01 < y < 0.01
>>
Thus, when , = 41.7417.
Note: This is only an approximation and not an exact value for . If we were to increase the number of points in the arrays 'tpts' and 'ypts' (back in the 'tpts=(tmin:0.001:tmax)' command, we'd get a more precise answer for . However, we'd also greatly increase the computation time.
The MATLAB module Ch03Sec08Prob25 will find the value of for a user-entered value of , and allow the user to create the final graph above if desired. This module was used to obtain the data below and in part (d).
If we repeat the above process for values of between 0 and 1.5, we get the values for in the table below:
0.1 | 104.262 |
0.2 | 51.208 |
0.25 | 41.715 |
0.3 | 35.288 |
0.4 | 26.237 |
0.5 | 20.402 |
0.6 | 17.336 |
0.7 | 14.548 |
0.8 | 11.845 |
0.9 | 11.682 |
1.0 | 9.168 |
1.1 | 9.226 |
1.2 | 9.097 |
1.3 | 6.729 |
1.4 | 6.989 |
The points from part (b) are plotted in the graph below:
>> xx=[.1 .2 .25 .3 .4 .5 .6 .7 .8 .9 1 1.1 1.2 1.3 1.4]
>> yy=[104.262 51.208 41.715 35.288 26.237 20.402 17.336 14.548 11.845 11.682 9.168 9.226 9.097 6.729 6.989];
>> figure
>> plot(xx,yy,'bs') % Plot blue squares this time
>> xlabel('Gamma');
>> ylabel('Tau');
>> title('Tau -vs- Gamma');
>>
The values appear to decay exponentially, but if we look closely, the numbers do not always decrease.
Here is a table of values for between 1.5 and 2 and the corresponding plot:
1.55 | 7.230 |
1.60 | 7.218 |
1.65 | 7.108 |
1.70 | 6.767 |
1.75 | 5.033 |
1.80 | 5.472 |
1.85 | 5.956 |
1.90 | 6.459 |
1.95 | 6.956 |
As we can see in the graph below, there is a definite dip in the values of near 1.75.
>> xx2=[1.55 1.6 1.65 1.7 1.75 1.8 1.85 1.9 1.95];
>> yy2=[7.23 7.218 7.108 6.767 5.033 5.472 5.956 6.459 6.956];
>> plot(xx2,yy2,'bp');
>> xlabel('Gamma');
>> ylabel('Tau');
>> title('Tau -vs- Gamma');
>>
Now, let's investigate further to find out which value of produces the lowest value of . It appears to be between 1.7 and 1.8. Further experimentation gives us the following table:
1.71 | 6.612 |
1.72 | 6.245 |
1.73 | 4.873 |
1.74 | 4.952 |
1.75 | 5.033 |
1.76 | 5.117 |
1.77 | 5.202 |
1.78 | 5.290 |
1.79 | 5.380 |
Thus, to two decimal places, the lowest value of is 4.873 when is 1.73.
The form of the solution to the initial value problem is
,
where are the roots of the characteristic equation. Using the quadratic formula, we find that and .
As functions of g, the coefficients A and B are found to be and . If we write u(t) in the form (26), we have
,
where and . Using trigonometry, we find that and subsequently .
If we ignore the cosine factor, we get the envelope function . A graph of this function together with the actual solution u(t) is shown below for .
We can see from the graph that -0.1 < u(t) < 0.1 wherever U(t) < 0.1. So, let's see where that happens. For simplicity, we will again write the amplitude as R. First, we need to solve
.Solving for , we have
.Now, we have as a function of . Let's use MATLAB to compare values from this function to our previously found values of .
>> gamma=[.1 .2 .25 .3 .4 .5 .6 .7 .8 .9 1.0 1.1 1.2 1.3 1.4 1.55 1.6 1.65 1.7 1.75 1.8 1.85 1.9 1.95];
>> T=inline('(2./g).*log(400./sqrt(4-g.*g))','g'); % define tau function
>> tau=feval(T,gamma) % evaluate tau's
tau =
Columns 1 through 9
105.9914 53.0334 42.4495 35.3980 26.5936 21.3223 17.8182 15.3247 13.4637
Columns 10 through 18
12.0255 10.8843 9.9608 9.2024 8.5736 8.0500 7.4287 7.2614 7.1140
Columns 19 through 24
6.9874 6.8843 6.8096 6.7740 6.8024 6.9769
>>
Below is a table that compares the values of using the graphical approximation method and the algebraic approach above.
Approx. from (b) and (d) |
Approx. from (e) |
|
---|---|---|
0.1 | 104.262 | 105.9914 |
0.2 | 51.208 | 53.0334 |
0.25 | 41.715 | 42.4495 |
0.3 | 35.288 | 35.3980 |
0.4 | 26.237 | 26.5936 |
0.5 | 20.402 | 21.3223 |
0.6 | 17.336 | 17.8182 |
0.7 | 14.548 | 15.3247 |
0.8 | 11.845 | 13.4637 |
0.9 | 11.682 | 12.0255 |
1.0 | 9.168 | 10.8843 |
1.1 | 9.226 | 9.9608 |
1.2 | 9.097 | 9.2024 |
1.3 | 6.729 | 8.5736 |
1.4 | 6.989 | 8.0500 |
1.55 | 7.230 | 7.4287 |
1.60 | 7.218 | 7.2614 |
1.65 | 7.108 | 7.1140 |
1.70 | 6.767 | 6.9874 |
1.75 | 5.033 | 6.8843 |
1.80 | 5.472 | 6.8096 |
1.85 | 5.956 | 6.7740 |
1.90 | 6.459 | 6.8024 |
1.95 | 6.956 | 6.9769 |
The reason for the difference between the two approximations for is that we ignored the cosine term in part (e). Thus, the two columns should not be exactly alike. However, since the exponential function used in part (e) is always greater than the actual function used in the rest of the problem, we should expect that the values in the second column are always greater than (or equal to) those in the first, which is the case.
Comments: In part (c), we noticed that the graph of versus appeared to decay exponentially. In part (e), we have found that the equation of this function is not an exponential function, but is instead a more complicated logarithmic function.