100% found this document useful (13 votes)
162 views

Numerical Methods in Engineering With Python First Edition Jaan Kiusalaas Download PDF

Engineering

Uploaded by

ronidekezun
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (13 votes)
162 views

Numerical Methods in Engineering With Python First Edition Jaan Kiusalaas Download PDF

Engineering

Uploaded by

ronidekezun
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 70

Get ebook downloads in full at ebookname.

com

Numerical Methods in Engineering With Python First


Edition Jaan Kiusalaas

https://ebookname.com/product/numerical-methods-in-
engineering-with-python-first-edition-jaan-kiusalaas/

OR CLICK BUTTON

DOWNLOAD EBOOK

Explore and download more ebook at https://ebookname.com


Instant digital products (PDF, ePub, MOBI) available
Download now and explore formats that suit you...

Numerical Methods in Engineering with MATLAB Jaan


Kiusalaas

https://ebookname.com/product/numerical-methods-in-engineering-
with-matlab-jaan-kiusalaas/

Numerical Methods for Chemical Engineering Applications


in MATLAB 1st Edition Kenneth J. Beers

https://ebookname.com/product/numerical-methods-for-chemical-
engineering-applications-in-matlab-1st-edition-kenneth-j-beers/

Numerical and Analytical Methods with MATLAB 1st


Edition William Bober

https://ebookname.com/product/numerical-and-analytical-methods-
with-matlab-1st-edition-william-bober/

Everyday Moral Economies Food Politics and Scale in


Cuba 1st Edition Marisa Wilson

https://ebookname.com/product/everyday-moral-economies-food-
politics-and-scale-in-cuba-1st-edition-marisa-wilson/
The Child Clinician s Report Writing Handbook Second
Edition Ellen Braaten

https://ebookname.com/product/the-child-clinician-s-report-
writing-handbook-second-edition-ellen-braaten/

The Economics of the Roman Stone Trade 1st Edition


Russell

https://ebookname.com/product/the-economics-of-the-roman-stone-
trade-1st-edition-russell/

Evidence Based Cardiology Evidence Based Medicine 3rd


Edition Salim Yusuf

https://ebookname.com/product/evidence-based-cardiology-evidence-
based-medicine-3rd-edition-salim-yusuf/

Women in the Hindu Tradition Rules Roles and Exceptions


1st Edition Mandakranta Bose

https://ebookname.com/product/women-in-the-hindu-tradition-rules-
roles-and-exceptions-1st-edition-mandakranta-bose/

Areal Diffusion and Genetic Inheritance Alexandra Y.


Aikhenvald

https://ebookname.com/product/areal-diffusion-and-genetic-
inheritance-alexandra-y-aikhenvald/
Understanding Scientology 1st Edition Cynthia Kennedy
Henzel

https://ebookname.com/product/understanding-scientology-1st-
edition-cynthia-kennedy-henzel/
Numerical Methods in Engineering with Python

Numerical Methods in Engineering with Python is a text for engineer-


ing students and a reference for practicing engineers, especially those
who wish to explore the power and efficiency of Python. The choice of
numerical methods was based on their relevance to engineering prob-
lems. Every method is discussed thoroughly and illustrated with prob-
lems involving both hand computation and programming. Computer
code accompanies each method and is available on the book web site.
This code is made simple and easy to understand by avoiding complex
book-keeping schemes, while maintaining the essential features of the
method Python was chosen as the example language because it is ele-
gant, easy to learn and debug, and its facilities for handling arrays are
unsurpassed. Moreover, it is an open-source software package that can
be downloaded freely on the web. Python is a great language for teaching
scientific computation.

Jaan Kiusalaas is a Professor Emeritus in the Department of Engineer-


ing Science and Mechanics at the Pennsylvania State University. He has
taught computer methods, including finite element and boundary ele-
ment methods, for over 30 years. He is also the co-author of four other
books—Engineering Mechanics: Statics, Engineering Mechanics: Dynam-
ics, Mechanics of Materials, and an alternate version of this work with
MATLAB® code.
NUMERICAL METHODS IN
ENGINEERING WITH

Python
Jaan Kiusalaas
The Pennsylvania State University
  
Cambridge, New York, Melbourne, Madrid, Cape Town, Singapore, São Paulo

Cambridge University Press


The Edinburgh Building, Cambridge  , UK
Published in the United States of America by Cambridge University Press, New York
www.cambridge.org
Information on this title: www.cambridge.org/9780521852876

© Jaan Kiusalaas 2005

This publication is in copyright. Subject to statutory exception and to the provision of


relevant collective licensing agreements, no reproduction of any part may take place
without the written permission of Cambridge University Press.

First published in print format 2005

- ---- eBook (NetLibrary)


- --- eBook (NetLibrary)

- ---- hardback


- --- hardback

Cambridge University Press has no responsibility for the persistence or accuracy of s
for external or third-party internet websites referred to in this publication, and does not
guarantee that any content on such websites is, or will remain, accurate or appropriate.
Contents

Preface . . . . . . . . . vii

1. Introduction to Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

2. Systems of Linear Algebraic Equations . . . . . . . . . . . . . 27

3. Interpolation and Curve Fitting . . . . . . . . . . . . . . . . . . . . . 103

4. Roots of Equations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142

5. Numerical Differentiation . . . . . . . . . . . . . . . . . . . . . . . . . . . 181

6. Numerical Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198

7. Initial Value Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248

8. Two-Point Boundary Value Problems . . . . . . . . . . . . . . . 295

9. Symmetric Matrix Eigenvalue Problems . . . . . . . . . . . . 324

10. Introduction to Optimization . . . . . . . . . . . . . . . . . . . . . . . 381

Appendices . . . . 409

Index . . . . . . . . . . . 419

v
Preface

This book is targeted primarily toward engineers and engineering students of ad-
vanced standing (sophomores, seniors and graduate students). Familiarity with a
computer language is required; knowledge of basic engineering mechanics is useful,
but not essential.
The text attempts to place emphasis on numerical methods, not programming.
Most engineers are not programmers, but problem solvers. They want to know what
methods can be applied to a given problem, what are their strengths and pitfalls and
how to implement them. Engineers are not expected to write computer code for basic
tasks from scratch; they are more likely to utilize functions and subroutines that have
been already written and tested. Thus programming by engineers is largely confined
to assembling existing pieces of code into a coherent package that solves the problem
at hand.
The “piece” of code is usually a function that implements a specific task. For the
user the details of the code are unimportant. What matters is the interface (what goes
in and what comes out) and an understanding of the method on which the algorithm
is based. Since no numerical algorithm is infallible, the importance of understanding
the underlying method cannot be overemphasized; it is, in fact, the rationale behind
learning numerical methods.
This book attempts to conform to the views outlined above. Each numerical
method is explained in detail and its shortcomings are pointed out. The examples that
follow individual topics fall into two categories: hand computations that illustrate the
inner workings of the method and small programs that show how the computer code is
utilized in solving a problem. Problems that require programming are marked with .
The material consists of the usual topics covered in an engineering course on
numerical methods: solution of equations, interpolation and data fitting, numerical
differentiation and integration, solution of ordinary differential equations and eigen-
value problems. The choice of methods within each topic is tilted toward relevance
to engineering problems. For example, there is an extensive discussion of symmetric,

vii
viii Preface

sparsely populated coefficient matrices in the solution of simultaneous equations.


In the same vein, the solution of eigenvalue problems concentrates on methods that
efficiently extract specific eigenvalues from banded matrices.
An important criterion used in the selection of methods was clarity. Algorithms
requiring overly complex bookkeeping were rejected regardless of their efficiency and
robustness. This decision, which was taken with great reluctance, is in keeping with
the intent to avoid emphasis on programming.
The selection of algorithms was also influenced by current practice. This disqual-
ified several well-known historical methods that have been overtaken by more recent
developments. For example, the secant method for finding roots of equations was
omitted as having no advantages over Brent’s method. For the same reason, the mul-
tistep methods used to solve differential equations (e.g., Milne and Adams methods)
were left out in favor of the adaptive Runge–Kutta and Bulirsch–Stoer methods.
Notably absent is a chapter on partial differential equations. It was felt that this
topic is best treated by finite element or boundary element methods, which are outside
the scope of this book. The finite difference model, which is commonly introduced
in numerical methods texts, is just too impractical in handling multidimensional
boundary value problems.
As usual, the book contains more material than can be covered in a three-credit
course. The topics that can be skipped without loss of continuity are tagged with an
asterisk (*).
The programs listed in this book were tested with Python 2.2.2 and 2.3.4 under
Windows XP and Red Hat Linux. The source code can be downloaded from the book’s
website at

www.cambridge.org/0521852870

The author wishes to express his gratitude to the anonymous reviewers and
Professor Andrew Pytel for their suggestions for improving the manuscript. Credit
is also due to the authors of Numerical Recipes (Cambridge University Press) whose
presentation of numerical methods was inspirational in writing this book.
1 Introduction to Python

1.1 General Information


Quick Overview
This chapter is not a comprehensive manual of Python. Its sole aim is to provide
sufficient information to give you a good start if you are unfamiliar with Python. If you
know another computer language, and presumably you do, it is not difficult to pick
up the rest as you go.
Python is an object-oriented language that was developed in late 1980s as a
scripting language (the name is derived from the British television show Monty
Python’s Flying Circus). Although Python is not as well known in engineering cir-
cles as some other languages, it has a considerable following in the programming
community—in fact, Python is considerably more widespread than Fortran. Python
may be viewed as an emerging language, since it is still being developed and re-
fined. In the current state, it is an excellent language for developing engineering
applications—it possesses a simple elegance that other programming languages can-
not match.
Python programs are not compiled into machine code, but are run by an inter-
preter 1 . The great advantage of an interpreted language is that programs can be tested
and debugged quickly, allowing the user to concentrate more on the principles be-
hind the program and less on programming itself. Since there is no need to compile,
link and execute after each correction, Python programs can be developed in a much
shorter time than equivalent Fortran or C programs. On the negative side, interpreted
programs do not produce stand-alone applications. Thus a Python program can be
run only on computers that have the Python interpreter installed.

1 The Python interpreter also compiles byte code, which helps to speed up execution somewhat.

1
2 Introduction to Python

Python has other advantages over mainstream languages that are important in a
learning environment:
r Python is open-source software, which means that it is free; it is included in most
Linux distributions.
r Python is available for all major operating systems (Linux, Unix, Windows, Mac OS
etc.). A program written on one system runs without modification on all systems.
r Python is easier to learn and produces more readable code than other languages.
r Python and its extensions are easy to install.

Development of Python was clearly influenced by Java and C++, but there is also
a remarkable similarity to MATLAB® (another interpreted language, very popular
in scientific computing). Python implements the usual concepts of object-oriented
languages such as classes, methods, inheritance etc. We will forego these concepts
and use Python strictly as a procedural language.
To get an idea of the similarities between MATLAB and Python, let us look at the
codes written in the two languages for solution of simultaneous equations Ax = b by
Gauss elimination. Here is the function written in MATLAB:

function [x,det] = gaussElimin(a,b)


n = length(b);
for k = 1:n-1
for i = k+1:n
if a(i,k) ˜= 0
lam = a(i,k)/a(k,k);
a(i,k+1:n) = a(i,k+1:n) - lam*a(k,k+1:n);
b(i)= b(i) - lam*b(k);
end
end
end
det = prod(diag(a));
for k = n:-1:1
b(k) = (b(k) - a(k,k+1:n)*b(k+1:n))/a(k,k);
end
x = b;

The equivalent Python function is:

from numarray import dot


def gaussElimin(a,b):
n = len(b)
3 1.1 General Information

for k in range(0,n-1):
for i in range(k+1,n):
if a[i,k] != 0.0:
lam = a [i,k]/a[k,k]
a[i,k+1:n] = a[i,k+1:n] - lam*a[k,k+1:n]
b[i] = b[i] - lam*b[k]
for k in range(n-1,-1,-1):
b[k] = (b[k] - dot(a[k,k+1:n],b[k+1:n]))/a[k,k]
return b

The command from numarray import dot instructs the interpreter to load
the function dot (which computes the dot product of two vectors) from the module
numarray. The colon (:) operator, known as the slicing operator in Python, works the
same way it does in MATLAB and Fortran90—it defines a section of an array.
The statement for k = 1:n-1 in MATLAB creates a loop that is executed with
k = 1, 2, . . . , n − 1. The same loop appears in Python as for k in range(n-1).
Here the function range(n-1) creates the list [0, 1, . . . , n − 2]; k then loops over
the elements of the list. The differences in the ranges of k reflect the native off-
sets used for arrays. In Python all sequences have zero offset, meaning that the in-
dex of the first element of the sequence is always 0. In contrast, the native offset in
MATLAB is 1.
Also note that Python has no end statements to terminate blocks of code (loops,
conditionals, subroutines etc.). The body of a block is defined by its indentation; hence
indentation is an integral part of Python syntax.
Like MATLAB, Python is case sensitive. Thus the names n and N would represent
different objects.

Obtaining Python
Python interpreter can be downloaded from the Python Language Website
www.python.org. It normally comes with a nice code editor called Idle that allows
you to run programs directly from the editor. For scientific programming we also
need the Numarray module which contains various tools for array operations. It is
obtainable from the Numarray Home Page http://www.stsci.edu/resources/
software hardware/numarray. Both sites also provide documentation for down-
loading. If you use Linux or Mac OS, it is very likely that Python is already installed on
your machine (but you must still download Numarray).
You should acquire other printed material to supplement the on-line documen-
tation. A commendable teaching guide is Python by Chris Fehly, Peachpit Press, CA
(2002). As a reference, Python Essential Reference by David M. Beazley, New Riders
4 Introduction to Python

Publishing (2001) is recommended. By the time you read this, newer editions may be
available.

1.2 Core Python


Variables
In most computer languages the name of a variable represents a value of a given
type stored in a fixed memory location. The value may be changed, but not the
type. This it not so in Python, where variables are typed dynamically. The follow-
ing interactive session with the Python interpreter illustrates this (>>> is the Python
prompt):

>>> b = 2 # b is integer type


>>> print b
2
>>> b = b * 2.0 # Now b is float type
>>> print b
4.0

The assignment b = 2 creates an association between the name b and the integer
value 2. The next statement evaluates the expression b * 2.0 and associates the
result with b; the original association with the integer 2 is destroyed. Now b refers to
the floating point value 4.0.
The pound sign (#) denotes the beginning of a comment—all characters between
# and the end of the line are ignored by the interpreter.

Strings
A string is a sequence of characters enclosed in single or double quotes. Strings are
concatenated with the plus (+) operator, whereas slicing (:) is used to extract a portion
of the string. Here is an example:

>>> string1 = ’Press return to exit’


>>> string2 = ’the program’
>>> print string1 + ’ ’ + string2 # Concatenation
Press return to exit the program
>>> print string1[0:12] # Slicing
Press return
5 1.2 Core Python

A string is an immutable object—its individual characters cannot be modified with


an assignment statement and it has a fixed length. An attempt to violate immutability
will result in TypeError, as shown below.

>>> s = ’Press return to exit’


>>> s[0] = ’p’
Traceback (most recent call last):
File ’’<pyshell#1>’’, line 1, in ?
s[0] = ’p’
TypeError: object doesn’t support item assignment

Tuples
A tuple is a sequence of arbitrary objects separated by commas and enclosed in paren-
theses. If the tuple contains a single object, the parentheses may be omitted. Tuples
support the same operations as strings; they are also immutable. Here is an example
where the tuple rec contains another tuple (6,23,68):

>>> rec = (’Smith’,’John’,(6,23,68)) # This is a tuple


>>> lastName,firstName,birthdate = rec # Unpacking the tuple
>>> print firstName
John
>>> birthYear = birthdate[2]
>>> print birthYear
68
>>> name = rec[1] + ’ ’ + rec[0]
>>> print name
John Smith
>>> print rec[0:2]
(’Smith’, ’John’)

Lists
A list is similar to a tuple, but it is mutable, so that its elements and length can be
changed. A list is identified by enclosing it in brackets. Here is a sampling of operations
that can be performed on lists:

>>> a = [1.0, 2.0, 3.0] # Create a list


>>> a.append(4.0) # Append 4.0 to list
>>> print a
[1.0, 2.0, 3.0, 4.0]
6 Introduction to Python

>>> a.insert(0,0.0) # Insert 0.0 in position 0


>>> print a
[0.0, 1.0, 2.0, 3.0, 4.0]
>>> print len(a) # Determine length of list
5
>>> a[2:4] = [1.0, 1.0] # Modify selected elements
>>> print a
[0.0, 1.0, 1.0, 1.0, 1.0, 4.0]

If a is a mutable object, such as a list, the assignment statement b = a does not


result in a new object b, but simply creates a new reference to a. Thus any changes
made to b will be reflected in a. To create an independent copy of a list a, use the
statement c = a[:], as illustrated below.

>>> a = [1.0, 2.0, 3.0]


>>> b = a # ’b’ is an alias of ’a’
>>> b[0] = 5.0 # Change ’b’
>>> print a
[5.0, 2.0, 3.0] # The change is reflected in ’a’
>>> c = a[:] # ’c’ is an independent copy of ’a’
>>> c[0] = 1.0 # Change ’c’
>>> print a
[5.0, 2.0, 3.0] # ’a’ is not affected by the change

Matrices can represented as nested lists with each row being an element of the
list. Here is a 3 × 3 matrix a in the form of a list:

>>> a = [[1, 2, 3], \


[4, 5, 6], \
[7, 8, 9]]
>>> print a[1] # Print second row (element 1)
[4, 5, 6]
>>> print a[1][2] # Print third element of second row
6

The backslash (\) is Python’s continuation character. Recall that Python sequences
have zero offset, so that a[0] represents the first row, a[1] the second row, etc. With
very few exceptions we do not use lists for numerical arrays. It is much more convenient
7 1.2 Core Python

to employ array objects provided by the numarray module, (an extension of Python
language). Array objects will be discussed later.

Arithmetic Operators
Python supports the usual arithmetic operators:

+ Addition
− Subtraction
∗ Multiplication
/ Division
∗∗ Exponentiation
% Modular division

Some of these operators are also defined for strings and sequences as illustrated
below.

>>> s = ’Hello ’
>>> t = ’to you’
>>> a = [1, 2, 3]
>>> print 3*s # Repetition
Hello Hello Hello
>>> print 3*a # Repetition
[1, 2, 3, 1, 2, 3, 1, 2, 3]
>>> print a + [4, 5] # Append elements
[1, 2, 3, 4, 5]
>>> print s + t # Concatenation
Hello to you
>>> print 3 + s # This addition makes no sense
Traceback (most recent call last):
File ’’<pyshell#9>’’, line 1, in ?
print n + s
TypeError: unsupported operand types for +: ’int’ and ’str’

Python 2.0 and later versions also have augmented assignment operators, such as
a + = b, that are familiar to the users of C. The augmented operators and the equiv-
alent arithmetic expressions are shown in the following table.
8 Introduction to Python

a += b a = a + b

a -= b a = a - b

a *= b a = a*b

a /= b a = a/b

a **= b a = a**b

a %= b a = a%b

Comparison Operators
The comparison (relational) operators return 1 for true and 0 for false. These operators
are

< Less than


> Greater than
<= Less than or equal to
>= Greater than or equal to
== Equal to
!= Not equal to

Numbers of different type (integer, floating point etc.) are converted to a common type
before the comparison is made. Otherwise, objects of different type are considered to
be unequal. Here are a few examples:

>>> a = 2 # Integer
>>> b = 1.99 # Floating point
>>> c = ’2’ # String
>>> print a > b
1
>>> print a == c
0
>>> print (a > b) and (a != c)
1
>>> print (a > b) or (a == b)
1
9 1.2 Core Python

Conditionals
The if construct

if condition:
block

executes a block of statements (which must be indented) if the condition returns true.
If the condition returns false, the block skipped. The if conditional can be followed
by any number of elif (short for “else if”) constructs

elif condition:
block

which work in the same manner. The else clause

else:
block

can be used to define the block of statements which are to be executed if none of
the if-elif clauses are true. The function sign of a below illustrates the use of the
conditionals.

def sign_ of_ a(a):


if a < 0.0:
sign = ’negative’
elif a > 0.0:
sign = ’positive’
else:
sign = ’zero’
return sign

a = 1.5
print ’a is ’ + sign_ of_ a(a)

Running the program results in the output

a is positive
10 Introduction to Python

Loops
The while construct

while condition:
block

executes a block of (indented) statements if the condition is true. After execution of


the block, the condition is evaluated again. If it is still true, the block is executed again.
This process is continued until the condition becomes false. The else clause

else:
block

can be used to define the block of statements which are to be executed if condition is
false. Here is an example that creates the list [1, 1/2, 1/3, . . .]:

nMax = 5
n = 1
a = [] # Create empty list
while n < nMax:
a.append(1.0/n) # Append element to list
n = n + 1
print a

The output of the program is

[1.0, 0.5, 0.33333333333333331, 0.25]

We met the for statement before in Art. 1.1. This statement requires a target and
a sequence (usually a list) over which the target loops. The form of the construct is

for target in sequence:


block

You may add an else clause which is executed after the for loop has finished. The
previous program could be written with the for construct as
11 1.2 Core Python

nMax = 5
a = []
for n in range(1,nMax):
a.append(1.0/n)
print a

Here n is the target and the list [1,2, ...,nMax-1], created by calling the range
function, is the sequence.
Any loop can be terminated by the break statement. If there is an else cause
associated with the loop, it is not executed. The following program, which searches
for a name in a list, illustrates the use of break and else in conjunction with a for
loop:

list = [’Jack’, ’Jill’, ’Tim’, ’Dave’]


name = eval(raw_ input(’Type a name: ’)) # Python input prompt
for i in range(len(list)):
if list[i] == name:
print name,’is number’,i + 1,’on the list’
break
else:
print name,’is not on the list’

Here are the results of two searches:

Type a name: ’Tim’


Tim is number 3 on the list

Type a name: ’June’


June is not on the list

Type Conversion
If an arithmetic operation involves numbers of mixed types, the numbers are au-
tomatically converted to a common type before the operation is carried out. Type
conversions can also achieved by the following functions:
12 Introduction to Python

int(a) Converts a to integer


long(a) Converts a to long integer
float(a) Converts a to floating point
complex(a) Converts to complex a + 0 j
complex(a,b) Converts to complex a + bj

The above functions also work for converting strings to numbers as long as the
literal in the string represents a valid number. Conversion from float to an integer is
carried out by truncation, not by rounding off. Here are a few examples:

>>> a = 5
>>> b = -3.6
>>> d = ’4.0’
>>> print a + b
1.4
>>> print int(b)
-3
>>> print complex(a,b)
(5-3.6j)
>>> print float(d)
4.0
>>> print int(d) # This fails: d is not Int type
Traceback (most recent call last):
File ’’<pyshell#7>’’, line 1, in ?
print int(d)
ValueError: invalid literal for int(): 4.0

Mathematical Functions
Core Python supports only a few mathematical functions. They are:

abs(a) Absolute value of a


max(sequence) Largest element of sequence
min(sequence) Smallest element of sequence
round(a,n) Round a to n decimal places

 −1 if a < b
cmp(a,b) Returns 0 if a = b

1 if a > b
13 1.2 Core Python

The majority of mathematical functions are available in the math module.

Reading Input
The intrinsic function for accepting user input is

raw input(prompt )

It displays the prompt and then reads a line of input which is converted to a string. To
convert the string into a numerical value use the function

eval(string )

The following program illustrates the use of these functions:

a = raw_ input(’Input a: ’)
print a, type(a) # Print a and its type
b = eval(a)
print b,type(b) # Print b and its type

The function type(a) returns the type of the object a; it is a very useful tool in
debugging. The program was run twice with the following results:

Input a: 10.0
10.0 <type ’str’>
10.0 <type ’float’>

Input a: 11**2
11**2 <type ’str’>
121 <type ’int’>

A convenient way to input a number and assign it to the variable a is

a = eval(raw input(prompt))
14 Introduction to Python

Printing Output
Output can be displayed with the print statement:

print object1, object2, ...

which converts object1, object2 etc. to strings and prints them on the same line, sep-
arated by spaces. The newline character ’\n’ can be uses to force a new line. For
example,

>>> a = 1234.56789
>>> b = [2, 4, 6, 8]
>>> print a,b
1234.56789 [2, 4, 6, 8]
>>> print ’a =’,a, ’\nb =’,b
a = 1234.56789
b = [2, 4, 6, 8]

The modulo operator (%) can be used to format a tuple. The form of the conversion
statement is

’%format1 %format2 · · · ’ % tuple

where format1, format2 · · · are the format specifications for each object in the tuple.
Typically used format specifications are

wd Integer
w.df Floating point notation
w.de Exponential notation

where w is the width of the field and d is the number of digits after the decimal
point. The output is right-justified in the specified field and padded with blank spaces
(there are provisions for changing the justification and padding). Here are a couple of
examples:

>>> a = 1234.56789
>>> n = 9876
>>> print ’%7.2f’ % a
1234.57
>>> print ’n = %6d’ % n # Pad with 2 spaces
n = 9876
15 1.3 Functions and Modules

>>> print ’n = %06d’ %n # Pad with 2 zeroes


n = 009876
>>> print ’%12.4e %6d’ % (a,n)
1.2346e+003 9876

Error Control
When an error occurs during execution of a program an exception is raised and the
program stops. Exceptions can be caught with try and except statements:

try:
do something
except error :
do something else

where error is the name of a built-in Python exception. If the exception error is not
raised, the try block is executed; otherwise the execution passes to the except block.
All exceptions can be caught by omitting error from the except statement.
Here is a statement that raises the exception ZeroDivisionError:

>>> c = 12.0/0.0
Traceback (most recent call last):
File ’’<pyshell#0>’’, line 1, in ?
c = 12.0/0.0
ZeroDivisionError: float division

This error can be caught by

try:
c = 12.0/0.0
except ZeroDivisionError:
print ’Division by zero’

1.3 Functions and Modules


Functions
The structure of a Python function is

def func name(param1, param2,. . .):


statements
return return values
16 Introduction to Python

where param1, param2,. . . are the parameters. A parameter can be any Python ob-
ject, including a function. Parameters may be given default values, in which case the
parameter in the function call is optional. If the return statement or return values
are omitted, the function returns the null object.
The following example computes the first two derivatives of arctan(x) by finite
differences:

from math import arctan


def finite_ diff(f,x,h=0.0001): # h has a default value
df =(f(x+h) - f(x-h))/(2.0*h)
ddf =(f(x+h) - 2.0*f(x) + f(x-h))/h**2
return df,ddf
x = 0.5
df,ddf = finite_ diff(arctan,x) # Uses default value of h
print ’First derivative =’,df
print ’Second derivative =’,ddf

Note that arctan is passed to finite diff as a parameter. The output from the
program is

First derivative = 0.799999999573


Second derivative = -0.639999991892

If a mutable object, such as a list, is passed to a function where it is modified, the


changes will also appear in the calling program. Here is an example:

def squares(a):
for i in range(len(a)):
a[i] = a[i]**2

a = [1, 2, 3, 4]
squares(a)
print a

The output is

[1, 4, 9, 16]
17 1.4 Mathematics Modules

Modules
It is sound practice to store useful functions in modules. A module is simply a file
where the functions reside; the name of the module is the name of the file. A module
can be loaded into a program by the statement

from module name import *

Python comes with a large number of modules containing functions and methods
for various tasks. Two of the modules are described briefly in the next section. Addi-
tional modules, including graphics packages, are available for downloading on the
Web.

1.4 Mathematics Modules


math Module
Most mathematical functions are not built into core Python, but are available by
loading the math module. There are three ways of accessing the functions in a module.
The statement

from math import *

loads all the function definitions in the math module into the current function or
module. The use of this method is discouraged because it is not only wasteful, but can
also lead to conflicts with definitions loaded from other modules.
You can load selected definitions by

from math import func1, func2,. . .

as illustrated below.

>>> from math import log,sin


>>> print log(sin(0.5))
-0.735166686385
18 Introduction to Python

The third method, which is used by the majority of programmers, is to make the
module available by

import math

The functions in the module can then be accessed by using the module name as a
prefix:

>>> import math


>>> print math.log(math.sin(0.5))
-0.735166686385

The contents of a module can be printed by calling dir(module). Here is how to


obtain a list of the functions in the math module:

>>> import math


>>> dir(math)
[’_ _ doc_ _ ’, ’_ _ name_ _ ’, ’acos’, ’asin’, ’atan’,
’atan2’, ’ceil’, ’cos’, ’cosh’, ’e’, ’exp’, ’fabs’,
’floor’, ’fmod’, ’frexp’, ’hypot’, ’ldexp’, ’log’,
’log10’, ’modf’, ’pi’, ’pow’, ’sin’, ’sinh’, ’sqrt’,
’tan’, ’tanh’]

Most of these functions are familiar to programmers. Note that the module in-
cludes two constants: π and e.

cmath Module
The cmath module provides many of the functions found in the math module, but
these accept complex numbers. The functions in the module are:

[’_ _ doc_ _ ’, ’_ _ name_ _ ’, ’acos’, ’acosh’, ’asin’, ’asinh’,


’atan’, ’atanh’, ’cos’, ’cosh’, ’e’, ’exp’, ’log’,
’log10’, ’pi’, ’sin’, ’sinh’, ’sqrt’, ’tan’, ’tanh’]

Here are examples of complex arithmetic:

>>> from cmath import sin


>>> x = 3.0 -4.5j
>>> y = 1.2 + 0.8j
>>> z = 0.8
19 1.5 numarray Module

>>> print x/y


(-2.56205313375e-016-3.75j)
>>> print sin(x)
(6.35239299817+44.5526433649j)
>>> print sin(z)
(0.7173560909+0j)

1.5 numarray Module


General Information
The numarray module2 is not a part of the standard Python release. As pointed out
before, it must be obtained separately and installed (the installation is very easy). The
module introduces array objects which are similar to lists, but can be manipulated by
numerous functions contained in the module. The size of the array is immutable and
no empty elements are allowed.
The complete set of functions in numarray is too long to be printed in its entirety.
The list below is limited to the most commonly used functions.

[’Complex’, ’Complex32’, ’Complex64’, ’Float’,


’Float32’, ’Float64’, ’abs’, ’arccos’,
’arccosh’, ’arcsin’, ’arcsinh’, ’arctan’,
’arctan2’, ’arctanh’, ’argmax’, ’argmin’,
’cos’, ’cosh’, ’diagonal’, ’dot’, ’e’, ’exp’,
’floor’, ’identity’, ’innerproduct’, ’log’,
’log10’, ’matrixmultiply’, ’maximum’, ’minimum’,
’numarray’, ’ones’, ’pi’, ’product’ ’sin’, ’sinh’,
’size’, ’sqrt’, ’sum’, ’tan’, ’tanh’, ’trace’,
’transpose’, ’zeros’]

Creating an Array
Arrays can be created in several ways. One of them is to use the array function to
turn a list into an array:

array(list ,type = type specification)

2 Numarray is based on an older Python array module called Numeric. Their interfaces and capa-
bilities are very similar and they are largely compatible. Although Numeric is still available, it is no
longer supported.
20 Introduction to Python

Here are two examples of creating a 2 × 2 array with floating-point elements:

>>> from numarray import array,Float


>>> a = array([[2.0, -1.0],[-1.0, 3.0]])
>>> print a
[[ 2. -1.]
[-1. 3.]]
>>> b = array([[2, -1],[-1, 3]],type = Float)
>>> print b
[[ 2. -1.]
[-1. 3.]]

Other available functions are

zeros((dim1,dim2),type = type specification)

which creates a dim1 × dim2 array and fills it with zeroes, and

ones((dim1,dim2),type = type specification)

which fills the array with ones. The default type in both cases is Int.
Finally, there is the function

arange(from,to,increment )

which works just like the range function, but returns an array rather than a list. Here
are examples of creating arrays:

>>> from numarray import arange,zeros,ones,Float


>>> a = arange(2,10,2)
>>> print a
[2 4 6 8]
>>> b = arange(2.0,10.0,2.0)
>>> print b
[ 2. 4. 6. 8.]
>>> z = zeros((4))
>>> print z
[0 0 0 0]
21 1.5 numarray Module

>>> y = ones((3,3),type= Float)


>>> print y
[[ 1. 1. 1.]
[ 1. 1. 1.]
[ 1. 1. 1.]]

Accessing and Changing Array Elements


If a is a rank-2 array, then a[i, j] accesses the element in row i and column j, whereas
a[i] refers to row i. The elements of an array can be changed by assignment as shown
below.

>>> from numarray import *


>>> a = zeros((3,3),type=Float)
>>> a[0] = [2.0, 3.1, 1.8] # Change a row
>>> a[1,1] = 5.2 # Change an element
>>> a[2,0:2] = [8.0, -3.3] # Change part of a row
>>> print a
[[ 2. 3.1 1.8]
[ 0. 5.2 0. ]
[ 8. -3.3 0. ]]

Operations on Arrays
Arithmetic operators work differently on arrays than they do on tuples and lists—the
operation is broadcast to all the elements of the array; that is, the operation is applied
to each element in the array. Here are examples:

>>> from numarray import array


>>> a = array([0.0, 4.0, 9.0, 16.0])
>>> print a/16.0
[ 0. 0.25 0.5625 1. ]
>>> print a - 4.0
[ -4. 0. 5. 12.]

The mathematical functions available in numarray are also broadcast, as illus-


trated below

>>> from numarray import array,sqrt,sin


>>> a = array([1.0, 4.0, 9.0, 16.0])
22 Introduction to Python

>>> print sqrt(a)


[ 1. 2. 3. 4.]
>>> print sin(a)
[ 0.84147098 -0.7568025 0.41211849 -0.28790332]

Functions imported from the math module will work on the individual elements,
of course, but not on the array itself. Here is an example:

>>> from numarray import array


>>> from math import sqrt
>>> a = array([1.0, 4.0, 9.0, 16.0])
>>> print sqrt(a[1])
2.0
>>> print sqrt(a)
Traceback (most recent call last):

..
.

TypeError: Only rank-0 arrays can be cast to floats.

Array Functions
There are numerous array functions in numarray that perform matrix operations and
other useful tasks. Here are a few examples:

>>> from numarray import *


>>> a = array([[ 4.0, -2.0, 1.0], \
[-2.0, 4.0, -2.0], \
[ 1.0, -2.0, 3.0]])
>>> b = array([1.0, 4.0, 2.0])
>>> print dot(b,b) # Dot product
21.0
>>> print matrixmultiply(a,b) # Matrix multiplication
[ -2. 10. -1.]
>>> print diagonal(a) # Principal diagonal
[ 4. 4. 3.]
>>> print diagonal(a,1) # First subdiagonal
[-2. -2.]
>>> print trace(a) # Sum of diagonal elements
11.0
23 1.6 Scoping of Variables

>>> print argmax(b) # Index of largest element


1
>>> print identity(3) # Identity matrix
[[1 0 0]
[0 1 0]
[0 0 1]]

Copying Arrays
We explained before that if a is a mutable object, such as a list, the assignment state-
ment b = a does not result in a new object b, but simply creates a new reference to
a, called a deep copy. This also applies to arrays. To make an independent copy of an
array a, use the copy method in the numarray module:

b = a.copy()

1.6 Scoping of Variables

Namespace is a dictionary that contains the names of the variables and their values.
The namespaces are automatically created and updated as a program runs. There are
three levels of namespaces in Python:
r Local namespace, which is created when a function is called. It contains the
variables passed to the function as arguments and the variables created within
the function. The namespace is deleted when the function terminates. If a variable
is created inside a function, its scope is the function’s local namespace. It is not
visible outside the function.
r A global namespace is created when a module is loaded. Each module has its own
namespace. Variables assigned in a global namespace are visible to any function
within the module.
r Built-in namespace is created when the interpreter starts. It contains the functions
that come with the Python interpreter. These functions can be accessed by any
program unit.
When a name is encountered during execution of a function, the interpreter
tries to resolve it by searching the following in the order shown: (1) local namespace,
(2) global namespace, and (3) built-in namespace. If the name cannot be resolved,
Python raises a NameError exception.
Since the variables residing in a global namespace are visible to functions within
the module, it is not necessary to pass them to the functions as arguments (although
is good programming practice to do so), as the following program illustrates.
24 Introduction to Python

def divide():
c = a/b
print ’a/b =’,c

a = 100.0
b = 5.0
divide()
>>>
a/b = 20.0

Note that the variable c is created inside the function divide and is thus not
accessible to statements outside the function. Hence an attempt to move the print
statement out of the function fails:

def divide():
c = a/b

a = 100.0
b = 5.0
divide()
print ’a/b =’,c

>>>
Traceback (most recent call last):
File ’’C:\Python22\scope.py’’, line 8, in ?
print c
NameError: name ’c’ is not defined

1.7 Writing and Running Programs

When the Python editor Idle is opened, the user is faced with the prompt >>>, in-
dicating that the editor is in interactive mode. Any statement typed into the edi-
tor is immediately processed upon pressing the enter key. The interactive mode is a
good way to learn the language by experimentation and to try out new programming
ideas.
Opening a new window places Idle in the batch mode, which allows typing and
saving of programs. One can also use a text editor to enter program lines, but Idle has
Python-specific features, such as color coding of keywords and automatic indentation,
that make work easier. Before a program can be run, it must be saved as a Python file
with the .py extension, e.g., myprog.py. The program can then be executed by typing
25 1.7 Writing and Running Programs

python myprog.py; in Windows, double-clicking on the program icon will also work.
But beware: the program window closes immediately after execution, before you get
a chance to read the output. To prevent this from happening, conclude the program
with the line

raw input(’press return’)

Double-clicking the program icon also works in Unix and Linux if the first line
of the program specifies the path to the Python interpreter (or a shell script that
provides a link to Python). The path name must be preceded by the symbols #!. On my
computer the path is /usr/bin/python, so that all my programs start with the line

#!/usr/bin/python

On multiuser systems the path is usually /usr/local/bin/python.


When a module is loaded into a program for the first time with the import state-
ment, it is compiled into bytecode and written in a file with the extension .pyc. The
next time the program is run, the interpreter loads the bytecode rather than the origi-
nal Python file. If in the meantime changes have been made to the module, the module
is automatically recompiled. A program can also be run from Idle using edit/run script
menu, but automatic recompilation of modules will not take place, unless the existing
bytecode file is deleted and the program window is closed and reopened.
Python’s error messages can sometimes be confusing, as seen in the following
example:

from numarray import array


a = array([1.0, 2.0, 3.0]
print a
raw_ input(’press return’)

The output is

File ’’C:\Python22\test_ module.py’’, line 3


print a
ˆ
SyntaxError: invalid syntax

What could possibly be wrong with the line print a? The answer is nothing. The
problem is actually in the preceding line, where the closing parenthesis is missing,
26 Introduction to Python

making the statement incomplete. Consequently, the interpreter views the third line
as continuation of the second line, so that it tries to interpret the statement
a = array([1.0, 2.0, 3.0]print a

The lesson is this: when faced with a SyntaxError, look at the line preceding the
alleged offender. It can save a lot of frustration.
It is a good idea to document your modules by adding a docstring the beginning of
each module. The docstring, which is enclosed in triple quotes, should explain what
the module does. Here is an example that documents the module error (we use this
module in several of our programs):

## module error
’’’ err(string).
Prints ’string’ and terminates program.
’’’
import sys
def err(string):
print string
raw_ input(’Press return to exit’)
sys.exit()

The docstring of a module can be printed with the statement

print module name. doc

For example, the docstring of error is displayed by

>>> import error


>>> print error._ _ doc_ _
err(string).
Prints ’string’ and terminates program.
Another Random Document on
Scribd Without Any Related Topics
If opium be infused in successive portions of cold water, the water
dissolves all its poisonous principles, and also a peculiar acid
possessing characteristic chemical properties. These principles are
separated by means of the alkalis, the alkaline carbonates, or the
alkaline earths. The most important of them are morphia, the chief
alkaloid of opium,—narcotine, a feeble poison, not an alkaloid,—a
peculiar acid, termed meconic acid,—and a resinoid substance.
Other crystalline principles also exist in opium, though apparently in
too small proportion either to affect its action or to be available in
medico-legal analysis as the means of detecting the drug. These are
codeïa, meconine, narceïne, paramorphia, and porphyroxine.
Of the various principles now indicated it is necessary to notice
here only morphia, narcotine, codeïa, porphyroxine and meconic
acid. They require mention either as being active poisons, or because
a knowledge of their leading characters may be useful in conducting
a medico-legal analysis in a case of poisoning with opium.
Meconic acid, as procured by evaporation, is usually in little scales
of a pale brown or yellowish tint, being rendered so by adhering resin
or extractive matter; but when nearly colourless, it forms long,
extremely delicate tabular crystals, which in mass have a fine silky
appearance like spermaceti. 1. When heated in a tube, it is partly
decomposed, and partly sublimed; and the sublimate condenses in
filamentous, radiated crystals. 2. When dissolved even in a very large
quantity of water, the solution acquires an intense cherry-red colour
with the perchloride of iron. The sublimed crystals have the same
property. Only one other acid is so affected, namely, the sulpho-
cyanic, a very rare substance. It has been repeatedly stated,[1678] that
the redness produced by meconic acid may be distinguished by the
effect of an alkali, which is said to bleach the colour produced by
sulpho-cyanic acid, but to deepen the cherry-red tint occasioned by
the meconic. This is not correct; an alkali added to the red solution of
meconate of iron precipitates oxide of iron and renders the liquid
colourless. The best distinction yet proposed is the following which
has been suggested by Dr. Percy. Acidulate the red fluid with
sulphuric acid, drop in a bit of pure zinc, and suspend at the mouth
of the tube a bit of paper moistened with solution of acetate of lead:
If the redness be caused by sulpho-cyanic acid, hydrosulphuric acid
gas is evolved, and blackens the paper; but no such effect ensues, it
the redness be owing to meconic acid.[1679]—According to Dr. Pereira,
solutions of the acetates, an infusion of white mustard, decoctions of
Iceland moss, and of the Gigantina helminthocorton, besides other
more rare substances, are reddened, like solution of meconic acid, by
the salts of peroxide of iron.[1680] 3. The solution of meconic acid
gives a pale-green precipitate with the sulphate of copper, and, if the
precipitate is not too abundant, it is dissolved by boiling, but
reappears on cooling.
Of the Tests for Morphia and its Salts.—Morphia, when pure, is in
small, beautiful, white crystals. Various forms have been ascribed to
it; but in the numerous crystallizations I have made, it has always
assumed when pure the form of a slightly flattened hexangular
prism. It has a bitter taste, but no smell.
A gentle heat melts it, and if the fluid mass is then allowed to cool,
a crystalline radiated substance is formed. A stronger heat reddens
and then chars the fused mass, white fumes of a peculiar odour are
disengaged, and at last the mass kindles and burns brightly.—
Morphia is very little soluble in water. It is more soluble, yet still
sparingly so, in ether. But its proper solvents are alcohol, or the
diluted acids, mineral as well as vegetable. All its solutions are
intensely bitter, and that in alcohol has an alkaline reaction.—From
its solutions in the acids crystallizable salts may be procured; and
morphia may be separated by the superior affinity of any of the
inorganic alkalis; but it is easily redissolved by an excess of potash.—
Morphia when treated with nitric acid is dissolved with
effervescence, and becomes instantly orange-red, which, if too much
acid be used, changes quickly to yellow. The coloration of morphia by
nitric acid is a characteristic property; which, however, it possesses
in common with some other alkaloids, such as brucia, and also
strychnia when not quite pure. The change of colour is said by some
chemists to depend on adhering resinoid matter, and not to be
possessed by perfectly pure morphia; but this is a mistake. It is
probable that some other vegetable substances besides the three
alkaloids, morphia, brucia, and strychnia, may be turned orange-red
by nitric acid. Dr. Pereira says that oil of pimento undergoes the
same change.[1681]—When suspended in water, in the form of fine
powder and then treated with a drop or two of perchloride of iron
containing little or no free hydrochloric acid, it is dissolved and
forms a deep blue solution, the tint of which is more purely blue, the
stronger the solution, and the purer the morphia. This is a property
even more characteristic than the former, since no such effect is
produced on any other known alkaloid. Like the effect of nitric acid,
it is said not to be essential to morphia, but to depend on adhering
resinoid matter; yet the blue colour is always strongly produced with
powdered morphia of snowy-whiteness.—Another property by which
morphia maybe also distinguished is the decomposition of iodic acid.
A solution of iodic acid is turned brown either by morphia or its salts,
owing to the formation of iodine; and the test is so delicate that it
affects a solution containing a 7000th of morphia.[1682] So many other
substances, however, possess the property of disengaging iodine
from iodic acid, that little importance can be attached to this
criterion.
Acetate of Morphia is in some countries the common medicinal
form for administering morphia; but it has been almost entirely
superseded in this city by the hydrochlorate, since Dr. W. Gregory
pointed out a cheap mode of procuring that salt in a state of purity.
[1683]
The acetate is in confused crystals, often of a brownish colour
from impurities. The stronger acids disengage acetic acid. The alkalis
throw down morphia from its solution in water. Nitric acid and
perchloride of iron act on it as on morphia itself.
Hydrochlorate of Morphia.—The muriate or hydrochlorate must
be carefully attended to by the medical jurist, because it is
extensively used in medical practice instead of opium. As now
prepared, it is snowy-white and apparently pulverulent, but is in
reality a congeries of filiform crystals. It decrepitates slightly when
heated, then melts, and at the same time chars, exhaling a strong
odour somewhat like that of truffles. Nitric acid and perchloride of
iron act on it as on morphia. Boiling water dissolves fully its own
weight, and very easily three-fourths of its weight of hydrochlorate of
morphia; and on cooling down to 60° F. it retains seven parts per
cent., and deposits the rest in tufts of beautiful filiform crystals. The
solution commonly employed in medicine contains one per cent. of
the salt. Nitric acid turns the solution yellow, acting distinctly
enough when the water contains a hundredth, and perceptibly when
it contains only a two-hundredth of its weight. Perchloride of iron
strikes a deep blue with a solution containing a hundredth of its
weight, very distinctly when the proportion is a two-hundredth, and
even perceptibly when it is only a five-hundredth. A solution much
more diluted than even the last has a strong bitter taste. When
moderately concentrated, morphia is precipitated from it by the
alkalis.
Of the preceding properties of morphia and its salts, those which
constitute the most characteristic tests are the effects of perchloride
of iron and of nitric acid on all of them, the effect of heat on morphia,
and the effect of an alkali on its solutions in acids.
Of the Tests for Narcotine.—Narcotine is rather distinguished by
negative than by positive chemical properties. When pure, it is in
transparent colourless pearly crystals, which, as formed from
alcohol, may be either very flat, oblique, six-sided prisms, or oblong
four-sided tables obliquely bevelled on their sides. But when
crystallized from sulphuric ether the crystals are prisms with a
rhombic base. They fuse with heat, and concrete on cooling into a
resinous-like mass. They are soluble in ether, and fixed oil, less so in
alcohol, insoluble in water or the alkalis, very soluble in the diluted
acids, but without effecting neutralization; and if perfectly pure, they
do not undergo the changes produced on morphia by perchloride of
iron or nitric acid. Few specimens of narcotic, however, are so pure
as not to render nitric acid yellow. Care must be taken not to
confound narcotine with morphia. When crystallized together from
alcohol and not quite pure, narcotine forms tufts of pearly thin
tabular crystals, while morphia is in short, thick, sparkling prisms.
Of Codeïa.—This substance is, like morphia, an alkaloid, capable of
combining with acids. It differs from morphia and narcotine in being
moderately soluble in water; and from this solution it may be
crystallized in large crystals affecting the octaedral form. It is
unnecessary to detail its chemical properties.
Of the Tests for Porphyroxine.—This principle is a neutral
crystalline body, insoluble in water, soluble in alcohol and ether, and
also soluble in weak acids, which part with it unchanged on the
addition of an alkali. When heated with hydrochloric acid, a fine
purple or rose-red solution is produced; whence its name. It is
supposed that this property may be of use in medico-legal
researches; and the following mode of developing it has been
proposed by Dr. Merck, its discoverer.[1684] Decompose the suspected
fluid with caustic potash; agitate the mixture with sulphuric ether;
dip a bit of white filtering paper repeatedly in the etherial solution,
drying it after each immersion; then wet the paper with hydrochloric
acid, and expose it to the vapour of boiling water; upon which the
paper will become more or less acid.

Of the Process for detecting Opium in mixed fluids and solids.

Having stated these particulars of the chemical history of opium


and its chief component ingredients, I shall now describe what has
appeared to me the most delicate and satisfactory method of
detecting it in a mixed state.
1. If there be any solid matter, it is to be cut into small fragments,
water is to be added if necessary, then a little acetic acid sufficient to
render the mixture acidulous, and when the whole mass has been
well stirred, and has stood a few minutes, it is to be filtered, and
evaporated at a temperature somewhat below ebullition to the
consistence of a moderately thick syrup. To this extract strong
alcohol is to be gradually added, care being taken to break down any
coagulum which may be formed: and after ebullition and cooling, the
alcoholic solution is to be filtered. The solution must then be
evaporated to the consistence of a thin syrup, and the residue
dissolved in distilled water and filtered anew.
2. Add now the solution of acetate of lead as long as it causes
precipitation, filter and wash. The filtered fluid contains acetate of
morphia, and the precipitate on the filter contains meconic acid
united with the oxide of lead.
3. The fluid part is to be treated with hydrosulphuric acid gas, to
throw down any lead which may remain in solution. It is then to be
filtered while cold, and evaporated sufficiently in a vapour-bath. The
solution in this state will sometimes be sufficiently pure for the
application of the tests for morphia; but in most cases it is necessary,
and in all advisable, to purify it still farther. For this purpose the
morphia is to be precipitated with carbonate of soda; and the
precipitate having been collected, washed, and drained on a filter,
the precipitate and portion of the filter to which it adheres are to be
boiled in a little pure alcohol. The alcoholic solution,—filtered, if
necessary,—will give by evaporation a crystalline residue of morphia,
which becomes orange-red with nitric acid, and blue with
perchloride of iron. The latter property I have sometimes been
unable to develope when the former was presented characteristically.
4. It is useful, however, to separate the meconic acid also; because,
as its properties are more delicate, I have repeatedly been able to
detect it satisfactorily, when I did not feel satisfied with the result of
the search for morphia. Dr. Ure made the same remark in his
evidence on the trial of Stewart and his wife. He detected the
meconic acid, but could not separate the morphia. It may be detected
in one of two ways,—by means of hydrosulphuric acid, or by
sulphuric acid.
If the former method be chosen, suspend in a little water the
precipitate caused by the acetate of lead (par. 2); transmit
hydrosulphuric acid gas till the whole precipitate is blackened; filter
immediately without boiling; then boil, and if necessary filter a
second time. A great part of the impurities thrown down by the
acetate of lead will be separated with the sulphuret of lead; and the
meconic acid is dissolved. But it requires in general farther
purification, which is best attained by again throwing it down with
acetate of lead, and repeating the steps of the present paragraph. The
fluid is now to be concentrated by evaporation at a temperature not
exceeding 180° F., and subjected to the tests for meconic acid, more
particularly to the action of perchloride of iron, when the quantity is
small. If there is evidently a considerable quantity of acid, a portion
should be evaporated till it yields crystalline scales; and these are to
be heated in a tube to procure the arborescent crystalline sublimate
formerly described. About a sixth of a grain of meconic acid,
however, is required to try the latter test conveniently.
If the method of separating meconic acid by means of sulphuric
acid be preferred, the precipitate formed by acetate of lead is to be
treated with weak sulphuric acid, which forms insoluble sulphate of
lead, and disengages the meconic acid. The liquid obtained by
filtration is then to be evaporated as above, to obtain crystals, which
are to be examined by the tests for meconic acid. Orfila thinks this
method more delicate than the mode by hydrosulphuric acid gas. I
am inclined from my own experiments to doubt his statement.
5. If there be a sufficiency of the original material, Merck’s process
for detecting porphyroxin may be tried [see p. 534]. But I doubt
whether this process is sufficiently delicate for medico-legal
purposes.
I wish I could add my testimony to the opinion, expressed on a
remarkable occasion by Professor Chaussier, in favour of the delicacy
of the tests for morphia and its compounds, that they might be
detected “jusqu’à une molécule.”[1685] In one sense this statement
may be correct. Morphia, separated from the complex mixture of
principles with which it is combined in opium, may be detected in
extremely small quantities. Accordingly, M. Lassaigne has supplied,
for the discovery of acetate of morphia in mixed fluids, an excellent
process, whence the chief part of the three first paragraphs of the
preceding method for opium are borrowed; and from the facts stated
by him in his paper,[1686] as well as from the experimental testimony
of Professor Orfila,[1687] it appears that Lassaigne’s process will
furnish strong indications, if not absolute proof of the presence of
that salt, in the proportion of two grains to eight ounces of the most
complex mixtures. Hence the search for acetate of morphia in a
suspected case is by no means hopeless. But the detection of acetate
of morphia is an object of small moment, compared with the
detection of morphia in its natural state of combination in opium.
Now my own observations lead me to entertain serious doubts,
whether the best method of operating hitherto known could be
successfully applied to the detection of the equivalent opium in
complex mixtures. By the process I have recommended it is easy to
procure, from an infusion of ten grains of opium in four ounces of
water, satisfactory proof of the presence of morphia by the action of
ammonia, perchloride of iron and nitric acid, and equally distinct
proof of the presence of meconic acid by perchloride of iron, as well
as sulphate of copper. But on proceeding to apply the process to
organic mixtures, I have found that when the soluble part of ten
grains of opium was mixed with four ounces of porter or milk, I
could develope no property of morphia but its bitterness, and no
indication of meconic acid but the action of perchloride of iron. MM.
Larocque and Thibierge, it is right to add, have in similar
circumstances found the process somewhat more delicate.[1688]
It is of great consequence, however, to remark, that in cases of
poisoning with opium, the medical jurist will seldom have the good
fortune to operate even upon so large a proportion of the poison as in
my experiments; because the greater part of it disappears from the
stomach before death. This will not happen always, as may be seen
from various cases mentioned afterwards in the section on the
morbid appearances caused by opium. But, according to my own
observations, the poison will often disappear in a short time, so far as
to render an analysis abortive. Thus in the case of a young woman
who died five hours after taking not less than two ounces of
laudanum, I could apply to the fluid, procured from the contents of
the stomach, by paragraphs 1, 2, and 3 of my process, only the test of
its taste, which had the bitterness of morphia. In the case of another
young woman, whose stomach was emptied by the stomach-pump
four hours after she took two ounces of laudanum, I could obtain
from the evacuated fluid, when properly prepared, only the
indications of the presence of morphia supplied by its bitterness and
the imperfect action of nitric acid,—and the indication of the
presence of meconic acid supplied by the imperfect action of
perchloride of iron. In a third case, where the stomach was evacuated
two hours after seven drachms of laudanum had been swallowed,
even the first portions of fluid withdrawn had not any opiate odour,
and did not yield any indication of the presence even of meconic
acid. Now, on the one hand, the quantity taken in these instances is
rarely exceeded in cases of poisoning with laudanum; and, on the
other hand, the interval during which it remained in the stomach
subject to vital operations is considerably less than the average in
medico-legal, and above all in fatal cases. It may be laid down,
therefore, as a general rule, that in poisoning with opium the medical
jurist, by the best methods of analysis yet known, will often fail in
procuring satisfactory evidence, and sometimes fail to obtain any
evidence at all, of the existence of the poison in the contents of the
stomach. In a case published by Dr. Bright from the experience of
Mr. Walne of London, it is stated that the matter removed from the
stomach only half an hour after an ounce and a half of laudanum had
been taken, while the stomach was empty, did not smell of opium.
[1689]
This case is quoted to put the reader on his guard. But at the
same time it does appear extremely improbable that the whole
opium had disappeared from the stomach in so short a time, and
much more likely that it might have been found by analysis in the
matter first withdrawn.
I have taken some pains to establish the proposition laid down
above, because in a matter of such importance it is always essential,
that the medical inspector know the real extent of his resources; and
it has appeared to me that, greatly as the hand of the chemist has
been strengthened by late discoveries in vegetable analysis, his
power has been overrated both by his scientific brethren, and by the
medical profession generally. I am happy to find, since the first
publication of these remarks, that they coincide with the experience
and opinion of so eminent an authority as Professor Buchner; who
has observed that a chemical analysis must often fail to detect opium
where there could be no doubt of its having been administered in
large quantity.[1690]
It is of moment to add, that in two of the instances mentioned
above the odour of laudanum was perceived in the subject of
analysis,—faintly, however, and only for a few hours after it was
removed from the stomach. Although the peculiar odour of opium is
a delicate criterion of its presence, it does not follow that it should be
preferred to an elaborate chemical analysis. For it is a test of extreme
uncertainty. There is in the contents of the stomach such a
complication of odours, that with a rather delicate sense of smell, I
have sometimes been unable to satisfy myself of the presence of the
opiate odour where others were sure it existed. At the same time the
medical jurist should not neglect it as a subsidiary test. It is always
strongest and most characteristic, first, when the stomach is just
opened, or the contents just withdrawn, and again, when the fluid, in
the course of preparation, as directed in paragraph 1 (p. 535), is just
reaching the point of ebullition. The latter odour is somewhat
different from the former, yet quite peculiar, and such as every
chemist must have remarked on boiling an infusion of opium. It is
further to be observed, that although the odour of opium is a very
delicate test of its presence even in complex organic mixtures,
chemical analysis may be successful, where this character fails. Dr.
Morehead of the Bombay service, in applying my process to the fluid
withdrawn by the stomach-pump, detected morphia both by nitric
acid and perchloride of iron, although he could not detect any odour
of opium in the fluid.[1691]
So much for the delicacy of the process. As to its precision,—from
what I have myself witnessed, as well as from the experience of Dr.
Ure, it will often happen in actual practice, that the only indication of
opium to be procured by the process consists in the deep red colour
struck by perchloride of iron with the meconic acid. Now, will this
alone constitute sufficient proof of the presence of opium? On the
whole, I am inclined to reply in the affirmative. Sulpho-cyanic acid, it
is true, has the same effect, and this acid has been proved by
Professors Gmelin and Tiedemann to exist in the human saliva,[1692]
—a fact which was called in question by Dr. Ure in his evidence on
the trial of the Stuarts, but which at the time I had verified, and
which Dr. Ure has since been compelled by experiments of his own to
admit.[1693] But it must be very seldom possible to procure a distinct
blood-red coloration from the saliva, after it has been mixed with the
complex contents of the stomach, and subjected to the process of
analysis detailed above;[1694] and the check proposed by Dr. Percy (p.
532) will distinguish it.
Section II.—Of the Action of Opium, and the Symptoms it
excites in Man.

The symptoms and mode of action of opium have been long made
the subject of dispute, both among physicians and toxicologists; and
in some particulars our knowledge is still vague and insufficient.
Under the head of general poisoning, some experiments were
related, from which it might be inferred that opium has the power of
stupefying or suspending the irritability of the parts to which it is
immediately applied. The most unequivocal of these facts, which
occurred to Dr. Wilson Philip, was instant paralysis of the intestines
of a dog, when an infusion of opium was applied to their mucous
coat;[1695] another hardly less decisive was palsy of the hind-legs of a
frog, observed by Dr. Monro Secundus, when opium was injected
between the skin and the muscles;[1696] and a third, which has been
remarked by several experimentalists, is immediate cessation of the
contractions of the frog’s heart when opium is applied to its inner
surface.[1697]
The poison has also powerful constitutional or remote effects,
which are chiefly produced on the brain. Much discussion has arisen
on the question, whether these constitutional effects are owing to the
conveyance of the local torpor along the nerves to the brain, or to the
poison being absorbed, and so acting on the brain through the blood.
The question is not yet settled. It appears pretty certain, however,
that the poison cannot act constitutionally without entering the
blood-vessels; although it is not so clear, that after it has entered
them, it acts by being carried with the blood to the brain. The newest
doctrine supposes that it enters the blood-vessels, and produces on
their inner coat an impression which is conveyed along the nerves.
According to the experiments of Professor Orfila, it is more
energetic when applied to the surface of a wound than when
introduced into the stomach, and most energetic of all when injected
into a vein.[1698] The inference generally drawn from these and other
analogous experiments[1699] is, that the blood transmits the poison in
substance to the brain. They certainly, however, do not prove more
than that the poison must enter the blood before it acts.
The old doctrine, that the blood-vessels have no concern with its
action, and that it acts only by conveyance along the nerves of a
peculiar local torpor arising from its direct application to their
sentient extremities, has been long abandoned by most physiologists
as untenable. But some have adopted a late modification of this
doctrine, by supposing that opium may act both by being carried
with the blood to the brain, and by the transmission of local torpor
along the nerves. They believe, in fact, that opium possesses a double
mode of action,—through sympathy as well as through absorption. It
would be fruitless to inquire into the grounds that exist for adopting
or rejecting this doctrine, because sufficient facts are still wanting to
decide the controversy. So far as they go, however, they appear
adverse to the supposition of a conveyance of impressions along the
nerves, without the previous entrance of the poison within the blood-
vessels. The difficulties, in the way of the theory of the sympathetic
action of opium, would be removed by the doctrine of Messrs.
Morgan and Addison. According to their views, the experiments,
which appear at first sight to prove that this substance operates by
being carried with the blood to the part on which it acts, are easily
explained by considering that the opium makes a peculiar
impression on the inside of the vessels, which impression
subsequently passes along the nerves to the brain.[1700] But, as stated
in the introductory chapter on the physiology of poisoning, this
theory requires support.
The effects of opium, through whatever channel it may produce
them, are exerted chiefly on the brain and nervous system. This
appears from the experiments of a crowd of physiologists, as well as
from the symptoms observed a thousand times in man. In animals
the symptoms are different from those remarked in man. Some
experimentalists have indeed witnessed in the higher orders of
animals, as in the human subject, pure lethargy and coma. But the
latest researches, among the rest those of M. Orfila, show that much
more generally it causes in animals hurried pulse, giddiness, palsy of
the hind-legs, convulsions of various degrees of intensity, from
simple tremors to violent tetanus, and a peculiar slumber, in the
midst of which a slight excitement rouses the animal and renews the
convulsions. These symptoms are produced in whatever way the
poison enters the body, whether by the stomach, or by a wound, or
by direct injection into a vein, or by the rectum. In man, convulsions
are sometimes excited; but much more commonly simple sopor and
coma.
According to the inquiries of M. Charret, which were extended to
every class of the lower animals, opium produces three leading
effects. It acts on the brain, causing congestion, and consequently
sopor; on the general nervous centre as an irritant, exciting
convulsions; and on the muscles as a direct sedative. It is poisonous
to all animals,—man, carnivorous quadrupeds, the rodentia, birds,
reptiles, amphibious animals, fishes, insects, and the mollusca. But
of its three leading effects some are not produced in certain classes
or orders of animals. In the mammalia, with the exception of man,
there is no cerebral congestion induced, and death takes place
amidst convulsions. In birds there is some cerebral congestion
towards the close; but still the two other phenomena are the most
prominent.[1701]
It has been rendered probable, by what is stated above, that opium
enters the blood. The question, therefore, naturally arises, whether
its presence there can be proved by chemical analysis? But
considering the imperfection of the processes for detecting it when
mixed with organic substances, no disappointment ought to be felt if
this proof should fail in regard to so complex a fluid as the blood. The
only person who has represented himself successful in the search is
M. Barruel of Paris. He examined the urine and blood of a man
under the influence of a poisonous dose of laudanum, amounting to
an ounce and a half; and procured indications of morphia in both.
When three ounces of urine were boiled with magnesia, and the
insoluble matter was collected, washed, dried, and boiled, in alcohol,
the residue of the alcoholic solution formed a white stain, which
became deep orange-red on the addition of nitric acid. The blood was
subjected to a more complex operation. One pound and ten ounces of
it were bruised in a mortar, diluted with two pounds of water,
strongly acidulated with sulphuric acid, boiled, filtered, and washed.
The filtered fluid was saturated with chalk, and the excess of
carbonic acid driven off by heat. The fluid was then filtered again,
and after being washed with water, was acted on by diluted acetic
acid. The acetic solution left on evaporation a residue which was
repeatedly acted on by alcohol; and the residue of the alcoholic
solutions was treated with pure alcohol and carbonate of lime. The
new solution when filtered and evaporated left several small white
stains, which became orange-red with nitric acid.[1702] These results
have been since contradicted by M. Dublanc. He in vain sought for
morphia in the blood and urine of people who were taking acetate
medicinally, or of animals that were killed by it.[1703] Barruel’s results
are also at variance with some pointed experiments of M. Lassaigne,
who could not detect any acetate of morphia even in blood drawn
from a dog twelve hours after thirty-six grains were injected into the
crural vein;[1704] nor any in the liver or venous blood of a dog
poisoned with eight ounces of Sydenham’s laudanum.[1705]
In investigating the effects of opium and its principles on man, the
natural order of procedure is to consider in the first place those of
opium itself in its various forms.
The effect of a small dose seems to be generally in the first instance
stimulating: the action of the heart and arteries is increased, and a
slight sense of fulness is caused in the head. This stimulus differs
much in different individuals. In most persons it is quite
insignificant. In its highest degree it is well exemplified by Dr. Leigh
in his Experimental Inquiry, as they occurred to a friend of his who
repeatedly made the experiment. If in the evening when he felt
sleepy, he took thirty drops of laudanum, he was enlivened so that he
could resume his studies; and if, when the usual drowsiness
approached, which it did in two hours, he took a hundred drops
more, he soon became so much exhilarated, that he was compelled to
laugh and sing and dance. The pulse meanwhile was full and strong,
and the temporal arteries throbbed forcibly. In no long time the
customary torpor ensued. The stimulant effect of opium given during
a state of exhaustion is also well illustrated by Dr. Burnes in his
account of Cutch. “On one occasion,” says he, “I had made a very
fatiguing night march with a Cutchee horseman. In the morning,
after having travelled above thirty miles, I was obliged to assent to
his proposal of haulting for a few minutes, which he employed in
sharing a quantity of about two drachms of opium between himself
and his jaded horse. The effect of the dose was soon evident on both,
for the horse finished a journey of forty miles with great apparent
facility, and the rider absolutely became more active and
intelligent.”[1706]
By repeating small doses frequently, the stimulus may be kept up
for a considerable time in some people. In this way are produced the
remarkable effects said to be experienced by opium-eaters in the
east. These effects seem to be in the first instance stimulant, the
imagination being rendered brilliant, the passions exalted, and the
muscular force increased; and this state endures for a considerable
time before the usual stage of collapse supervenes. A very poetical,
but I believe also a faithful, picture of the phenomena now alluded to
is given in the Confessions of an English Opium-eater,—a work well
known to be founded on the personal experience of the writer. It is
singular that our profession should have observed these phenomena
so little, as to be accused by him of having wholly misrepresented the
action of the most common drug in medical practice. In reply to this
charge the physician may simply observe, that he seldom administers
opium in the way practised by the opium-eater; that when given in
the usual therapeutic mode it rarely causes material excitement; that
some professional people prefer giving it in frequent small doses,
with the view of procuring its sedative effect, and undoubtedly do
succeed in attaining their object; that in both of these medicinal ways
of administering it, excitement is occasionally produced to a great
degree and of a disagreeable kind; that the latter phenomena have
been clearly traced to idiosyncrasy; and therefore that the effects on
opium-eaters are probably owing either to the same cause, or to the
modifying power of habit. This much at all events is certain,—that in
persons unaccustomed to opium it seldom produces material
excitement in a single small dose, and does not always cause
continuous excitement when taken after the manner of the opium-
eater. The effect of a full medicinal dose of two or three grains of
solid opium, or forty or sixty grains of the tincture, is to produce in
general a transient excitement and fulness of the pulse, but in a short
time afterwards torpor and sleep, commonly succeeded in six, eight,
or ten hours by headache, nausea, and dry tongue.
The symptoms of poisoning with opium, administered at once in a
dangerous dose, begin with giddiness and stupor, generally without
any previous stimulus. The stupor rapidly increasing, the person
soon becomes motionless and insensible to external impressions; he
breathes slowly; generally lies still, with the eyes shut and the pupils
contracted; and the whole expression of the countenance is that of
deep and perfect repose. As the poisoning advances, the features
become ghastly, the pulse feeble and imperceptible, the muscles
excessively relaxed, and, unless assistance speedily arrive, death
ensues. If recovery take place, the sopor is succeeded by prolonged
sleep, which commonly ends in twenty-four or thirty-six hours, and
is followed by nausea, vomiting, giddiness, and loathing of food.
The period which elapses between the taking of the poison and the
commencement of the symptoms is various. A large quantity, taken
in the form of tincture, on an empty stomach, may begin to act in a
few minutes; but for obvious reasons it is not easy to learn the
precise fact as to this particular. Dr. Meyer, late medical inspector at
Berlin, has related a case of poisoning with six ounces of the saffron
tincture of opium, where the person was found in a hopeless state of
coma in half an hour,[1707] and M. Ollivier has described another
instance of a man who was found completely soporose at the same
distance of time after taking an ounce and a half of laudanum.[1708] In
these cases, the symptoms must have begun in ten or fifteen minutes
at farthest. In a case noticed by M. Desruelles the sopor was fairly
formed in fifteen minutes after two drachms of solid opium were
taken.[1709] For the most part, however, opium, taken in the solid
form, does not begin to act for half an hour or even almost a whole
hour,—that period being required to allow its poisonous principles to
be separated and absorbed by the bibulous vessels. It is singular that
an interval of an hour was remarked in a case where the largest
quantity was taken which has yet been recorded. The patient
swallowed eight ounces of crude opium; but in an hour her physician
found her able to tell connectedly all she had done; and she
recovered.[1710] In some rare cases the sopor is put off for a longer
period: thus, in a case mentioned in Corvisart’s Journal, there seems
to have been no material stupor till considerably more than an hour
after the person took two ounces and a half of the tincture with a
drachm of the extract.[1711]
The result of almost universal observation, however, is, that in
pure poisoning with opium the commencement of the symptoms is
not put off much beyond an hour. Such being the fact, it is extremely
difficult to account for the following extraordinary case, which was
communicated to me by Dr. Heude, of the East India Company’s
service. A man swallowed an ounce and a half of laudanum, and in
an hour half as much more, and then lay down in bed. Some
excitement followed, and also numbness of the arms and legs. But he
continued so sensible and lively seven hours after the first dose was
taken, that a medical gentleman, who saw him at that time and got
from him a confession of what he had done, very naturally did not
believe his story. It was not till at least the eighteenth hour that
stupor set in; but two hours later, when Dr. Heude first saw him, he
laboured under all the characteristic symptoms of poisoning with
opium in an aggravated degree. The stomach-pump brought away a
fluid quite free of the odour of opium. In seven hours more, under
assiduous treatment, after having been in an almost hopeless state of
insensibility, he had recovered so far as to be safely left in charge of a
friend; and eventually he got quite well. No particular cause could be
discovered for the long apparent suspension of the usual effects of
opium.
Although the symptoms are very rarely postponed beyond an hour
in pure poisoning with this substance, there is some reason for
thinking that the interval may be much longer, if at the time of taking
the opium the person be excited by intoxication from previously
drinking spirits. Mr. Shearmen has related a striking case of an
habitual drunkard, who took two ounces of laudanum while
intoxicated to excitement with beer and spirits, and had no material
stupor for five hours, during which period vomiting could not be
induced. Five hours afterwards, he was found insensible, and he
eventually died under symptoms of poisoning with opium.[1712]
The most remarkable symptom in the generality of cases of
poisoning with opium is the peculiar sopor. This state differs from
coma, in as much as the patient continues long capable of being
roused. It may be difficult to rouse him; but unless death is at hand,
this may be commonly accomplished by brisk agitation, tickling the
nostrils, loud speaking, or the injection of water into the ear. The
state of restored consciousness is always imperfect, and is speedily
followed again by lethargy when the exciting power is withheld.—It
has been already remarked, that the possibility of thus interrupting
the lethargy caused by opium is in general a good criterion for
distinguishing the effects of this poison from apoplexy and epilepsy.
It was observed, in describing the mode of action of opium, that
convulsions, although very frequently produced by it in animals, are
rarely caused in man. It is not easy to account for this difference.
Orfila has endeavoured to explain it, by supposing that convulsions
are produced only by very large doses; but there are many facts
incompatible with that supposition.
While convulsions are certainly not common in the human subject,
yet when they do occur they are sometimes violent. Tralles mentions
that he had himself several times seen convulsions excited in
children by moderate doses.[1713] The Journal Universel contains the
case of a soldier who took two drachms of solid opium, and died in
six hours and a half, after being affected with locked-jaw and
dreadful spasms.[1714] A case is related in the Medical and Physical
Journal of a young man, who, three hours after swallowing an ounce
of laudanum, was found insensible, with the mouth distorted, the
jaws fixed, and the hands clenched; and who, soon after the
insensibility was lessened by proper remedies, was seized with
spasms of the back, neck, and extremities, so violent as to resemble
opisthotonos.[1715] Another good case of the kind is related by Mr.
M’Kechnie, where the voluntary muscles were violently convulsed in
frequent paroxysms, and affected in the intervals with subsultus, for
three hours before the sopor came on.[1716] Two instances of
convulsions alternating with sopor are shortly related by Dr. Bright.
[1717]
The convulsions sometimes assume the form of permanent
spasm, which may affect the whole muscles of the body, as in a case
related in Corvisart’s Journal.[1718]—Another rare symptom of
poisoning with opium is delirium. It appears to occur occasionally
along with convulsions, as happened in Mr. M’Kechnie’s case, and in
one related by M. Ollivier.[1719]
The state of the pulse varies considerably. In an interesting case
described by Dr. Marcet it is mentioned that the pulse was 90, feeble
and irregular; and such appears to be its most common condition
when the dose has been so large as seriously to endanger life.[1720]
Frequently, however, it is much slower; and then it is rather full than
feeble, just as in apoplexy. In cases where convulsions occur, it is for
the most part hurried, and does not become slow till the coma
becomes pure. In Mr. M’Kechnie’s case the pulse was at first 126; but
when the convulsions ceased, and pure sopor supervened, it fell to
55. It always becomes towards the close very feeble, and at length
imperceptible.
The respiration is almost always slow. In Dr. Marcet’s case, as in
some others, it was stertorous; but this is not common. On the
contrary, it is more frequently soft and gentle, as it has been in all the
cases I have witnessed; and sometimes it can hardly be perceived at
all, even in persons who eventually recover, as in an instance of
recovery recorded by Dr. Kinnis.[1721]
The pupils are always at least sluggish in their contractions, often
quite insensible;—sometimes, it is said, dilated:[1722] but much more
commonly contracted, and occasionally to an extreme degree. In the
case last noticed, they were no bigger than a pin’s head. The pupils
have been so invariably found contracted in all recent cases of
poisoning with opium, that some doubt arises whether they are ever
otherwise, and whether the earlier accounts, which represent them to
have been dilated, may not be incorrect, and the result of hasty
observation.
The expression of the countenance is for the most part remarkably
placid, like that of a person in sound natural sleep. Occasionally
there is an expression of anxiety mingled with the stupor. The face is
commonly pale. Sometimes, however, it is flushed;[1723] and in rare
cases the expression is furious.[1724]
In moderately large doses opium generally suspends the excretion
of urine and fæces; but it promotes perspiration. In dangerous cases
the lethargy is sometimes accompanied with copious sweating. In a
fatal case, which I examined judicially, the sheets were completely
soaked to a considerable distance around the body.
A remarkable circumstance, which has been noticed by a late
author, is the sudden death of leeches applied to the body. The
patient was a child who had been poisoned by too strong an injection
of poppy-heads.[1725]
In some instances the symptoms proper to poisoning with opium
become complicated with those which belong rather to organic
affections of the brain, in consequence of such affections being
suddenly developed through means of the cerebral congestion
occasioned by the poison. Thus, in a case related in Corvisart’s
Journal, there were convulsions and somnolency on the third day,
and palsy of one arm for four days; and for nearly two months
afterwards the patient complained of occasional attacks of weakness
and numbness, sometimes of one extremity, sometimes of another.
[1726]
Here the brain must have sustained some more permanent
injury than usual.—A more remarkable illustration once occurred to
Dr. Elliotson. A young man, seven hours after swallowing two ounces
of laudanum, presented the usual effects of opium, such as
contracted pupils, redness of the features, a frequent feeble pulse,
coldness of the integuments, and stupor, from which he could be
roused without particular difficulty. The stomach-pump brought
away a fluid which had not any odour of opium; powerful stimulants
were given, such as ether, ammonia and brandy; and he was kept
constantly walking between two men. In an hour and a half, when
sensibility had been materially restored, his head suddenly dropped
down upon his breast, and he fell down dead. The sinuses and veins
of the brain were turgid, and a moderately thick layer of blood was
effused over the arachnoid membrane.[1727]—Under the same head
must be arranged the following extraordinary case related by Pyl.
That author admits it as one of simple poisoning, with a complete
remission of the symptoms for several days. But the possibility of
such a remission must be received with great hesitation. It is well
known that most of the symptoms may be dispelled by vigorous
treatment, and the patient nevertheless relapse immediately if left to
himself, and even die. This is acknowledged on all hands. Pyl,
however, admits the possibility of a much more complete and longer
interval. His case is shortly as follows. A man who had taken a large
quantity of opium, and became very dangerously ill, was made to
vomit in twelve hours, and regained his senses completely. The
bowels continued obstinately costive; but he had for some days no
other symptom referrible to the poison; when at length the whole
body became gradually palsied and stiff, and he died on the tenth
day. No importance can be attached to a solitary case differing so
widely from every other. The only way in which opium could cause
death in such a manner, must be by calling forth some disposition to
natural disease. Pyl’s case was probably one of supervening
ramollissement, or inflammation of the substance of the brain.[1728]
Notwithstanding the purely narcotic or nervous symptoms, which
opium produces in a vast proportion of instances, there is no doubt
that it also excites in a few rare cases those of irritation. Thus,
although it generally constipates the bowels, it has been known to
induce diarrhœa or colic in particular constitutions. In the first
volume of the Medical Communications, it is observed by Michaëlis
that both diarrhœa and diuresis may be produced by it. The soldier,
whose case was quoted as having been accompanied with
convulsions, had acute pain in the stomach for some time after
swallowing the poison; and in the case just quoted from Corvisart’s
Journal, the accession of somnolency was attended with excruciating
pain of two days’ duration.
Another and more singular anomaly is the spontaneous occurrence
of vomiting. Sometimes a little vomiting immediately succeeds the
taking of the poison. This may not interrupt, however, the progress
of the symptoms;[1729] but more commonly it is the means of saving
the person’s life, as in a striking case described by Petit of an English
officer,[1730] who, in consequence of vomiting immediately after
taking two ounces of laudanum, had only moderate somnolency. At
other times vomiting occurs at a much later period. Pyl, in his Essays
and Observations, gives a case in which, some hours after thirty
grains were swallowed, vomiting took place spontaneously, and
recurred frequently afterwards; in the same paper is an account of
another case by the individual himself, who attempted to commit
suicide by taking a large dose of laudanum, but was disappointed in
consequence of the poison being spontaneously vomited after the
sopor had fairly set in;[1731] and a similar case is related by M.
Mascarel, where, after seven ounces of Sydenham’s laudanum had
been taken, vomiting occurred spontaneously, and was followed only
by inconsiderable stupor.[1732]—Vomiting is a common enough
symptom after the administration of emetics, or subsequent to the
departure of the somnolency.[1733]
The ordinary duration of a fatal case of poisoning with opium is
from seven to twelve hours. Most people recover who outlive twelve
hours. At the same time fatal cases of longer duration are on record:
Réaumur mentions one which proved fatal in fifteen hours,[1734]
Orfila another fatal in seventeen hours,[1735] Leroux another fatal in
the same time,[1736] Alibert another fatal in nearly twenty-four hours.
[1737]
An instance has even been related, which appeared to prove fatal
not till towards the close of the third day;[1738] but the whole course of
the symptoms was in that case so unusual, that some other cause
must have co-operated in occasioning death. Sometimes, too, death
takes place in a shorter time than seven hours; six hours is not an
uncommon duration; I once met with a judicial case, which could not
have lasted above five hours; an infirmary patient of my colleague,
Dr. Home, died in four hours; in the 31st volume of the Medical and
Physical Journal, there is one which proved fatal in three hours.[1739]
This is the shortest I have read of.
The dose of opium requisite to cause death has not been
determined. Indeed it must vary so much with circumstances, that it
is almost vain to attempt to fix it. Pyl relates a case, quickly fatal,
where the quantity taken was 60 grains;[1740] Lassus an instance of
death from 36 grains;[1741] Wildberg has related a fatal case caused by
little more than half an ounce of the Berlin tincture,[1742] which
contains the soluble matter of forty grains; and Mr. Skae has
mentioned a case fatal in about thirteen hours, where the dose seems
to have been well ascertained not to have exceeded half an ounce of
common laudanum, or about twenty grains of opium.[1743] Dr. Paris,
without quoting any particular fact, says four grains may prove fatal.
[1744]
I should have felt some difficulty in admitting this statement, as
I have repeatedly known persons, unaccustomed to opium, take
three or four grains without any other effect than sound sleep. But I
have been favoured with the particulars of a case by Mr. W. Brown of
this city, where a dose of four grains and a half, taken by an adult
along with nine grains of camphor, was followed by the usual signs of
narcotism, and death in nine hours. The man took the opium for a
cough at seven in the morning; at nine his wife found him in a deep
sleep, from which she could not rouse him; nothing was done for his
relief till three in the afternoon, when Mr. Brown found him
labouring under all the usual symptoms of poisoning with opium,
contracted pupils among the rest; and death ensued in an hour,
notwithstanding the active employment of remedies. On examining
the body no morbid appearance was found of any note except fluidity
of the blood,—a common appearance in those who have died of the
effects of this drug.
It is more important than may at first sight be imagined to acquire
an approximative knowledge of the smallest fatal dose. For, in
consequence of the dread entertained of opium by many
unprofessional persons, it is currently believed to be much more
active than it is in reality; and instances of natural death have been
consequently imputed to medicinal doses taken fortuitously a short
time before. The facts stated above comprehend the only precise
information I have been able to collect as to the smallest fatal doses
in adults. I may add some farther observations, however, on the
smallest fatal doses in children. Very young children are often
peculiarly sensible to the poisonous action of opium, so that it is
scarcely possible to use the most insignificant doses with safety.
Sundeling states in general terms that extremely small doses are very
dangerous to infants on account of the rapidity of absorption. This
opinion is amply supported by the following cases.—An infant three
days old got by mistake about the fourth part of a mixture containing
ten drops of laudanum. No medical man was called for eleven hours.
At that time there was great somnolency and feebleness, but the
child could be roused. The breathing being very slow, artificial
respiration was resorted to, but without advantage: the child died in
twenty-four hours, the character of the symptoms remaining
unchanged to the last. At the inspection of the body, which I
witnessed, no morbid appearance was found.—Of the same kind was
a case communicated to me by Dr. Simson of this city, where the
administration of three drops of laudanum in a chalk mixture, for
diarrhœa, to a stout child fourteen months old, was followed by
coma, convulsions, and death in about six hours. Dr. Simson
satisfied himself, as far as that was possible, that the apothecary who
made up the mixture did not commit a mistake.—Dr. Kelso of
Lisburn met with a similar case in an infant of nine months, who
died in nine hours after taking four drops.[1745]—My colleague, Dr.
Alison, tells me he has met with a case where an infant a few weeks
old died with all the symptoms of poisoning with opium after
receiving four drops of laudanum, and that he has repeatedly seen
unpleasant deep sleep induced by only two drops.—These remarks
being kept in view, it will, I suspect, be difficult to go along with an
opinion against poisoning expressed by a German medico-legal
physician in the following circumstances. A child’s maid, pursuant to
a common but dangerous custom among nurses, gave a healthy
infant, four weeks old, an anodyne draught to quiet its screams. The
infant soon fell fast asleep, but died comatose in twelve hours. There
was not any appearance of note in the dead body; and the child was
therefore universally thought to have been killed by the draught. But
the inspecting physician declared that to be impossible, as the
draught contained only an eighth of a grain of opium and as much
hyoscyamus.[1746] In the first edition of this work an opinion was
expressed to the same purport. But the facts stated above throw
doubt on its accuracy, and rather show that the dose was sufficient in
the circumstances to occasion death.
A very important circumstance to attend to in respect to the dose
of opium required to prove fatal is the influence of constitutional
circumstances in rendering this drug unusually energetic. In some
persons this peculiar anomaly exists always, even during a state of
health. Thus, I am acquainted with a gentleman on whom seven
drops of laudanum act with great certainty as a hypnotic. In such a
one doses, which are safely taken by many, might prove dangerous.
It is more usual, however, to meet with this anomaly in the course
of some diseases. These have not yet been satisfactorily indicated. I
have several times, however, met with unusually energetic action
from medicinal doses in elderly persons affected with severe habitual
catarrh; and in one instance death occurred after a dose of twenty-
five drops in the advanced stage of acute catarrh supervening on its
chronic form, the symptoms being those of poisoning with opium,
succeeding apparently a state of comfortable sleep.—A case
seemingly of the same nature, where the dose was fifteen drops of
Battley’s Sedative Liquor, occurred at Islington in 1841. An elderly
lady, in delicate health, and affected severely with asthma, which for
ten days prevented her from sleeping, got from a neighbouring
druggist a draught of Battley’s solution, syrup, and camphor-
mixture. Next morning she was found insensible and livid in the face,
with cold extremities and contracted pupils; and she died about
twelve hours after taking the draught. There was no sign of natural
disease in the dead body to account for death. The druggist was
absurdly blamed for giving such a dose to a frail old lady; for the dose
was not more than would be generally given in such circumstances.
This case was communicated to me by the druggist in question.—
Another of the like kind has been communicated to me by Mr.
Garstang of Clitheroe. An elderly female, long subject to severe
cough, having enjoyed a comfortable night’s rest after a dose of a
preparation containing half a grain of opium, took in the morning
the equivalent of two grains and a half, or three grains at the utmost,
and fell asleep soon after. In no long time, her husband, alarmed
because he could not rouse her, sent for Mr. Garstang, who found her
husband labouring under all the symptoms of poisoning with opium;
and, notwithstanding active treatment, she died six hours after the
second dose. Her husband took half a grain with her the evening
before, but experienced no effect from it at all. Not the slightest
ground could exist in this case for suspecting either foul play or
pharmaceutic error.—As a farther illustration, the following incident
deserves notice, which occurred last year in London, and was
communicated to me by Dr. G. Johnson, a former pupil. A little girl,
five years and a half old, affected with violent cough, got a mixture
containing opium, which was repeated six, thirteen, and twenty-six
hours afterwards. She slept soundly after each dose, and awoke
readily after the first three; but after the fourth she had more stupor
and much uneasiness; in which state, but with at least one interval of
sensibility, she died in nine hours more, or thirty-five hours after the
first dose. According to the prescriber’s intention, the child ought to
have taken only two minims of laudanum in all; but, according to a
rough analysis by Mr. Alfred Taylor, each dose contained an eighth of
a grain of opium, or a trifle more. In either view it is impossible that
doses so small, and so distant, could produce these effects in
ordinary circumstances.
Such cases are important in several respects, but especially
because they naturally give rise to suspicions of an over-dose of
opium having been incautiously given, and thus to
misrepresentations injurious to the druggist or medical attendant. In
the last case a Coroner’s Jury brought in the preposterous verdict,
that death was caused by “too much opium ordered without due
instructions.”
It is scarcely necessary to add, that the dose required to prove fatal
is very much altered by habit. Those who have been accustomed to
eat opium are obliged gradually to increase the dose, otherwise its
usual effects are not produced. Some extraordinary, but I believe
correct information on this subject, is contained in the confessions of
an English opium-eater. The author took at one time 8000 drops
daily, or about nine ounces of laudanum.
An important topic relative to the effects of opium on man is its
operation on the body when used continuously in the manner
practised by opium-eaters. This subject was brought forcibly under
my notice in 1831, in consequence of a remarkable civil trial, in
which I was concerned as a medical witness,—that of Sir W. Forbes
and company against the Edinburgh Life Assurance Company. The
late Earl of Mar effected insurances on his life to a large amount
while addicted to the vice of opium-eating; which was not made
known at the time to the insurance company. He died two years
afterwards of jaundice and dropsy. The company refused payment,
on the ground that his lordship had concealed from them a habit
which tends to shorten life; and Sir W. Forbes and company, who
held the policy of insurance as security for money lent to the earl,
raised an action to recover payment.
In consequence of inquiries made on this occasion, I became for
the first time aware of the frequency of the vice of opium-eating
among both the lower orders and the upper ranks of society; and at
the same time satisfied myself, that the habit is often easily
concealed from the most intimate friends,—that physicians even in
extensive practice seldom become acquainted with such cases,—that
the effects of the habit on the constitution are not always what either
professional persons or the unprofessional would expect,—and
generally that practitioners and toxicologists possess little or no
precise information on the matter. In what is about to be offered on
the subject, some facts will be stated which appear to me interesting,
and may induce others to contribute their knowledge towards filling
up so important a blank in medico-legal toxicology.
The general impression is, that the practice of opium-eating
injures the health and shortens life. But the scientific physician in
modern times has seen so many proofs of the inaccuracy of popular
impressions relative to the operation of various agents on health and
longevity,[1747] that he will not allow himself to be hastily carried
along in the present instance by vague popular belief. The general
conviction of the tendency of opium-eating to shorten life has
obviously been derived in part from the injurious effects which
opium used medicinally has on the nervous system and functions of
the alimentary canal,—and partly on the reports of travellers in
Turkey and Persia, who have enjoyed opportunities of watching the
life and habits of opium-eaters on a great scale. The statements of
travellers, however, are so vague that they cannot be turned to use
with any confidence in a scientific inquiry. Chardin, one of the
earliest (1671) and best of modern travellers in Turkey, merely says
the opium-eater becomes rheumatic at fifty, and “never reaches an
extreme old age;”[1748] and his successors have seldom been more
precise,—no one having given information as to the diseases which it
tends to engender. By far the greater number of authorities, however,
agree in representing the practice to be hurtful. Mr. Madden, a
recent and professional authority, even alleges that it is very rare for
an opium-eater at Constantinople to outlive his thirtieth year, if he
began the practice early. On the other hand, a few late observers
deny altogether the accuracy of these statements. To this number
belongs Dr. Burnes of the Bombay army; whose opinion is worthy of
notice, because he had ample opportunities of observation during his
residence in Cutch and at the Court of Sinde for several years prior to
1831. From what he there witnessed, Dr. Burnes is inclined to think
“it will be found in general that the natives do not suffer much from
the use of opium,”—that “this powerful narcotic does not seem to
destroy the powers of the body, nor to enervate the mind to the
degree that might be imagined.”[1749] Dr. Macpherson of the Madras
army, who had occasion to observe the effects of the parallel practice
of opium-smoking in China, coincides in opinion with Dr. Burnes.
He says, “were we to be led away by the popular opinion that the
habitual use of opium injures the health and shortens life, we should
expect to find the Chinese a shrivelled, emaciated, idiotic race. On
the contrary, although the habit of smoking opium is universal
among rich and poor, we find them to be a powerful, muscular, and
athletic people, and the lower orders more intelligent and far
superior in mental acquirements to those of corresponding rank in
our own country.”[1750]
The familiar effects of the medicinal use of opium in disordering
the nervous system and the digestive functions constitute a better
reason, than the loose statements of eastern travellers, for the
popular impression of the danger of its habitual and long-continued
use. Yet this consideration ought not to be allowed too much weight;
because the functions of the nervous system and of digestion may be
deranged by other causes, for example by hysteria, without
necessarily and materially shortening life. It is desirable therefore to
appeal if possible to precise facts.
The following is a summary of twenty-five cases, the particulars of
which I have obtained from various quarters. The general result
rather tends to throw doubt over the popular opinion.—1. A lady
about thirty, in good health, has taken it largely for twenty years,
having been gradually habituated to it from childhood by the villany
of her maid, who gave it frequently to keep her quiet. 2. A female
who died of consumption at the age of forty-two, had taken about a
drachm of solid opium for ten years, but had given up the practice for
three years before her death, and led in other respects a licentious
life from an early age. 3. A well-known literary author, about sixty
years of age, has taken laudanum for thirty-five years, with
occasional short intermissions, and sometimes an enormous
quantity, but enjoys tolerable bodily health. 4. A lady, after being in
the practice of drinking laudanum for at least twenty years, died at
the age of fifty,—of what disease I have been unable to learn. 5. A
lady about fifty-five, who enjoys good health, has taken opium many
years, and at present uses three ounces of laudanum daily. 6. A lady
about sixty gave it up after using it constantly for twenty years,
during which she enjoyed good health; and subsequently she
resumed it. 7. Lord Mar after using laudanum for thirty years, at
times to the amount of two or three ounces daily, died at the age of
fifty-seven of jaundice and dropsy; but he was a martyr to
rheumatism, and besides lived rather freely. 8. A woman, who had
been in the practice of taking about two ounces of laudanum daily for
very many years, died at the age of sixty or upwards. 9. An eminent
literary character, who died about the age of sixty-three, was in the
practice of drinking laudanum to excess from the age of fifteen; and
his daily allowance was sometimes a quart of a mixture consisting of
three parts of laudanum and one of alcohol. 10. A lady, who died
lately at the age of seventy-six, took laudanum in the quantity of half
an ounce daily for nearly forty years. 11. An old woman died not long
ago at Leith at the age of eighty, who had taken about half an ounce
of laudanum daily for nearly forty years, and enjoyed tolerable health
all the time. 12. Visrajee, a celebrated Cutchee chief, mentioned by
Dr. Burnes, had taken opium largely all his life, and was alive when
Dr. Burnes drew up his Narrative, at the age of eighty, “paralyzed by
years, but his mind unimpaired.”[1751]
For the particulars of the remaining cases I am indebted to Dr.
Tait, surgeon of police in this city. 13. M. C., a ruddy, healthy-looking
woman, sixty years of age, has taken laudanum for twenty-five years
to the extent of half an ounce daily in a single dose. 14. M. H., a
flabby, dissipated-looking woman of thirty-six, has taken for ten
years thirty grains of opium daily in three doses. 15. M. T., a widow,
forty-eight years of age, who takes twice daily a dose of one
fluidrachm of laudanum, and has done so for fourteen years, cannot
observe any permanent injury except diminution of appetite. 16. Mrs.
G., aged twenty-four, has taken a single dose of sixty drops regularly
at bed-time for five years, and has not suffered in health in any
respect, except that she is costive. 17. F. S., a thin, sallow woman of
forty-six years of age, has taken a fluidrachm of laudanum three
times a day for ten years, cannot take food without it, but is so well as
to be able to get up regularly at six in the morning. 18. H. S., a
shrivelled old-looking woman, who for thirty-eight years had taken
daily towards a drachm of opium in one dose, and who latterly was
strong, lively, and of good appetite, died recently at the age of sixty-
nine. 19. Mrs. S., who has taken about a scruple of opium for twenty-
one years, is a tall, active, old-looking woman of fifty-seven, enjoys
good health when she uses the opium, but suffers from an affection
like delirium tremens, when she cannot get her usual quantity. 20.
M. A., aged thirty-one, has taken half a drachm of opium daily in two
doses for ten years, was a thin, drunken, starved-looking prostitute
some years ago, but, having reformed her ways, is now “a fine-
looking, bouncing woman,” younger in appearance than formerly,
and not liable to any suffering either before or after her doses, except
that she cannot take food without them. 21. Miss M., who has taken
ten grains of opium three times a day for five years, is a healthy,
florid young woman of twenty-seven, liable to costiveness, and, when
without her opium, to languor and want of appetite, but otherwise
free of complaint. 22. Mrs. ——, a plump, hale-looking old lady of
seventy, has taken opium for six and twenty years, and for some
years to the extent of a drachm daily in two doses. She thinks her
health improved by it, and has suffered no inconvenience except
merely costiveness, and always aversion to food till she gets her dose.
23. J. B., aged 23, has taken laudanum since she was fourteen, and
some time past to the amount of an ounce or ten drachms in three or
four doses daily. She has only menstruated twice since first using the
laudanum, has bilious vomiting once a month, and looks older than
her years, but is otherwise quite healthy, and has two children. 24.
Mrs. M’C., a ruddy young-looking woman of forty-two, has taken
opium during two years for cough and pain in the stomach, latterly
to the extent of ten grains twice a day. She has never menstruated
since, but has enjoyed better health, and in particular has a good
appetite after her dose, and has got entirely quit of a former tendency
to constipation. 25. An army officer’s widow, fifty-five years old,
healthy and young-looking, although subject to costiveness and
rather defective appetite, has taken laudanum for eleven years, and
latterly opium to the extent of fifteen grains morning and evening.
These facts tend on the whole rather to show, that the practice of
eating opium is not so injurious, and an opium eater’s life not so
uninsurable, as is commonly thought; and that an insured person,
who did not make known this habit, could scarcely be considered
guilty of concealment to the effect of voiding his insurance. But I am
far from thinking,—as several represent who have quoted this work,
—that what has now been stated can with justice be held to establish
such important inferences; for there is an obvious reason, why in an
inquiry of this kind those instances chiefly should come under notice
where the constitution has escaped injury, cases fatal in early life
being more apt to be lost sight of, or more likely to be concealed.
Meanwhile, insurance companies and insurance physicians ought
to be aware, that not a few persons in the upper ranks of life are
confirmed opium-eaters without even their intimate friends knowing
it. And the reason is, that at the time the opium-eater is visible to his
friends, namely, during the period of excitement, there is frequently
nothing in his behaviour or appearance to attract particular
attention. From the information I have received, it appears that the
British opium-eater is by no means subject to the extraordinary
excitement of mind and body described by travellers as the effect of
opium-eating in Turkey and Persia; but that the common effect
merely is to remove torpor and sluggishness, and make him in the
eyes of his friends an active and conversible man. The prevailing
notions of the nature of the excitement from eating opium are
therefore very much exaggerated. Another singular circumstance I
have ascertained is, that constipation is by no means a general effect
of the continued use of opium. In some of the cases mentioned above
no laxatives have been required; and in others a gentle laxative once
a week is sufficient.
In the civil suit regarding Lord Mar’s insurances, the insurance
company was at first found not entitled to refuse payment,—not,
however, on the ground that the habit of opium-eating is harmless to

You might also like