100% found this document useful (1 vote)
16 views58 pages

MATLAB Programming with Applications for Engineers 1st Edition Chapman Solutions Manual download

The document provides information about various MATLAB programming resources, including solution manuals and test banks for different editions of MATLAB programming textbooks. It also explains the concepts of script files and functions in MATLAB, detailing their differences, input/output handling, and the pass-by-value scheme. Additionally, it includes examples of MATLAB functions for sorting arrays and performing trigonometric calculations in degrees.

Uploaded by

issraabubov
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
16 views58 pages

MATLAB Programming with Applications for Engineers 1st Edition Chapman Solutions Manual download

The document provides information about various MATLAB programming resources, including solution manuals and test banks for different editions of MATLAB programming textbooks. It also explains the concepts of script files and functions in MATLAB, detailing their differences, input/output handling, and the pass-by-value scheme. Additionally, it includes examples of MATLAB functions for sorting arrays and performing trigonometric calculations in degrees.

Uploaded by

issraabubov
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 58

MATLAB Programming with Applications for Engineers

1st Edition Chapman Solutions Manual download pdf

https://testbankfan.com/product/matlab-programming-with-applications-
for-engineers-1st-edition-chapman-solutions-manual/

Visit testbankfan.com today to download the complete set of


test banks or solution manuals!
We believe these products will be a great fit for you. Click
the link to download now, or visit testbankfan.com
to discover even more!

MATLAB Programming for Engineers 5th Edition Chapman


Solutions Manual

https://testbankfan.com/product/matlab-programming-for-engineers-5th-
edition-chapman-solutions-manual/

Essentials of MATLAB Programming 3rd Edition Chapman


Solutions Manual

https://testbankfan.com/product/essentials-of-matlab-programming-3rd-
edition-chapman-solutions-manual/

Introduction to MATLAB Programming and Numerical Methods


for Engineers 1st Edition Siauw Solutions Manual

https://testbankfan.com/product/introduction-to-matlab-programming-
and-numerical-methods-for-engineers-1st-edition-siauw-solutions-
manual/

Comparative Health Information Management 4th Edition


Peden Test Bank

https://testbankfan.com/product/comparative-health-information-
management-4th-edition-peden-test-bank/
Optimization in Operations Research 2nd Edition Rardin
Solutions Manual

https://testbankfan.com/product/optimization-in-operations-
research-2nd-edition-rardin-solutions-manual/

Theory and Practice of Addiction Counseling 1st Edition


Lassiter Test Bank

https://testbankfan.com/product/theory-and-practice-of-addiction-
counseling-1st-edition-lassiter-test-bank/

Essentials of Sociology 6th Edition Giddens Test Bank

https://testbankfan.com/product/essentials-of-sociology-6th-edition-
giddens-test-bank/

Introduction to Industrial and Organizational Psychology


6th Edition Riggio Test Bank

https://testbankfan.com/product/introduction-to-industrial-and-
organizational-psychology-6th-edition-riggio-test-bank/

Discovering the Scientist Within Research Methods in


Psychology 1st Edition Lewandowski Test Bank

https://testbankfan.com/product/discovering-the-scientist-within-
research-methods-in-psychology-1st-edition-lewandowski-test-bank/
Managerial Accounting 14th Edition Garrison Test Bank

https://testbankfan.com/product/managerial-accounting-14th-edition-
garrison-test-bank/
6. User-Defined Functions
6.1 Script files are just collections of MATLAB statements that are stored in a file. When a script file is
executed, the result is the same as it would be if all of the commands had been typed directly into
the Command Window. Script files share the Command Window’s workspace, so any variables that
were defined before the script file starts are visible to the script file, and any variables created by the
script file remain in the workspace after the script file finishes executing. A script file has no input
arguments and returns no results, but script files can communicate with other script files through the
data left behind in the workspace.

In contrast, MATLAB functions are a special type of M-file that run in their own independent
workspace. They receive input data through an input argument list, and return results to the caller
through an output argument list.

6.2 MATLAB programs communicate with their functions using a pass-by-value scheme. When a
function call occurs, MATLAB makes a copy of the actual arguments and passes them to the
function. This copying is very significant, because it means that even if the function modifies the
input arguments, it won’t affect the original data in the caller. Similarly, the returned values are
calculated by the function, and copied into the return variables in the calling program.

6.3 The principal advantage of the pass-by-value scheme is that any changes to input arguments within a
function will not affect the input arguments in the calling program. This, along with the separate
workspace for the function, eliminates unintended side effects. The disadvantage is that copying
arguments, especially large arrays, can take time and memory.

6.4 A function to sort arrays in ascending or descending order, depending on the second calling
parameter, is shown below:

function out = ssort1(a,dir)


%SSORT1 Selection sort data in ascending or descending order
% Function SSORT1 sorts a numeric data set into ascending
% or descending order, depending on the value of the
% second parameter. If the parameter is 'up', then it
% sorts the data in ascending order. If the parameter is
% 'down', then it sorts the data in descending order. The
% default value is 'up'. Note that 'up' and 'down' may
% be abbreviated to 'u' and 'd', if desired.
%
% Note that the selection sort is relatively inefficient.
% DO NOT USE THIS FUNCTION FOR LARGE DATA SETS. Use MATLAB's
% "sort" function instead.

% Define variables:
% a -- Input array to sort
% ii -- Index variable
% iptr -- Pointer to min value
% jj -- Index variable
% nvals -- Number of values in "a"
% out -- Sorted output array
% temp -- Temp variable for swapping

139
© 2013 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
% Record of revisions:
% Date Programmer Description of change
% ==== ========== =====================
% 07/03/11 S. J. Chapman Original code

% Check for a legal number of input arguments.


msg = nargchk(1,2,nargin);
error(msg);

% If the direction argument is missing, set it to 'up'.


if nargin < 2
dir = 'up';
end

% Check for the direction of the sort


if dir(1) == 'u' | dir(1) == 'U'
sort_up = 1;
elseif dir(1) == 'd' | dir(1) == 'D'
sort_up = 0;
else
error('Second parameter is not ''UP'' or ''DOWN''!')
end

% Get the length of the array to sort


nvals = size(a,2);

% Sort the input array


for ii = 1:nvals-1

if sort_up

% Sort in ascending order.


% Find the minimum value in a(ii) through a(n)
iptr = ii;
for jj = ii+1:nvals
if a(jj) < a(iptr)
iptr = jj;
end
end

else

% Sort in descending order.


% Find the maximum value in a(ii) through a(n)
iptr = ii;
for jj = ii+1:nvals
if a(jj) < a(iptr)
iptr = jj;
end
end

end

140
© 2013 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
% iptr now points to the min/max value, so swap a(iptr)
% with a(ii) if ii ~= iptr.
if ii ~= iptr
temp = a(ii);
a(ii) = a(iptr);
a(iptr) = temp;
end
end

% Pass data back to caller


out = a;

A script file to test this function is shown below:

% Script file: test_ssort1.m


%
% Purpose:
% To read in an input data set, sort it into ascending
% order using the selection sort algorithm, and to
% write the sorted data to the Command window. This
% program calls function "ssort1" to do the actual
% sorting.
%
% Record of revisions:
% Date Programmer Description of change
% ==== ========== =====================
% 07/03/11 S. J. Chapman Original code
%
% Define variables:
% array -- Input data array
% ii -- Index variable
% nvals -- Number of input values
% sorted1 -- Sorted data array (up)
% sorted2 -- Sorted data array (down)

% Prompt for the number of values in the data set


nvals = input('Enter number of values to sort: ');

% Preallocate array
array = zeros(1,nvals);

% Get input values


for ii = 1:nvals

% Prompt for next value


string = ['Enter value ' int2str(ii) ': '];
array(ii) = input(string);

end

% Now sort the data in ascending order


sorted1 = ssort1(array,'up');

% Display the sorted result.


141
© 2013 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
fprintf('\nSorted data in ascending order:\n');
for ii = 1:nvals
fprintf(' %8.4f\n',sorted1(ii));
end

% Now sort the data in descending order


sorted2 = ssort1(array,'down');

% Display the sorted result.


fprintf('\nSorted data in descending order:\n');
for ii = 1:nvals
fprintf(' %8.4f\n',sorted2(ii));
end

% Now sort the data in ascending order with


% no second argument.
sorted3 = ssort1(array);

% Display the sorted result.


fprintf('\nSorted data in default order:\n');
for ii = 1:nvals
fprintf(' %8.4f\n',sorted3(ii));
end

% The follwing call should produce an error message


sorted4 = ssort1(array,'bad');

When this program is executed, the results are:

» test_ssort1
Enter number of values to sort: 6
Enter value 1: -3
Enter value 2: 5
Enter value 3: 2
Enter value 4: 2
Enter value 5: 0
Enter value 6: 1

Sorted data in ascending order:


-3.0000
0.0000
1.0000
2.0000
2.0000
5.0000

Sorted data in descending order:


-3.0000
0.0000
1.0000
2.0000
2.0000
5.0000

142
© 2013 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
Sorted data in default order:
-3.0000
0.0000
1.0000
2.0000
2.0000
5.0000
??? Error using ==> ssort1
Second parameter is not 'UP' or 'DOWN'!

Error in ==> d:\book\matlab\soln\Ex5.4\test_ssort1.m


On line 66 ==>

6.5 A set of functions to perform trigonometric operations in degrees are shown below:

function out = sind(x)


%SIND Calculate sin(x), where x is in degrees
% Function SIND calculates sin(x), where x is in degrees
%
% Define variables:
% x -- Angle in degrees

% Record of revisions:
% Date Programmer Description of change
% ==== ========== =====================
% 07/03/11 S. J. Chapman Original code

% Check for a legal number of input arguments.


msg = nargchk(1,1,nargin);
error(msg);

% Calculate value
out = sin(pi/180*x);

function out = sind(x)


%COSD Calculate cos(x), where x is in degrees
% Function COSD calculates cos(x), where x is in degrees
%
% Define variables:
% x -- Angle in degrees

% Record of revisions:
% Date Programmer Description of change
% ==== ========== =====================
% 07/03/11 S. J. Chapman Original code

% Check for a legal number of input arguments.


msg = nargchk(1,1,nargin);
error(msg);

% Calculate value
out = cos(pi/180*x);

143
© 2013 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
function out = tand(x)
%TAND Calculate tan(x), where x is in degrees
% Function TAND calculates tan(x), where x is in degrees
%
% Define variables:
% x -- Angle in degrees

% Record of revisions:
% Date Programmer Description of change
% ==== ========== =====================
% 07/03/11 S. J. Chapman Original code

% Check for a legal number of input arguments.


msg = nargchk(1,1,nargin);
error(msg);

% Calculate value
out = tan(pi/180*x);

function out = asind(x)


%ASIND Calculate asin(x), where the output is in degrees
% Function ASIND calculates asin(x), where the output is in degrees
%
% Define variables:
% x -- Input value

% Record of revisions:
% Date Programmer Description of change
% ==== ========== =====================
% 07/03/11 S. J. Chapman Original code

% Check for a legal number of input arguments.


msg = nargchk(1,1,nargin);
error(msg);

% Calculate value
out = 180/pi * asin(x);

function out = acosd(x)


%ACOSD Calculate acos(x), where the output is in degrees
% Function ACOSD calculates acos(x), where the output is in degrees
%
% Define variables:
% x -- Input value

% Record of revisions:
% Date Programmer Description of change
% ==== ========== =====================
% 07/03/11 S. J. Chapman Original code

% Check for a legal number of input arguments.


144
© 2013 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
msg = nargchk(1,1,nargin);
error(msg);

% Calculate value
out = 180/pi * acos(x);

function out = atand(x)


%ATAND Calculate atan(x), where the output is in degrees
% Function ATAND calculates atan(x), where the output is in degrees
%
% Define variables:
% x -- Input value

% Record of revisions:
% Date Programmer Description of change
% ==== ========== =====================
% 07/03/11 S. J. Chapman Original code

% Check for a legal number of input arguments.


msg = nargchk(1,1,nargin);
error(msg);

% Calculate value
out = 180/pi * atan(x);

function out = atan2d(y,x)


%ATAN2D Four quadrant inverse tangent, where the output is in degrees
% Function ATAN2D calculates the Four quadrant inverse tangent, where
% the output is in degrees.
%
% Define variables:
% x -- Input value

% Record of revisions:
% Date Programmer Description of change
% ==== ========== =====================
% 07/03/11 S. J. Chapman Original code

% Check for a legal number of input arguments.


msg = nargchk(2,2,nargin);
error(msg);

% Calculate value
out = 180/pi * atan2(y,x);

A script file to test these functions is given below:

% Script file: test_functions.m


%
% Purpose:
% To perform a median filter on an input data set.
%
145
© 2013 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
% Record of revisions:
% Date Programmer Description of change
% ==== ========== =====================
% 07/03/11 S. J. Chapman Original code
%
% Define variables:
% ii -- Loop index
% filename -- Input data file
% n_ave -- Number of points to average
% n_per_side -- Number of points to average per side
% n_points -- Number of points in data set
% slope -- Slope of the line
% x -- Array of input values
% y -- Array of filtered values

disp('This program tests the trig functions that return answers in


degrees.');

% Set the angle theta = 30 degrees, and try the forward trig functions
disp(' ');
disp(['Testing forward trig functions:']);
disp(['sind(30) = ' num2str(sind(30))]);
disp(['cosd(30) = ' num2str(cosd(30))]);
disp(['tand(30) = ' num2str(tand(30))]);
disp(['sind(45) = ' num2str(sind(45))]);
disp(['cosd(45) = ' num2str(cosd(45))]);
disp(['tand(45) = ' num2str(tand(45))]);

% Test the inverse trig functions


disp(' ');
disp(['Testing inverse trig functions:']);
disp(['asind(0) = ' num2str(asind(0))]);
disp(['asind(1/sqrt(2)) = ' num2str(asind(1/sqrt(2)))]);
disp(['asind(1) = ' num2str(asind(1))]);
disp(['acosd(0) = ' num2str(acosd(0))]);
disp(['acosd(1/sqrt(2)) = ' num2str(acosd(1/sqrt(2)))]);
disp(['acosd(1) = ' num2str(acosd(1))]);
disp(['atand(1) = ' num2str(atand(1))]);

% Test atan2d
disp(' ');
disp(['Testing atan2d:']);
disp(['atan2d(4,3) = ' num2str(atan2d(4,3))]);

When the script file is executed, the results are:

>> test_functions
This program tests the trig functions that return answers in degrees.

Testing forward trig functions:


sind(30) = 0.5
cosd(30) = 0.86603
tand(30) = 0.57735
sind(45) = 0.70711
146
© 2013 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
cosd(45) = 0.70711
tand(45) = 1

Testing inverse trig functions:


asind(0) = 0
asind(1/sqrt(2)) = 45
asind(1) = 90
acosd(0) = 90
acosd(1/sqrt(2)) = 45
acosd(1) = 0
atand(1) = 45

Testing atan2d:
atan2d(4,3) = 53.1301

6.6 A function to convert degrees Fahrenheit to degrees Celsius is shown below:

function deg_c = f_to_c(deg_f)


%F_TO_C Convert degrees Fahrenheit to degrees Celsius
% Function F_TO_C converts degrees Fahrenheit to degrees Celsius
% %
% Calling sequence:
% deg_c = f_to_c(deg_f)

% Define variables:
% deg_f -- Input in degrees Fahrenheit
% deg_c -- Output in degrees Celsius

% Record of revisions:
% Date Programmer Description of change
% ==== ========== =====================
% 07/03/11 S. J. Chapman Original code

% Check for a legal number of input arguments.


msg = nargchk(1,1,nargin);
error(msg);

% Calculate value
deg_c = 5/9 * (deg_f - 32);

We can test this function using the freezing and boiling points of water:

>> f_to_c(32)
ans =
0
>> f_to_c(212)
ans =
100

6.7 A function to convert degrees Celsius to degrees Fahrenheit is shown below:

function deg_f = c_to_f(deg_c)


%C_TO_F Convert degrees Celsius to degrees Fahrenheit
% Function C_TO_F converts degrees Celsius to degrees Fahrenheit
147
© 2013 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
% %
% Calling sequence:
% deg_f = c_to_f(deg_c)

% Define variables:
% deg_c -- Input in degrees Celsius
% deg_f -- Output in degrees Fahrenheit

% Record of revisions:
% Date Programmer Description of change
% ==== ========== =====================
% 07/03/11 S. J. Chapman Original code

% Check for a legal number of input arguments.


msg = nargchk(1,1,nargin);
error(msg);

% Calculate value
deg_f = 9/5 * deg_c + 32;

We can test this function using the freezing and boiling points of water:

>> f_to_f(0)
ans =
100
>> c_to_f(100)
ans =
0

We can also show that c_to_f and f_to_c are the inverses of each other:

>> f_to_c(c_to_f(30))
ans =
30

6.8 A function to calculate the area of a triangle specified by the locations of its three vertices is shown
below:

function area = area2d(x1, y1, x2, y2, x3, y3)


%AREA2D Calculate the area of a triangle specified by three vertices
% Function AREA2D calculates the area of a triangle specified by
% three vertices
%
% Calling sequence:
% area = area2d(x1, y1, x2, y2, x3, y3)

% Define variables:
% x1, y1 -- Location of vertex 1
% x2, y2 -- Location of vertex 2
% x3, y3 -- Location of vertex 3
% area -- Area of triangle

% Record of revisions:

148
© 2013 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
% Date Programmer Description of change
% ==== ========== =====================
% 07/03/11 S. J. Chapman Original code

% Check for a legal number of input arguments.


msg = nargchk(6,6,nargin);
error(msg);

% Calculate value
area = 0.5 * (x1*(y2-y3) - x2*(y1-y3) + x3*(y1-y2));

We can test this function using the specified points:

>> area = area2d(0,0,10,0,15,5)


area =
25.00

6.9 At this point in our studies, there is no general way to support an arbitrary number of arguments in a
function. Function nargin allows a developer to know how many arguments are used in a
function call, but we can only up to the number of arguments in the calling sequence1. We will
design this function to support up to 6 vertices. The corresponding function is shown below:

function area = area_polygon(x1, y1, x2, y2, x3, y3, x4, y4, x5, y5,
x6, y6)
%AREA_POLYGON Calculate the area of a polygon specified by its
vertices
% Function AREA_POLYGON calculates the area of a polygon specified by
% its vertices
%
% Calling sequence:
% area = area_polygon(x1, y1, x2, y2, x3, y3, x4, y4, x5, y5, x6,
y6)

% Define variables:
% ii -- Loop index
% n_vertices -- Number of vetices in polygon
% x1, y1 -- Location of vertex 1
% x2, y2 -- Location of vertex 2
% x3, y3 -- Location of vertex 3
% x4, y4 -- Location of vertex 4
% x5, y5 -- Location of vertex 5
% x6, y6 -- Location of vertex 6
% area -- Area of polygon

% Record of revisions:
% Date Programmer Description of change
% ==== ========== =====================
% 07/03/11 S. J. Chapman Original code

% Check for a legal number of input arguments.


% There must be at least 3 vertices, and no more than 6.

1 Later we will learn about function varargin, which can support any number of arguments.
149
© 2013 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
msg = nargchk(6,12,nargin);
error(msg);

% Get the number of vertices


n_vertices = nargin / 2;

% Save vertices in arrays


x = zeros(1,n_vertices);
y = zeros(1,n_vertices);

% Save values
x(1) = x1;
y(1) = y1;
x(2) = x2;
y(2) = y2;
x(3) = x3;
y(3) = y3;
if n_vertices >= 4
x(4) = x4;
y(4) = y4;
end
if n_vertices >= 5
x(5) = x5;
y(5) = y5;
end
if n_vertices >= 6
x(6) = x6;
y(6) = y6;
end

% Calculate the area


area = 0;
for ii = 1:n_vertices-2
area = area + 0.5 * (x(ii)*(y(ii+1)-y(ii+2)) ...
- x(ii+1)*(y(ii)-y(ii+2)) ...
+ x(ii+2)*(y(ii)-y(ii+1)));
end

We can test this function using the specified point (0,0), (10,0), (10,10), and (0, 10), which
corresponds to a square with all sides having length 10:

>> area = area_polygon(0,0,10,0,10,10,0,10)


area =
100.00

We can test this function using the points specified in the problem:

>> area = area_polygon(0,0,10,0,10,10,0,10)


area =
100.00
>> area = area_polygon(10,0,8,8,2,10,-4,5)
area =
43.00

150
© 2013 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
6.10 A function to calculate the inductance of a single-phase two-wire transmission line is shown below:

function ind = inductance(r, D, length)


%INDUCTANCE Calculate the inductance of a transmission line
% Function INDUCTANCE calculates the inductance of a
% single-phase two-wire transmission line.
%
% Calling sequence:
% ind = inductance(r, D, length)
%
% where
% r = the radius of the conductors in meters
% D = the distance between the two lines in meters
% length = Length of transmission line in meters

% Define variables:
% ind_per_m -- Inductance per meter

% Record of revisions:
% Date Programmer Description of change
% ==== ========== =====================
% 07/03/11 S. J. Chapman Original code

% Check for a legal number of input arguments.


msg = nargchk(3,3,nargin);
error(msg);

% Constants
mu0 = pi * 4e-7; % H/m

% Calculate the inductance


ind_per_m = mu0 / pi * (1/4 + log(D/r));

% Get the inductance


ind = ind_per_m * length;

We can test this function using the points specified in the problem:

>> ind = inductance(0.02, 1.5, 100000)


ind =
0.1827

6.11 If the diameter of a transmission line’s conductors increase, the inductance of the line will decrease.
If the diameter of the conductors are doubled, the inductance will fall to:

>> ind = inductance(0.02, 1.5, 100000)


ind =
0.1550

6.12 A function to calculate the capacitance of a single-phase two-wire transmission line is shown below:

function cap = capacitance(r, D, length)


%CAPACITANCE Calculate the capacitance of a transmission line
% Function CAPACITANCE calculates the capacitance of a
151
© 2013 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
% single-phase two-wire transmission line.
%
% Calling sequence:
% cap = capacitance(r, D, length)
%
% where
% r = the radius of the conductors in meters
% D = the distance between the two lines in meters
% length = Length of transmission line in meters

% Define variables:
% cap_per_m -- Capacitance per meter

% Record of revisions:
% Date Programmer Description of change
% ==== ========== =====================
% 07/03/11 S. J. Chapman Original code

% Check for a legal number of input arguments.


msg = nargchk(3,3,nargin);
error(msg);

% Constants
e0 = pi * 4e-7; % F/m

% Calculate the capacitance


cap_per_m = pi * e0 / log((D-r)/r);

% Get the capacitance


cap = cap_per_m * length;

We can test this function using the points specified in the problem:

>> cap = capacitance(0.04, 1.5, 100000)


cap =
0.1097

6.13 If the distance between the two conductors increases, the inductance of the transmission line
increases and the capacitance of the transmission line decreases.

6.14 A program to compare the sorting times using the selection sort of Example 6.2 and MATLAB’s
built-in sort is shown below: .

% Script file: compare_sorts.m


%
% Purpose:
% To compare the sort function from Example 6.2 and the
% built-in MATLAB sort
%
% Record of revisions:
% Date Programmer Description of change
% ==== ========== =====================
% 07/04/11 S. J. Chapman Original code
%
152
© 2013 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
% Define variables:
% data1 -- Array to sort
% data2 -- Copy of array to sort
% elapsed_time1 -- Elaosed time for ssort
% elapsed_time2 -- Elaosed time for sort

% Constants
SIZE = 100000; % Number of values to sort

% Set seed
seed(123456);

% Create a sample data set to sort.


data1 = random0(1,SIZE);

% Sort using ssort


data2 = data1;
tic;
out = ssort(data2);
elapsed_time1 = toc;

% Sort using sort


data2 = data1;
tic;
out = sort(data2);
elapsed_time2 = toc;

% Display the relative times


disp(['Sort time using ssort = ' num2str(elapsed_time1)]);
disp(['Sort time using sort = ' num2str(elapsed_time2)]);

When this program is executed, the results are:

>> compare_sorts
Sort time using ssort = 118.288
Sort time using sort = 0.013641

The built-in sorting function is dramatically faster than the selection sort of Example 6.2.

6.15 A program to compare the sorting times using the selection sort of Example 6.2 and MATLAB’s
built-in sort is shown below.

Note that the sort time for the selection sort increases as the square of the number of values
sorted. This may make it impossible to do the calculation for 1,000,000 samples, as specified in
the original problem. This will be modified to 200,000 samples in subsequent printings.

% Script file: compare_sorts.m


%
% Purpose:
% To compare the sort function from Example 6.2 and the
% built-in MATLAB sort
%
% Record of revisions:

153
© 2013 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
% Date Programmer Description of change
% ==== ========== =====================
% 07/04/11 S. J. Chapman Original code
%
% Define variables:
% data1 -- Array to sort
% data2 -- Copy of array to sort
% elapsed_time1 -- Elaosed time for ssort
% elapsed_time2 -- Elaosed time for sort

% Set seed
seed(123456);

% Create a sample data set to sort


nsamp = 10000;
data1 = random0(1,nsamp);

% Sort using ssort


data2 = data1;
tic;
out = ssort(data2);
elapsed_time1 = toc;

% Sort using sort


data2 = data1;
tic;
out = sort(data2);
elapsed_time2 = toc;

% Display the relative times


disp(['Sort time for ' int2str(nsamp) ' using ssort = '
num2str(elapsed_time1)]);
disp(['Sort time for ' int2str(nsamp) ' using sort = '
num2str(elapsed_time2)]);

% Create a sample data set to sort


nsamp = 100000;
data1 = random0(1,nsamp);

% Sort using ssort


data2 = data1;
tic;
out = ssort(data2);
elapsed_time1 = toc;

% Sort using sort


data2 = data1;
tic;
out = sort(data2);
elapsed_time2 = toc;

% Display the relative times


disp(['Sort time for ' int2str(nsamp) ' using ssort = '
num2str(elapsed_time1)]);
154
© 2013 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
disp(['Sort time for ' int2str(nsamp) ' using sort = '
num2str(elapsed_time2)]);

% Create a sample data set to sort


nsamp = 200000;
data1 = random0(1,nsamp);

% Sort using ssort


data2 = data1;
tic;
out = ssort(data2);
elapsed_time1 = toc;

% Sort using sort


data2 = data1;
tic;
out = sort(data2);
elapsed_time2 = toc;

% Display the relative times


disp(['Sort time for ' int2str(nsamp) ' using ssort = '
num2str(elapsed_time1)]);
disp(['Sort time for ' int2str(nsamp) ' using sort = '
num2str(elapsed_time2)]);

When this program is executed, the results are:

>> compare_sorts
Sort time using ssort = 118.288
Sort time using sort = 0.013641

The built-in sorting function is dramatically faster than the selection sort of Example 6.2.

>> compare_sorts
Sort time for 10000 using ssort = 1.2153
Sort time for 10000 using sort = 0.0013928
Sort time for 100000 using ssort = 137.3888
Sort time for 100000 using sort = 0.013531
Sort time for 200000 using ssort = 631.6224
Sort time for 200000 using sort = 0.026963

6.16 A modified version of function random0 that can accept 0, 1, or 2 arguments is shown below:

function ran = random0(n,m)


%RANDOM0 Generate uniform random numbers in [0,1)
% Function RANDOM0 generates an array of uniform
% random numbers in the range [0,1). The usage
% is:
%
% random0(n) -- Generate an n x n array
% random0(n,m) -- Generate an n x m array

% Define variables:

155
© 2013 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
% ii -- Index variable
% ISEED -- Random number seed (global)
% jj -- Index variable
% m -- Number of columns
% msg -- Error message
% n -- Number of rows
% ran -- Output array
%
% Record of revisions:
% Date Programmer Description of change
% ==== ========== =====================
% 02/04/10 S. J. Chapman Original code
% 1. 07/04/11 S. J. Chapman Modified for 0 arguments

% Declare global values


global ISEED % Seed for random number generator

% Check for a legal number of input arguments.


msg = nargchk(0,2,nargin);
error(msg);

% If both arguments are missing, set to 1.


% If the m argument is missing, set it to n.
if nargin < 1
m = 1;
n = 1;
elseif nargin < 2
m = n;
end

% Initialize the output array


ran = zeros(n,m);

% Now calculate random values


for ii = 1:n
for jj = 1:m
ISEED = mod(8121*ISEED + 28411, 134456 );
ran(ii,jj) = ISEED / 134456;
end
end

6.17 Function random0 has a bug under some conditions. If the global variable ISEED has not been
previously defined when random0 is executed, the program will crash. This problem occurs the
first time only that random0 is executed in a given MATLAB session, if function seed is not
called first. A simple way to avoid this problem would be to detect if ISEED is undefined, and to
supply a default value. Otherwise, the function should use the global seed supplied. A modified
version of random0 that fixes this bug is shown below:

function ran = random0(n,m)


%RANDOM0 Generate uniform random numbers in [0,1)
% Function RANDOM0 generates an array of uniform
% random numbers in the range [0,1). The usage
% is:

156
© 2013 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
%
% random0(n) -- Generate an n x n array
% random0(n,m) -- Generate an n x m array

% Define variables:
% ii -- Index variable
% ISEED -- Random number seed (global)
% jj -- Index variable
% m -- Number of columns
% msg -- Error message
% n -- Number of rows
% ran -- Output array

% Record of revisions:
% Date Programmer Description of change
% ==== ========== =====================
% 02/04/10 S. J. Chapman Original code
% 1. 07/04/11 S. J. Chapman Modified to provide initial seed

% Declare globl values


global ISEED % Seed for random number generator

% Check for a legal number of input arguments.


msg = nargchk(1,2,nargin);
error(msg);

% If the m argument is missing, set it to n.


if nargin < 2
m = n;
end

% Initialize the output array


ran = zeros(n,m);

% Test for missing seed, and supply a default if necessary.


if isempty(ISEED)
ISEED = 99999;
end

% Now calculate random values


for ii = 1:n
for jj = 1:m
ISEED = mod(8121*ISEED + 28411, 134456 );
ran(ii,jj) = ISEED / 134456;
end
end

6.18 A function dice to simulate the roll of a fair die is shown below:

function result = dice()


%DICE Return a random integer between 1 and 6
% Function DICE simulates the throw of a fair
% die. It returns a random integer between 1

157
© 2013 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
% and 6.

% Define variables:
% result -- Resulting integer

% Record of revisions:
% Date Programmer Description of change
% ==== ========== =====================
% 07/04/11 S. J. Chapman Original code

% Check for a legal number of input arguments.


msg = nargchk(0,0,nargin);
error(msg);

% The value "6*random0(1,1)" returns a value


% in the range [0,6). The "floor" function
% returns {0,1,2,3,4,5} with equal probability,
% so "result" returns 1-6.
result = floor( 6 * random0(1,1) ) + 1;

A script file to test function dice is shown below:

% Script file: test_dice.m


%
% Purpose:
% To test the function dice. This function calls dice
% 10,000 times, and examines the distribution of the
% resulting values. They should be roughly uniform.
%
% Record of revisions:
% Date Programmer Description of change
% ==== ========== =====================
% 07/04/11 S. J. Chapman Original code
%
% Define variables:
% ii -- index variable
% result -- Array of results

% Initial values
result = zeros(1,100000);
for ii = 1:100000;
result(ii) = dice;
end

% Display the first 30 values.


fprintf('The first 30 values are:\n');
for ii = 1:30
fprintf('%d ',result(ii));
end
fprintf('\n');

% Now calculate a histogram to determine the overall


% distribution of numbers.

158
© 2013 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
hist(result,6);
title('\bfHistogram of values returned from function "dice"');
xlabel('\bfValue');
ylabel('\bfCount');

When this script file is executed, the results are:

» test_dice
The first 30 values are:
3 1 4 6 6 4 4 4 1 6 6 4 1 2 1 3 2 6 1 2 2 6 6 5 6 3 1 6 1 5

The resulting histogram is shown below. The histogram shows that each integer between 1 and 6 is
about equally likely to occur.

6.19 A function to calculate a probability from the Poisson distribution is shown below:

function result = poisson(k, t, lambda)


%POISSON Return a random integer between 1 and 6
% Function POISSON calculates a sample value from
% the Poisson distribution for specific values of
% k, t, and lambda.

159
© 2013 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
% Define variables:
% fact -- k! (k-factorial)
% result -- Resulting value from distribution

% Record of revisions:
% Date Programmer Description of change
% ==== ========== =====================
% 07/07/11 S. J. Chapman Original code

% Check for a legal number of input arguments.


msg = nargchk(3,3,nargin);
error(msg);

% Calculate k!
fact = factorial(k);

% Calculate value from Poisson distribution.


result = exp(-lambda*t) * (lambda*t) ^ k / fact;

A program that uses function poisson to calculate the probability of a specific number of cars
passing a point on a highway in a given period of time is shown below:

% Script file: traffic.m


%
% Purpose:
% To calculate the probability of a given number of cars
% passing a particular point on a highway in a given time.
%
% Record of revisions:
% Date Programmer Description of change
% ==== ========== =====================
% 07/07/11 S. J. Chapman Original code
%
% Define variables:
% k -- Actual number of cars in time t
% lambda -- Expected number of cars per minute
% prob -- Probability array
% t -- Period of time (minutes)

% Get initial values


lambda = input('Enter expected number of cars/minute: ');
t = input('Enter period of time in minutes: ');

% Calculate values. Note that k runs from 0 to 5, while the


% minimum value for a MATLAB array is 1, so we must index into
% the MATLAB array using "k+1" instead of "k".
for k = 0:5
prob(k+1) = poisson(k, t, lambda);
end

% Display results
disp(['The probability of k cars passing in ' num2str(t) ' minutes
is:']);

160
© 2013 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
for k = 0:5
fprintf(' %3d %12.7f\n',k,prob(k+1));
end

% Now plot the distribution.


figure(1);
plot(0:5,prob,'bo','LineWidth',2);
title('\bfPoisson Distribution');
xlabel('\bfValue');
ylabel('\bfProbability');

When this program is executed, the results are a shown below. Note that the plot of the probability
distribution uses discrete points instead of a continuous line, since the probabilities are only defined
for the integer values k = 0, 1, 2, 3, … (we can’t have 1.2 cars go by!). This plot can also be
represented as a bar chart, once we learn how to create them in Chapter 6.

>> traffic
Enter expected number of cars/minute: 1.6
Enter period of time in minutes: 1
The probability of k cars passing in 1 minutes is:
0 0.2018965
1 0.3230344
2 0.2584275
3 0.1378280
4 0.0551312
5 0.0176420

6.20 Functions to calculate the hyperbolic sine, cosine, and tangent functions are shown below::

function out = sinh(x)

161
© 2013 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
%SIND Calculate hyperbolic sine function
% Function SINH calculates the hyperbolic sine function
%
% Define variables:
% x -- Input value

% Record of revisions:
% Date Programmer Description of change
% ==== ========== =====================
% 07/12/11 S. J. Chapman Original code

% Check for a legal number of input arguments.


msg = nargchk(1,1,nargin);
error(msg);

% Calculate value
out = (exp(x) - exp(-x))/2;

function out = cosh1(x)


%COSH1 Calculate hyperbolic cosine function
% Function COSH1 calculates the hyperbolic cosine function
%
% Define variables:
% x -- Input value

% Record of revisions:
% Date Programmer Description of change
% ==== ========== =====================
% 07/12/11 S. J. Chapman Original code

% Check for a legal number of input arguments.


msg = nargchk(1,1,nargin);
error(msg);

% Calculate value
out = (exp(x) + exp(-x))/2;

function out = tanh1(x)


%TANH1 Calculate hyperbolic tangent function
% Function TANH1 calculates the hyperbolic tangent function
%
% Define variables:
% x -- Input value

% Record of revisions:
% Date Programmer Description of change
% ==== ========== =====================
% 07/12/11 S. J. Chapman Original code

% Check for a legal number of input arguments.


msg = nargchk(1,1,nargin);
error(msg);

% Calculate value
162
© 2013 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
out = (exp(x) - exp(-x)) ./ (exp(x) + exp(-x));

A script file to plot the hyperbolic sine, cosine, and tangent functions are shown below:

% Script file: test_hyperbolic_functions.m


%
% Purpose:
% To plot the hyperbolic functions sinh, cosh, abd tanh.
%
% Record of revisions:
% Date Programmer Description of change
% ==== ========== =====================
% 07/12/11 S. J. Chapman Original code
%
% Define variables:
% out_cosh -- Hyperbolic cosine
% out_sinh -- Hyperbolic sine
% out_tanh -- Hyperbolic tangent

% Calculate results
x = -5:0.05:5;
out_cosh = cosh1(x);
out_sinh = sinh1(x);
out_tanh = tanh1(x);

% Display results
figure(1);
plot(x,out_cosh);
title('\bfHyperbolic cosine');
xlabel('\bfx');
ylabel('\bfcosh(x)');
grid on;

figure(2);
plot(x,out_sinh);
title('\bfHyperbolic sine');
xlabel('\bfx');
ylabel('\bfsinh(x)');
grid on;

figure(3);
plot(x,out_cosh);
title('\bfHyperbolic tangent');
xlabel('\bfx');
ylabel('\bftanh(x)');
grid on;

The resulting plots are shown below:

163
© 2013 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
164
© 2013 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
6.21 A function to smooth a noisy data set with a running average filter is shown below.

function y = running_ave(x,n_ave)
%RUNNING_AVE Function to perform a running average filter
% Function RUNNING_AVE performs a running average filter
%
% Calling sequence:
% y = running_ave(x, n_ave)
%
% where:
% n_ave -- Number of points to average
% x -- Array of input values
% y -- Array of filtered values

% Record of revisions:
% Date Programmer Description of change
% ==== ========== =====================
% 07/12/11 S. J. Chapman Original code

% Define local variables:


% ii -- Loop index
% n_per_side -- Number of points to average per side
% n_points -- Number of points in data set
% slope -- Slope of the line

% Check for a legal number of input arguments.


msg = nargchk(1,2,nargin);

165
© 2013 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
error(msg);

% Set a default number of points to average if this value


% is undefined.
if nargin < 2
n_ave = 7;
end

% Get the number of samples on either side of the sample


% being averaged, dropping any fractional part.
n_per_side = (n_ave-1) / 2;
n_per_side = floor(n_per_side);

% Get the number of points in the input structure


n_points = length(x);

% Now perform the running average


for ii = 1:n_points

% Check to see how many points we can use on either side


% of the point being averaged.
n_low = min([ (ii-1) n_per_side]);
n_high = min([ (n_points-ii) n_per_side]);
n_used = min([ n_low n_high]);

% Now calculate running average


y(ii) = sum(x(ii-n_used:ii+n_used)) / (2*n_used+1);

end

A program to test this function is shown below.

% Script file: test_running_ave.m


%
% Purpose:
% To perform test the running average filter function.
%
% Record of revisions:
% Date Programmer Description of change
% ==== ========== =====================
% 07/12/11 S. J. Chapman Original code
%
% Define variables:
% ii -- Loop index
% filename -- Input data file
% n_ave -- Number of points to average
% n_per_side -- Number of points to average per side
% n_points -- Number of points in data set
% x -- Array of input values
% y -- Array of filtered values

disp('This program performs a running average filter on an ');


disp('input data set.');
filename = input('Enter the filename containing the data: ','s');
166
© 2013 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
n_ave = input('Enter the number of samples to average: ');

% Get the number of samples on either side of the sample


% being averaged, dropping any fractional part.
n_per_side = (n_ave-1) / 2;
n_per_side = floor(n_per_side);

% Read the input data


x = textread(filename,'%f');
n_points = length(x);

% Get running average


y = running_ave(x,n_ave);

% Plot the data points as blue circles with no


% connecting lines.
plot(x,'bo');
hold on;

% Plot the fit as a solid red line with no markers


plot(y,'r-','LineWidth',2);
hold off;

% Add a title and legend


title ('\bfRunning-Average Filter');
xlabel('\bf\itx');
ylabel('\bf\ity');
legend('Input data','Fitted line');
grid on

When this program is executed, the results are:

>> test_running_ave
This program performs a running average filter on an
input data set.
Enter the filename containing the data: input3.dat
Enter the number of samples to average: 7

167
© 2013 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
6.22 A function to smooth a noisy data set with a median filter is shown below.

function y = median_filter(x,n_ave)
%RUNNING_AVE Function to perform a median filter
% Function RUNNING_AVE performs a median filter
%
% Calling sequence:
% y = median_filter(x, n_ave)
%
% where:
% n_ave -- Number of points to average
% x -- Array of input values
% y -- Array of filtered values

% Record of revisions:
% Date Programmer Description of change
% ==== ========== =====================
% 07/12/11 S. J. Chapman Original code

% Define local variables:


% ii -- Loop index
% n_per_side -- Number of points to average per side
% n_points -- Number of points in data set
% slope -- Slope of the line

% Check for a legal number of input arguments.


msg = nargchk(1,2,nargin);

168
© 2013 Cengage Learning. All Rights Reserved. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part.
Random documents with unrelated
content Scribd suggests to you:
The Project Gutenberg eBook of La Prisonnière
(Sodome et Gomorrhe III)
This ebook is for the use of anyone anywhere in the United States
and most other parts of the world at no cost and with almost no
restrictions whatsoever. You may copy it, give it away or re-use it
under the terms of the Project Gutenberg License included with this
ebook or online at www.gutenberg.org. If you are not located in the
United States, you will have to check the laws of the country where
you are located before using this eBook.

Title: La Prisonnière (Sodome et Gomorrhe III)

Author: Marcel Proust

Release date: November 17, 2019 [eBook #60720]


Most recently updated: October 17, 2024

Language: French

Credits: Produced by Laura Natal Rodrigues at Free Literature


(Images
generously made available by Hathi Trust.)

*** START OF THE PROJECT GUTENBERG EBOOK LA PRISONNIÈRE


(SODOME ET GOMORRHE III) ***
MARCEL PROUST
À LA RECHERCHE DU TEMPS PERDU
TOME VI
LA PRISONNIÈRE
(SODOME ET GOMORRHE III)
TROISIÈME ÉDITION

NRF

PARIS

ÉDITIONS DE LA NOUVELLE REVUE FRANÇAISE

3, RUE DE GRENELLE. 1923

TABLE DE MATIÈRES
CHAPITRE PREMIER
CHAPITRE DEUXIÈME
CHAPITRE TROISIÈME

Le texte dactylographié du présent, qui forme le tome VI d'À la


recherche du temps perdu, nous avait été remis par Marcel Proust
peu de temps avant sa mort. La maladie ne lui ayant pas laissé la
force de corriger complètement ce texte, une révision très soigneuse
sur le manuscrit en fut entreprise après sa mort par le Dr Robert
Proust et, par Jacques Rivière. C'est le résultat de ce travail, où nous
espérons qu'un minimum d'imperfections se laissera découvrir, que
nous publions aujourd'hui.
É
L'ÉDITEUR.

CHAPITRE PREMIER

Vie en commun avec Albertine.

Dès le matin, la tête encore tournée contre le mur, et avant d'avoir


vu, au-dessus des grands rideaux de la fenêtre, de quelle nuance
était la raie du jour, je savais déjà le temps qu'il faisait. Les premiers
bruits de la rue me l'avaient appris, selon qu'ils me parvenaient
amortis et déviés par l'humidité ou vibrants comme des flèches dans
l'aire résonnante et vide d'un matin spacieux, glacial et pur; dès le
roulement du premier tramway, j'avais entendu s'il était morfondu
dans la pluie ou en partance pour l'azur. Et, peut-être, ces bruits
avaient-ils été devancés eux-mêmes par quelque émanation plus
rapide et plus pénétrante qui, glissée au travers de mon sommeil, y
répandait une tristesse annonciatrice de la neige, ou y faisait
entonner, à certain petit personnage intermittent, de si nombreux
cantiques à la gloire du soleil que ceux-ci finissaient par amener
pour moi, qui encore endormi commençais à sourire, et dont les
paupières closes se préparaient à être éblouies, un étourdissant
réveil en musique. Ce fut, du reste, surtout de ma chambre que je
perçus la vie extérieure pendant cette période. Je sais que Bloch
raconta que, quand il venait me voir le soir, il entendait comme le
bruit d'une conversation; comme ma mère était à Combray et qu'il
ne trouvait jamais personne dans ma chambre, il conclut que je
parlais tout seul. Quand, beaucoup plus tard, il apprit qu'Albertine
habitait alors avec moi, comprenant que je l'avais cachée à tout le
monde, il déclara qu'il voyait enfin la raison pour laquelle, à cette
époque de ma vie, je ne voulais jamais sortir. Il se trompa. Il était
d'ailleurs fort excusable, car la réalité même, si elle est nécessaire,
n'est pas complètement prévisible. Ceux qui apprennent sur la vie
d'un autre quelque détail exact en tirent aussitôt des conséquences
qui ne le sont pas et voient dans le fait nouvellement découvert
l'explication de choses qui précisément n'ont aucun rapport avec lui.
Quand je pense maintenant que mon amie était venue, à notre
retour de Balbec, habiter à Paris sous le même toit que moi, qu'elle
avait renoncé à l'idée d'aller faire une croisière, qu'elle avait sa
chambre à vingt pas de la mienne, au bout du couloir, dans le
cabinet à tapisseries de mon père, et que chaque soir, fort tard,
avant de me quitter, elle glissait dans ma bouche sa langue, comme
un pain quotidien, comme un aliment nourrissant et ayant le
caractère presque sacré de toute chair à qui les souffrances, que
nous avons endurées à cause d'elle, ont fini par conférer une sorte
de douceur morale, ce que j'évoque aussitôt par comparaison, ce
n'est pas la nuit que le capitaine de Borodino me permit de passer
au quartier, par une faveur qui ne guérissait en somme qu'un
malaise éphémère, mais celle où mon père envoya maman dormir
dans le petit lit à côté du mien. Tant la vie, si elle doit une fois de
plus nous délivrer d'une souffrance qui paraissait inévitable, le fait
dans des conditions différentes, opposées parfois jusqu'au point qu'il
y a presque sacrilège apparent à constater l'identité de la grâce
octroyée!
Quand Albertine savait par Françoise que, dans la nuit de ma
chambre aux rideaux encore fermés, je ne dormais pas, elle ne se
gênait pas pour faire un peu de bruit, en se baignant, dans son
cabinet de toilette. Alors, souvent, au lieu d'attendre une heure plus
tardive, j'allais dans une salle de bains contiguë à la sienne et qui
était agréable. Jadis, un directeur de théâtre dépensait des centaines
de mille francs pour consteller de vraies émeraudes le trône où la
diva jouait un rôle d'impératrice. Les ballets russes nous ont appris
que de simples jeux de lumières prodiguent, dirigés là où il faut, des
joyaux aussi somptueux et plus variés. Cette décoration déjà plus
immatérielle n'est pas si gracieuse pourtant que celle par quoi, à huit
heures du matin, le soleil remplace celle que nous avions l'habitude
d'y voir quand nous ne nous levions qu'à midi. Les fenêtres de nos
deux salles de bains, pour qu'on ne pût nous voir du dehors,
n'étaient pas lisses, mais toutes froncées d'un givre artificiel et
démodé. Le soleil tout à coup jaunissait cette mousseline de verre, la
dorait et, découvrant doucement en moi un jeune homme plus
ancien qu'avait caché longtemps l'habitude, me grisait de souvenirs,
comme si j'eusse été en pleine nature devant des feuillages dorés où
ne manquait même pas la présence d'un oiseau. Car j'entendais
Albertine siffler sans trêve:
Les douleurs sont des folles,
Et qui les écoute est encore plus fou.
Je l'aimais trop pour ne pas joyeusement sourire de son mauvais
goût musical. Cette chanson du reste avait ravi, l'été passé, Mme
Bontemps, laquelle entendit dire bientôt que c'était une ineptie, de
sorte que, au lieu de demander à Albertine de la chanter, quand elle
avait du monde, elle y substitua:
Une chanson d'adieu sort des sources troublées.
qui devint à son tour «une vieille rengaine de Massenet, dont la
petite nous rabat les oreilles.
Une nuée passait, elle éclipsait le soleil, je voyais s'éteindre et
rentrer dans une grisaille le pudique et feuillu rideau de verre.
Les cloisons, qui séparaient nos deux cabinets de toilette (celui
d'Albertine tout pareil était une salle de bains que maman, en ayant
une autre dans la partie opposée de l'appartement, n'avait jamais
utilisée pour ne pas me faire de bruit), étaient si minces que nous
pouvions parler tout en nous lavant chacun dans le nôtre,
poursuivant une causerie qu'interrompait seulement le bruit de l'eau,
dans cette intimité que permet souvent à l'hôtel l'exiguïté du
logement et le rapprochement des pièces mais qui, à Paris, est si
rare.
D'autres fois, je restais couché, rêvant aussi longtemps que je le
voulais, car on avait ordre de ne jamais entrer dans ma chambre
avant que j'eusse sonné, ce qui, à cause de la façon incommode
dont avait été posée la poire électrique au-dessus de mon lit,
demandait si longtemps, que, souvent, las de chercher à l'atteindre
et content d'être seul, je restais quelques instants presque rendormi.
Ce n'est pas que je fusse absolument indifférent au séjour
d'Albertine chez nous. Sa séparation d'avec ses amies réussissait à
épargner à mon cœur de nouvelles souffrances. Elle le maintenait
dans un repos, dans une quasi-immobilité qui l'aideraient à guérir.
Mais, enfin, ce calme que me procurait mon amie était apaisement
de la souffrance plutôt que joie. Non pas qu'il ne me permît d'en
goûter de nombreuses, auxquelles la douleur trop vive m'avait
fermé, mais ces joies, loin de les devoir à Albertine, que d'ailleurs je
ne trouvais plus guère jolie et avec laquelle je m'ennuyais, que
j'avais la sensation nette de ne pas aimer, je les goûtais au contraire
pendant qu'Albertine n'était pas auprès de moi. Aussi, pour
commencer la matinée, je ne la faisais pas tout de suite appeler,
surtout s'il faisait beau. Pendant quelques instants, et sachant qu'il
me rendait plus heureux qu'Albertine, je restais en tête à tête avec le
petit personnage intérieur, salueur chantant du soleil et dont j'ai déjà
parlé. De ceux qui composent notre individu, ce ne sont pas les plus
apparents qui nous sont le plus essentiels. En moi, quand la maladie
aura fini de les jeter l'un après l'autre par terre, il en restera encore
deux ou trois qui auront la vie plus dure que les autres, notamment
un certain philosophe qui n'est heureux que quand il a découvert,
entre deux œuvres, entre deux sensations, une partie commune.
Mais le dernier de tous, je me suis quelquefois demandé si ce ne
serait pas le petit bonhomme fort semblable à un autre que l'opticien
de Combray avait placé derrière sa vitrine pour indiquer le temps
qu'il faisait et qui, ôtant son capuchon dès qu'il y avait du soleil, le
remettait s'il allait pleuvoir. Ce petit bonhomme-là, je connais son
égoïsme; je peux souffrir d'une crise d'étouffements que la venue
seule de la pluie calmerait, lui ne s'en soucie pas et aux premières
gouttes si impatiemment attendues, perdant sa gaîté, il rabat son
capuchon avec mauvaise humeur. En revanche, je crois bien qu'à
mon agonie, quand tous mes autres «moi» seront morts, s'il vient à
briller un rayon de soleil, tandis que je pousserai mes derniers
soupirs, le petit personnage barométrique se sentira bien aise, et
ôtera son capuchon pour chanter: «Ah! enfin, il fait beau.»
Je sonnais Françoise. J'ouvrais le Figaro. J'y cherchais et constatais
que ne s'y trouvait pas un article, ou prétendu tel, que j'avais envoyé
à ce journal et qui n'était, un peu arrangée, que la page récemment
retrouvée, écrite autrefois dans la voiture du Dr Percepied, en
regardant les clochers de Martinville. Puis, je lisais la lettre de
maman. Elle trouvait bizarre, choquant, qu'une jeune fille habitât
seule avec moi. Le premier jour, au moment de quitter Balbec,
quand elle m'avait vu si malheureux et s'était inquiétée de me laisser
seul, peut-être ma mère avait-elle été heureuse en apprenant
qu'Albertine partait avec nous et en voyant que, côte à côte avec nos
propres malles (les malles auprès desquelles j'avais passé la nuit à
l'Hôtel de Balbec en pleurant), on avait chargé sur le tortillard celles
d'Albertine, étroites et noires, qui m'avaient paru avoir la forme de
cercueils et dont j'ignorais si elles allaient apporter à la maison la vie
ou la mort. Mais je ne me l'étais même pas demandé étant tout à la
joie, dans le matin rayonnant, après l'effroi de rester à Balbec,
d'emmener Albertine. Mais, à ce projet, si au début ma mère n'avait
pas été hostile (parlant gentiment à mon amie comme une maman
dont le fils vient d'être gravement blessé, et qui est reconnaissante à
la jeune maîtresse qui le soigne avec dévouement), elle l'était
devenue depuis qu'il s'était trop complètement réalisé et que le
séjour de la jeune fille se prolongeait chez nous, et chez nous en
l'absence de mes parents. Cette hostilité, je ne peux pourtant pas
dire que ma mère ne me la manifestât jamais. Comme autrefois,
quand elle avait cessé d'oser me reprocher ma nervosité, ma
paresse, maintenant elle se faisait un scrupule—que je n'ai peut-être
pas tout à fait deviné au moment ou pas voulu deviner—de risquer,
en faisant quelques réserves sur la jeune fille avec laquelle je lui
avais dit que j'allais me fiancer, d'assombrir ma vie, de me rendre
plus tard moins dévoué pour ma femme, de semer peut-être, pour
quand elle-même ne serait plus, le remords de l'avoir peinée en
épousant Albertine. Maman préférait paraître approuver un choix sur
lequel elle avait le sentiment qu'elle ne pourrait pas me faire revenir.
Mais tous ceux qui l'ont vue à cette époque m'ont dit qu'à sa douleur
d'avoir perdu sa mère, s'ajoutait un air de perpétuelle préoccupation.
Cette contention d'esprit, cette discussion intérieure, donnait à
maman une grande chaleur aux tempes et elle ouvrait constamment
les fenêtres pour se rafraîchir. Mais, de décision, elle n'arrivait pas à
en prendre de peur de «m'influencer» dans un mauvais sens et de
gâter ce qu'elle croyait mon bonheur. Elle ne pouvait même pas se
résoudre à m'empêcher de garder provisoirement Albertine à la
maison. Elle ne voulait pas se montrer plus sévère que Mme
Bontemps que cela regardait avant tout et qui ne trouvait pas cela
inconvenant, ce qui surprenait beaucoup ma mère. En tous cas, elle
regrettait d'avoir été obligée de nous laisser tous les deux seuls, en
partant juste à ce moment pour Combray où elle pouvait avoir à
rester (et en fait resta) de longs mois, pendant lesquels ma
grand'tante eut sans cesse besoin d'elle jour et nuit. Tout, là-bas, lui
fut rendu facile, grâce à la bonté, au dévouement de Legrandin qui,
ne reculant devant aucune peine, ajourna de semaine en semaine
son retour à Paris, sans connaître beaucoup ma tante, simplement
d'abord parce qu'elle avait été une amie de sa mère, puis parce qu'il
sentit que la malade, condamnée, aimait ses soins et ne pouvait se
passer de lui. Le snobisme est une maladie grave de l'âme, mais
localisée et qui ne la gâte pas tout entière. Moi, cependant, au
contraire de maman, j'étais fort heureux de son déplacement à
Combray, sans lequel j'eusse craint (ne pouvant pas dire à Albertine
de la cacher) qu'elle ne découvrît son amitié pour Mlle Vinteuil. C'eût
été pour ma mère un obstacle absolu, non seulement à un mariage
dont elle m'avait d'ailleurs demandé de ne pas parler encore
définitivement à mon amie et dont l'idée m'était de plus en plus
intolérable, mais même à ce que celle-ci passât quelque temps à la
maison. Sauf une raison si grave et qu'elle ne connaissait pas,
maman, par le double effet de l'imitation édifiante et libératrice de
ma grand'mère, admiratrice de George Sand, et qui faisait consister
la vertu dans la noblesse du cœur, et, d'autre part, de ma propre
influence corruptrice, était maintenant indulgente à des femmes
pour la conduite de qui elle se fût montrée sévère autrefois, ou
même aujourd'hui, si elles avaient été de ses amies bourgeoises de
Paris ou de Combray, mais dont je lui vantais la grande âme et
auxquelles elle pardonnait beaucoup parce qu'elles m'aimaient bien.
Malgré tout et même en dehors de la question convenance, je crois
qu'Albertine eût insupporté maman qui avait gardé de Combray, de
ma tante Léonie, e toutes ses parentes, des habitudes d'ordre, dont
mon amie n'avait pas la première notion.
Elle n'aurait pas fermé une porte et, en revanche, ne se serait pas
plus gênée d'entrer quand une porte était ouverte que ne fait un
chien ou un chat. Son charme un peu incommode était ainsi d'être à
la maison moins comme une jeune fille, que comme une bête
domestique qui entre dans une pièce, qui en sort, qui se trouve
partout où on ne s'y attend pas et qui venait—c'était pour moi un
repos profond—se jeter sur mon lit à côté de moi, s'y faire une place
d'où elle ne bougeait plus, sans gêner comme l'eût fait une
personne. Pourtant, elle finit par se plier à mes heures de sommeil, à
ne pas essayer non seulement d'entrer dans ma chambre, mais à ne
plus faire de bruit avant que j'eusse sonné. C'est Françoise qui lui
imposa ces règles.
Elle était de ces domestiques de Combray sachant la valeur de leur
maître et que le moins qu'elles puissent est de lui faire rendre
entièrement ce qu'elles jugent qui lui est dû. Quand un visiteur
étranger donnait un pourboire à Françoise à partager avec la fille de
cuisine, le donateur n'avait pas le temps d'avoir remis sa pièce que
Françoise avec une rapidité, une discrétion et une énergie égales,
avait passé la leçon à la fille de cuisine qui venait remercier non pas
à demi mot, mais franchement, hautement, comme Françoise lui
avait dit qu'il fallait le faire. Le curé de Combray n'était pas un génie,
mais, lui aussi, savait ce qui se devait. Sous sa direction, la fille de
cousins protestants de Mme Sazerat s'était convertie au catholicisme
et la famille avait été parfaite pour lui: il fut question d'un mariage
avec un noble de Méséglise. Les parents du jeune homme écrivirent
pour prendre des informations une lettre assez dédaigneuse et où
l'origine protestante était méprisée. Le curé de Combray répondit
d'un tel ton que le noble de Méséglise, courbé et prosterné, écrivit
une lettre bien différente, où il sollicitait comme la plus précieuse
faveur de s'unir à la jeune fille.
Françoise n'eut pas de mérite à faire respecter mon sommeil par
Albertine. Elle était imbue de la tradition. À un silence qu'elle garda,
ou à la réponse péremptoire qu'elle fit à une proposition d'entrer
chez moi ou de me faire demander quelque chose, qu'avait dû
innocemment formuler Albertine, celle-ci comprit avec stupeur
qu'elle se trouvait dans un monde étrange, aux coutumes inconnues,
réglé par des lois de vivre qu'on ne pouvait songer à enfreindre. Elle
avait déjà eu un premier pressentiment de cela à Balbec, mais, à
Paris, n'essaya même pas de résister et attendit patiemment chaque
matin mon coup de sonnette pour oser faire du bruit.
L'éducation que lui donna Françoise fut salutaire d'ailleurs à notre
vieille servante elle-même, en calmant peu à peu les gémissements
que depuis le retour de Balbec elle ne cessait de pousser. Car, au
moment de monter dans le tram, elle s'était aperçue qu'elle avait
oublié de dire adieu à la «gouvernante» de l'Hôtel, personne
moustachue qui surveillait les étages, connaissait à peine Françoise,
mais avait été relativement polie pour elle. Françoise voulait
absolument faire retour en arrière, descendre du tram, revenir à
l'Hôtel, faire ses adieux à la gouvernante et ne partir que le
lendemain. La sagesse, et surtout mon horreur subite, de Balbec,
m'empêchèrent de lui accorder cette grâce, mais elle en avait
contracté une mauvaise humeur maladive et fiévreuse, que le
changement d'air n'avait pas suffi à faire disparaître et qui se
prolongeait à Paris. Car, selon le code de Françoise, tel qu'il est
illustré dans les bas-reliefs de Saint-André-des-Champs, souhaiter la
mort d'un ennemi, la lui donner même n'est pas défendu, mais il est
horrible de ne pas faire ce qui se doit, de ne pas rendre une
politesse, de ne pas faire des adieux avant de partir, comme une
vraie malotrue, à une gouvernante d'étage. Pendant tout le voyage,
le souvenir à chaque moment renouvelé qu'elle n'avait pas pris
congé de cette femme, avait fait monter aux joues de Françoise un
vermillon qui pouvait effrayer. Et si elle refusa de boire et de manger
jusqu'à Paris, c'est peut-être parce que ce souvenir lui mettait un
«poids réel» «sur l'estomac» (chaque classe sociale a sa pathologie)
plus encore que pour nous punir.
Parmi les causes qui faisaient que maman m'envoyait tous les jours
une lettre, et une lettre d'où n'était jamais absente quelque citation
de Mme de Sévigné, il y avait le souvenir de ma grand'mère. Maman
m'écrivait: «Mme Sazerat nous a donné un de ces petits déjeuners
dont elle a le secret et qui, comme eût dit ta pauvre grand'mère, en
citant Mme de Sévigné, nous enlèvent à la solitude sans nous
apporter la société.» Dans mes premières réponses, j'eus la bêtise
d'écrire à maman: «À ces citations, ta mère te reconnaîtrait tout de
suite.» Ce qui me valut, trois jours après, ce mot: «Mon pauvre fils,
si c'était pour me parler de ma mère tu invoques bien mal à propos
Mme de Sévigné. Elle t'aurait répondu comme elle fit à Mme de
Grignan: «Elle ne vous était donc rien? Je vous croyais parents.»
Cependant, j'entendais les pas de mon amie qui sortait de sa
chambre ou y rentrait. Je sonnais, car c'était l'heure où Andrée allait
venir avec le chauffeur, ami de Morel, et fourni par les Verdurin,
chercher Albertine. J'avais parlé à celle-ci de la possibilité lointaine
de nous marier; mais je ne l'avais jamais fait formellement; elle-
même, par discrétion, quand j'avais dit: «Je ne sais pas, mais ce
serait peut-être possible», avait secoué la tête avec un mélancolique
sourire disant «mais non ce ne le serait pas», ce qui signifiait: «je
suis trop pauvre». Et, alors, tout en disant «rien n'est moins sûr»,
quand il s'agissait de projets d'avenir, présentement je faisais tout
pour la distraire, lui rendre la vie agréable, cherchant peut-être
aussi, inconsciemment, à lui faire par là désirer de m'épouser. Elle
riait elle-même de tout ce luxe. «C'est la mère d'Andrée qui en ferait
une tête de me voir devenue une dame riche comme elle, ce qu'elle
appelle une dame qui a «chevaux, voitures, tableaux». Comment? Je
ne vous avais jamais raconté qu'elle disait cela. Oh! c'est un type! Ce
qui m'étonne, c'est qu'elle élève les tableaux à la dignité des
chevaux et des voitures.» On verra plus tard que, malgré les
habitudes de parler stupides qui lui étaient restées, Albertine s'était
étonnamment développée, ce qui m'était entièrement égal, les
supériorités d'esprit d'une compagne m'ayant toujours si peu
intéressé, que si je les ai fait remarquer à l'une ou à l'autre, cela a
été par pure politesse. Seul, le curieux génie de Françoise m'eût
peut-être plu. Malgré moi, je souriais pendant quelques instants,
quand, par exemple, ayant profité de ce qu'elle avait appris
qu'Albertine n'était pas là, elle m'abordait par ces mots: «Divinité du
ciel déposée sur un lit!» Je disais: «Mais, voyons, Françoise,
pourquoi «divinité du ciel?»—Oh, si vous croyez que vous avez
quelque chose de ceux qui voyagent sur notre vile terre, vous vous
trompez bien!—Mais pourquoi «déposée» sur un lit, vous voyez bien
que je suis couché.—Vous n'êtes jamais couché. A-t-on jamais vu
personne couché ainsi? Vous êtes venu vous poser là. Votre pyjama
en ce moment, tout blanc, avec vos mouvements de cou, vous
donne l'air d'une colombe.»
Albertine, même dans l'ordre des choses bêtes, s'exprimait tout
autrement que la petite fille qu'elle était il y avait seulement
quelques aimées à Balbec. Elle allait jusqu'à déclarer, à propos d'un
événement politique qu'elle blâmait: «Je trouve ça formidable.» Et je
ne sais si ce ne fut vers ce temps-là qu'elle apprit à dire pour
signifier qu'elle trouvait un livre mal écrit: «C'est intéressant, mais,
par exemple, c'est écrit comme par un cochon.»
La défense d'entrer chez moi avant que j'eusse sonné l'amusait
beaucoup. Comme elle avait pris notre habitude familiale des
citations et utilisait pour elle celles des pièces qu'elle avait jouées au
couvent et que je lui avais dit aimer, elle me comparait toujours à
Assuérus:
Et la mort est le prix de tout audacieux
Qui sans être appelé se présente à ses yeux.
.......................
Rien ne met à l'abri de cet ordre fatal
Ni le rang, ni le sexe; et le crime est égal
Moi-même...
Je suis à cette loi comme une autre soumise:
Et sans le prévenir il faut pour lui parler
Qu'il me cherche ou du moins qu'il me fasse appeler.
Physiquement, elle avait changé aussi. Ses longs yeux bleus—plus
allongés—n'avaient pas gardé la même forme; ils avaient bien la
même couleur, mais semblaient être passés à l'état liquide. Si bien
que, quand elle les fermait, c'était comme quand avec des rideaux
on empêche de voir la mer. C'est sans doute de cette partie d'elle-
même que je me souvenais surtout, chaque nuit en la quittant. Car,
par exemple, tout au contraire chaque matin, le crêpelage de ses
cheveux me causa longtemps la même surprise, comme une chose
nouvelle que je n'aurais jamais vue. Et pourtant, au-dessus du
regard souriant d'une jeune fille, qu'y a-t-il de plus beau que cette
couronne bouclée de violettes noires. Le sourire propose plus
d'amitié; mais les petits crochets vernis des cheveux en fleurs, plus
parents de la chair dont ils semblent la transposition en vaguelettes,
attrapent davantage le désir.
À peine entrée dans ma chambre, elle sautait sur le lit et quelquefois
définissait mon genre d'intelligence, jurait dans un transport sincère
qu'elle aimerait mieux mourir que me quitter: c'était les jours où je
m'étais rasé avant de la faire venir. Elle était de ces femmes qui ne
savent pas démêler la raison de ce qu'elles ressentent. Le plaisir que
leur cause un teint frais, elles l'expliquent par les qualités morales de
celui qui leur semble pour leur avenir présenter une possibilité de
bonheur, capable du reste de décroître et de devenir moins
nécessaire au fur et à mesure qu'on laisse pousser sa barbe.
Je lui demandais où elle comptait aller.
«Je crois qu'Andrée veut me mener aux Buttes-Chaumont que je ne
connais pas.»
Certes, il m'était impossible de deviner entre tant d'autres paroles si
sous celle-là un mensonge était caché. D'ailleurs, j'avais confiance
en Andrée pour me dire tous les endroits où elle allait avec Albertine.
À Balbec, quand je m'étais senti trop las d'Albertine, j'avais compté
dire mensongèrement à Andrée: «Ma petite Andrée, si seulement je
vous avais revue plus tôt! C'était vous que j'aurais aimée. Mais,
maintenant, mon cœur est fixé ailleurs. Tout de même, nous
pouvons nous voir beaucoup, car mon amour pour une autre me
cause de grands chagrins et vous m'aiderez à me consoler.» Or, ces
mêmes paroles de mensonge étaient devenues vérité à trois
semaines de distance. Peut-être, Andrée avait-elle cru à Paris que
c'était en effet un mensonge et que je l'aimais, comme elle l'aurait
sans doute cru à Balbec. Car la vérité change tellement pour nous,
que les autres ont peine à s'y reconnaître. Et comme je savais qu'elle
me raconterait tout ce qu'elles auraient fait, Albertine et elle, je lui
avais demandé et elle avait accepté de venir la chercher presque
chaque jour. Ainsi, je pourrais, sans souci, rester chez moi.
Et ce prestige d'Andrée d'être une des filles de la petite bande me
donnait confiance qu'elle obtiendrait tout ce que je voudrais
d'Albertine. Vraiment, j'aurais pu lui dire maintenant en toute vérité
qu'elle serait capable de me tranquilliser.
D'autre part, mon choix d'Andrée (laquelle se trouvait être à Paris,
ayant renoncé à son projet de revenir à Balbec) comme guide de
mon amie avait tenu à ce qu'Albertine me raconta de l'affection que
son amie avait eue pour moi à Balbec, à un moment au contraire où
je craignais de l'ennuyer, et si je l'avais su alors, c'est peut-être
Andrée que j'eusse aimée.
«Comment vous ne le saviez pas, me dit Albertine, nous en
plaisantions pourtant entre nous. Du reste, vous n'avez pas
remarqué qu'elle s'était mise à prendre vos manières de parler, de
raisonner. Surtout, quand elle venait de vous quitter, c'était frappant.
Elle n'avait pas besoin de nous dire si elle vous avait vu. Quand elle
arrivait, si elle venait d'auprès de vous, cela se voyait à la première
seconde. Nous nous regardions entre nous et nous riions. Elle était
comme un charbonnier qui voudrait faire croire qu'il n'est pas
charbonnier. Il est tout noir. Un meunier n'a pas besoin de dire qu'il
est meunier, on voit bien toute la farine qu'il a sur lui; il y a encore la
place des sacs qu'il a portés. Andrée, c'était la même chose, elle
tournait ses sourcils comme vous, et puis son grand cou, enfin je ne
peux pas vous dire. Quand je prends un livre qui a été dans votre
chambre, je peux le lire dehors, on sait tout de même qu'il vient de
chez vous parce qu'il garde quelque chose de vos sales fumigations.
C'est un rien, mais c'est un rien au fond qui est assez gentil. Chaque
fois que quelqu'un avait parlé de vous gentiment, avait eu l'air de
faire grand cas de vous, Andrée était dans le ravissement.»
Malgré tout, pour éviter qu'il y eût quelque chose de préparé à mon
insu, je conseillai d'abandonner pour ce jour-là les Buttes-Chaumont
et d'aller plutôt à Saint-Cloud, ou ailleurs.
Ce n'est pas certes, je le savais, que j'aimasse Albertine le moins du
monde. L'amour n'est peut-être que la propagation de ces remous
qui, à la suite d'une émotion, émeuvent l'âme. Certains avaient
remué mon âme tout entière quand Albertine m'avait parlé à Balbec
de Mlle Vinteuil, mais ils étaient maintenant arrêtés. Je n'aimais plus
Albertine, car il ne me restait plus rien de la souffrance, guérie
maintenant, que j'avais eue dans le tram, à Balbec, en apprenant
quelle avait été l'adolescence d'Albertine, avec des visites peut-être à
Montjouvain. Tout cela, j'y avais trop longtemps pensé, c'était guéri.
Mais, par instant, certaines manières de parler d'Albertine me
faisaient supposer—je ne sais pourquoi—qu'elle avait dû recevoir
dans sa vie encore si courte beaucoup de compliments, de
déclarations, et les recevoir avec plaisir, autant dire avec sensualité.
Ainsi, elle disait, à propos de n'importe quoi: «C'est vrai? C'est bien
vrai?» Certes, si elle avait dit comme une Odette: «C'est bien vrai ce
gros mensonge-là!» je ne m'en fusse pas inquiété, car le ridicule de
la formule se fût expliqué par une stupide banalité d'esprit de
femme. Mais son air interrogateur: «C'est vrai?» donnait d'une part
l'étrange impression d'une créature qui ne peut se rendre compte
des choses par elle-même, qui en appelle à votre témoignage,
comme si elle ne possédait pas les mêmes facilités que vous (on lui
disait: «Voilà une heure que nous sommes partis», ou: «Il pleut»,
elle demandait: «C'est vrai?») Malheureusement, d'autre part, ce
manque de facilité à se rendre compte par soi-même des
phénomènes extérieurs ne devait pas être la véritable origine de
«C'est vrai? C'est bien vrai?» Il semblait plutôt que ces mots eussent
été, dès sa nubilité précoce, des réponses à des «Vous savez que je
n'ai jamais trouvé une personne aussi jolie que vous.» «Vous savez
que j'ai un grand amour pour vous, que je suis dans un état
d'excitation terrible.» Affirmations auxquelles répondaient, avec une
modestie coquettement consentante, ces «C'est vrai? C'est bien
vrai?», lesquels ne servaient plus à Albertine avec moi qu'à répondre
par une question à une affirmation telle que: «Vous avez sommeillé
plus d'une heure.» «C'est vrai?»
Sans me sentir le moins du monde amoureux d'Albertine, sans faire
figurer au nombre des plaisirs les moments que nous passions
ensemble, j'étais resté préoccupé de l'emploi de son temps; certes,
j'avais fui Balbec pour être certain qu'elle ne pourrait plus voir telle
ou telle personne, avec laquelle j'avais tellement peur qu'elle ne fît
le mal en riant, peut-être en riant de moi, que j'avais adroitement
tenté de rompre d'un seul coup, par mon départ, toutes ses
mauvaises relations. Et Albertine avait une telle force de passivité,
une si grande facilité d'oublier et de se soumettre, que ces relations
avaient été brisées en effet et la phobie qui me hantait guérie. Mais
elle peut revêtir autant de formes que le mal incertain qui est son
objet. Tant que ma jalousie ne s'était pas réincarnée en des êtres
nouveaux, j'avais eu après mes souffrances passées un intervalle de
calme. Mais à une maladie chronique le moindre prétexte sert pour
renaître, comme d'ailleurs au vice de l'être qui est cause de cette
jalousie, la moindre occasion peut servir pour s'exercer à nouveau
(après une trêve de chasteté) avec des êtres différents. J'avais pu
séparer Albertine de ses complices et, par là, exorciser mes
hallucinations; si on pouvait lui faire oublier les personnes, rendre
brefs ses attachements, son goût du plaisir était, lui aussi, chronique
et n'attendait peut-être qu'une occasion pour se donner cours. Or,
Paris en fournit autant que Balbec.
Dans quelque ville que ce fût, elle n'avait pas besoin de chercher, car
le mal n'était pas en Albertine seule, mais en d'autres pour qui toute
occasion de plaisir est bonne. Un regard de l'une aussitôt compris de
l'autre rapproche les deux affamées. Et il est facile à une femme
adroite d'avoir l'air de ne pas voir, puis cinq minutes après d'aller
vers la personne qui a compris et l'a attendue dans une rue de
traverse, et, en deux mots, de donner un rendez-vous. Qui saura
jamais? Et il était si simple à Albertine de me dire, afin que cela
continuât, qu'elle désirait revoir tel environ de Paris qui lui avait plu.
Welcome to our website – the perfect destination for book lovers and
knowledge seekers. We believe that every book holds a new world,
offering opportunities for learning, discovery, and personal growth.
That’s why we are dedicated to bringing you a diverse collection of
books, ranging from classic literature and specialized publications to
self-development guides and children's books.

More than just a book-buying platform, we strive to be a bridge


connecting you with timeless cultural and intellectual values. With an
elegant, user-friendly interface and a smart search system, you can
quickly find the books that best suit your interests. Additionally,
our special promotions and home delivery services help you save time
and fully enjoy the joy of reading.

Join us on a journey of knowledge exploration, passion nurturing, and


personal growth every day!

testbankfan.com

You might also like