没有合适的资源?快使用搜索试试~ 我知道了~
首页Python科学编程入门:数学与自然科学示例
《科学编程入门:Python指南》是一本旨在教授计算机编程的教材,特别强调通过数学和自然科学的实际案例来引导学习过程。作者汉斯·彼得·朗坦根选择Python作为教学语言,因为其具有卓越的表达能力,同时语法简洁明了,易于上手。Python与MATLAB相似,非常适合进行数学计算,并且可以方便地与Fortran、C、C++等广泛应用于科学计算的编译型语言结合。 本书的核心理念在于将编程基础与实际应用紧密结合,涵盖数学(包括一元微积分,推荐读者具备高中阶段数学课程的知识)、物理学、生物学以及金融领域的实例。尽管大学级别的微积分课程,特别是包含古典和现代元素的课程,会是一个有益的补充,但并非必需前提,因为作者注重的是通过实践中的例子使读者掌握编程技能。 书中提供的示例涵盖了从基本的数值运算到复杂的数据分析和模拟,旨在帮助读者逐步熟悉Python的各个方面,如变量、函数、数据结构、控制流、模块化编程以及科学库的使用(如NumPy、SciPy和Matplotlib)。此外,通过科学计算项目的实践,读者还能学习如何解决实际问题,提升解决问题的能力和代码优化技巧。 《科学编程入门:Python指南》不仅是一本编程教程,还是一部科学方法论的实用手册,旨在培养读者在科学研究中运用计算机技术的能力,使他们在面对科学挑战时能够得心应手地编写高效、清晰的Python代码。对于对科学和技术感兴趣的学生和研究人员来说,这是一本不可或缺的参考资料。
资源详情
资源推荐
![](https://csdnimg.cn/release/download_crawler_static/10876676/bg10.jpg)
Contents
8.8.2 Example: Random growth . . . . . . . . . . . . . . . . . . . . 494
8.9 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499
9 Object-oriented programming . . . . . . . . . . . . . . . . . . . . . . . 517
9.1 Inheritance and class hierarchies . . . . . . . . . . . . . . . . . . . . . 517
9.1.1 A class for straight lines . . . . . . . . . . . . . . . . . . . . . . 518
9.1.2 A first try on a class for parabolas . . . . . . . . . . . . . 519
9.1.3 A class for parabolas using inheritance. . . . . . . . . . 519
9.1.4 Checking the class type . . . . . . . . . . . . . . . . . . . . . . . 521
9.1.5 Attribute vs inheritance: has-a vs is-a relationship 522
9.1.6 Superclass for defining an interface . . . . . . . . . . . . . 524
9.2 Class hierarchy for numerical differentiation . . . . . . . . . . . 526
9.2.1 Classes for differentiation . . . . . . . . . . . . . . . . . . . . . 527
9.2.2 Verification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530
9.2.3 A flexible main program . . . . . . . . . . . . . . . . . . . . . . 532
9.2.4 Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533
9.2.5 Alternative implementation via functions . . . . . . . 536
9.2.6
Alternative implementation via functional
programming. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537
9.2.7 Alternative implementation via a single class . . . . 538
9.3 Class hierarchy for numerical integration . . . . . . . . . . . . . 540
9.3.1 Numerical integration methods . . . . . . . . . . . . . . . . 540
9.3.2 Classes for integration . . . . . . . . . . . . . . . . . . . . . . . . 542
9.3.3 Verification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545
9.3.4 Using the class hierarchy . . . . . . . . . . . . . . . . . . . . . 546
9.3.5 About object-oriented programming . . . . . . . . . . . . 548
9.4 Class hierarchy for making drawings . . . . . . . . . . . . . . . . . 550
9.4.1 Using the object collection . . . . . . . . . . . . . . . . . . . . 551
9.4.2 Example of classes for geometric objects . . . . . . . . 560
9.4.3 Adding functionality via recursion . . . . . . . . . . . . . 565
9.4.4 Scaling, translating, and rotating a figure . . . . . . . 568
9.5 Classes for DNA analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . 570
9.5.1 Class for regions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571
9.5.2 Class for genes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571
9.5.3 Subclasses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576
9.6 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577
9.6.1 Chapter topics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577
9.6.2 Example: Input data reader . . . . . . . . . . . . . . . . . . . 579
9.7 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585
A Sequences and difference equations . . . . . . . . . . . . . . . . . . 595
A.1 Mathematical models based on difference equations . . . . 596
A.1.1 Interest rates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597
A.1.2 The factorial as a difference equation . . . . . . . . . . . 600
A.1.3 Fibonacci numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . 600
![](https://csdnimg.cn/release/download_crawler_static/10876676/bg11.jpg)
Contents xix
A.1.4 Growth of a population . . . . . . . . . . . . . . . . . . . . . . . 602
A.1.5 Logistic growth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602
A.1.6 Payback of a loan . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604
A.1.7 The integral as a difference equation . . . . . . . . . . . 605
A.1.8 Taylor series as a difference equation . . . . . . . . . . . 607
A.1.9 Making a living from a fortune . . . . . . . . . . . . . . . . 609
A.1.10Newton’s method . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609
A.1.11The inverse of a function . . . . . . . . . . . . . . . . . . . . . 613
A.2 Programming with sound . . . . . . . . . . . . . . . . . . . . . . . . . . . 615
A.2.1 Writing sound to file . . . . . . . . . . . . . . . . . . . . . . . . . 616
A.2.2 Reading sound from file . . . . . . . . . . . . . . . . . . . . . . 617
A.2.3 Playing many notes . . . . . . . . . . . . . . . . . . . . . . . . . . 618
A.2.4 Music of a sequence . . . . . . . . . . . . . . . . . . . . . . . . . . 619
A.3 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621
B Introduction to discrete calculus . . . . . . . . . . . . . . . . . . . . 635
B.1 Discrete functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635
B.1.1 The sine function . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636
B.1.2 Interpolation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637
B.1.3 Evaluating the approximation . . . . . . . . . . . . . . . . . 638
B.1.4 Generalization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639
B.2 Differentiation becomes finite differences . . . . . . . . . . . . . . 640
B.2.1 Differentiating the sine function . . . . . . . . . . . . . . . 641
B.2.2 Differences on a mesh . . . . . . . . . . . . . . . . . . . . . . . . 642
B.2.3 Generalization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644
B.3 Integration becomes summation . . . . . . . . . . . . . . . . . . . . . 645
B.3.1 Dividing into subintervals . . . . . . . . . . . . . . . . . . . . . 645
B.3.2 Integration on subintervals . . . . . . . . . . . . . . . . . . . . 647
B.3.3 Adding the subintervals . . . . . . . . . . . . . . . . . . . . . . 648
B.3.4 Generalization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648
B.4 Taylor series . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650
B.4.1 Approximating functions close to one point. . . . . . 650
B.4.2 Approximating the exponential function . . . . . . . . 651
B.4.3 More accurate expansions . . . . . . . . . . . . . . . . . . . . . 651
B.4.4 Accuracy of the approximation . . . . . . . . . . . . . . . . 653
B.4.5 Derivatives revisited . . . . . . . . . . . . . . . . . . . . . . . . . 655
B.4.6 More accurate difference approximations . . . . . . . . 656
B.4.7 Second-order derivatives . . . . . . . . . . . . . . . . . . . . . . 658
B.5 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 660
C Introduction to differential equations . . . . . . . . . . . . . . . . 667
C.1 The simplest case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668
C.2 Exponential growth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670
C.3 Logistic growth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675
C.4 A simple pendulum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 676
![](https://csdnimg.cn/release/download_crawler_static/10876676/bg12.jpg)
Contents
C.5 A mo del for the spread of a disease . . . . . . . . . . . . . . . . . . 679
C.6 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681
D A complete differential equation project . . . . . . . . . . . . . 685
D.1 About the problem: motion and forces in physics . . . . . . 685
D.1.1 The physical problem . . . . . . . . . . . . . . . . . . . . . . . . 685
D.1.2 The computational algorithm. . . . . . . . . . . . . . . . . . 688
D.1.3 Derivation of the mathematical model . . . . . . . . . . 688
D.1.4 Derivation of the algorithm . . . . . . . . . . . . . . . . . . . 691
D.2 Program development and testing . . . . . . . . . . . . . . . . . . . 692
D.2.1 Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 692
D.2.2 Callback functionality . . . . . . . . . . . . . . . . . . . . . . . . 695
D.2.3 Making a mo dule . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697
D.2.4 Verification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697
D.3 Visualization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700
D.3.1 Simultaneous computation and plotting . . . . . . . . . 701
D.3.2 Some applications . . . . . . . . . . . . . . . . . . . . . . . . . . . 703
D.3.3 Remark on choosing Δt . . . . . . . . . . . . . . . . . . . . . . 704
D.3.4 Comparing several quantities in subplots . . . . . . . . 704
D.3.5 Comparing approximate and exact solutions . . . . . 705
D.3.6 Evolution of the error as Δt decreases . . . . . . . . . . 706
D.4 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 710
E Programming of differential equations . . . . . . . . . . . . . . . 713
E.1 Scalar ordinary differential equations . . . . . . . . . . . . . . . . . 714
E.1.1 Examples on right-hand-side functions . . . . . . . . . . 714
E.1.2 The Forward Euler scheme . . . . . . . . . . . . . . . . . . . . 716
E.1.3 Function implementation . . . . . . . . . . . . . . . . . . . . . 717
E.1.4 Verifying the implementation . . . . . . . . . . . . . . . . . . 718
E.1.5 From discrete to continuous solution . . . . . . . . . . . 720
E.1.6 Switching numerical method . . . . . . . . . . . . . . . . . . 720
E.1.7 Class implementation . . . . . . . . . . . . . . . . . . . . . . . . 721
E.1.8 Logistic growth via a function-based approach . . . 725
E.1.9 Logistic growth via a class-based approach . . . . . . 725
E.2 Systems of ordinary differential equations . . . . . . . . . . . . . 728
E.2.1 Mathematical problem . . . . . . . . . . . . . . . . . . . . . . . 728
E.2.2 Example of a system of ODEs . . . . . . . . . . . . . . . . . 730
E.2.3 Function implementation . . . . . . . . . . . . . . . . . . . . . 731
E.2.4 Class implementation . . . . . . . . . . . . . . . . . . . . . . . . 734
E.3 The ODESolver class hierarchy . . . . . . . . . . . . . . . . . . . . . . 735
E.3.1 Numerical methods . . . . . . . . . . . . . . . . . . . . . . . . . . 735
E.3.2 Construction of a solver hierarchy . . . . . . . . . . . . . . 737
E.3.3 The Backward Euler method . . . . . . . . . . . . . . . . . . 739
E.3.4 Verification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742
E.3.5 Example: Exponential decay . . . . . . . . . . . . . . . . . . 743
![](https://csdnimg.cn/release/download_crawler_static/10876676/bg13.jpg)
Contents xxi
E.3.6
Example: The logistic equation with problem and
solver classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746
E.3.7 Example: An oscillating system . . . . . . . . . . . . . . . . 753
E.3.8 Application 4: the trajectory of a ball . . . . . . . . . . 755
E.3.9 Further developments of ODESolver . . . . . . . . . . . . 756
E.4 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 758
F Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 793
F.1 Using a debugger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 793
F.2 How to debug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 796
F.2.1 A recipe for program writing and debugging . . . . . 796
F.2.2 Application of the recipe . . . . . . . . . . . . . . . . . . . . . . 799
F.2.3 Getting help from a code analyzer . . . . . . . . . . . . . 811
G Migrating Python to compiled code . . . . . . . . . . . . . . . . . 813
G.1 Pure Python code for Monte Carlo simulation . . . . . . . . . 814
G.1.1 The computational problem . . . . . . . . . . . . . . . . . . . 814
G.1.2 A scalar Python implementation . . . . . . . . . . . . . . . 814
G.1.3 A vectorized Python implementation . . . . . . . . . . . 815
G.2 Migrating scalar Python code to Cython . . . . . . . . . . . . . 817
G.2.1 A plain Cython implementation . . . . . . . . . . . . . . . 817
G.2.2 A better Cython implementation . . . . . . . . . . . . . . 819
G.3 Migrating code to C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 821
G.3.1 Writing a C program . . . . . . . . . . . . . . . . . . . . . . . . . 821
G.3.2 Migrating loops to C code via F2PY . . . . . . . . . . . 822
G.3.3 Migrating loops to C code via Cython . . . . . . . . . . 823
G.3.4 Comparing efficiency . . . . . . . . . . . . . . . . . . . . . . . . . 824
H Technical topics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 827
H.1 Getting access to Python . . . . . . . . . . . . . . . . . . . . . . . . . . . 827
H.1.1 Required software. . . . . . . . . . . . . . . . . . . . . . . . . . . . 827
H.1.2
Installing software on your laptop: Mac OS X and
Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 828
H.1.3 Anaconda and Spyder . . . . . . . . . . . . . . . . . . . . . . . . 829
H.1.4 VMWare Fusion virtual machine . . . . . . . . . . . . . . . 830
H.1.5 Dual boot on Windows . . . . . . . . . . . . . . . . . . . . . . . 833
H.1.6 Vagrant virtual machine . . . . . . . . . . . . . . . . . . . . . . 833
H.1.7 How to write and run a Python program . . . . . . . . 834
H.1.8 The SageMathCloud and Wakari web services . . . 836
H.1.9 Writing IPython notebooks . . . . . . . . . . . . . . . . . . . 838
H.2 Different ways of running Python programs . . . . . . . . . . . 839
H.2.1 Executing Python programs in iPython . . . . . . . . . 839
H.2.2 Executing Python programs in Unix. . . . . . . . . . . . 840
H.2.3 Executing Python programs in Windows . . . . . . . . 841
H.2.4 Executing Python programs in Mac OS X . . . . . . . 843
H.2.5 Making a complete stand-alone executable . . . . . . 843
![](https://csdnimg.cn/release/download_crawler_static/10876676/bg14.jpg)
Contents
H.3 Doing operating system tasks in Python . . . . . . . . . . . . . . 843
H.4 Variable number of function arguments . . . . . . . . . . . . . . . 846
H.4.1 Variable number of positional arguments . . . . . . . . 847
H.4.2 Variable number of keyword arguments . . . . . . . . . 849
H.5 Evaluating program efficiency . . . . . . . . . . . . . . . . . . . . . . . 852
H.5.1 Making time measurements . . . . . . . . . . . . . . . . . . . 852
H.5.2 Profiling Python programs . . . . . . . . . . . . . . . . . . . . 853
H.6 Software testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 854
H.6.1 Requirements of the test function . . . . . . . . . . . . . . 855
H.6.2 Writing the test function; precomputed data . . . . 856
H.6.3 Writing the test function; exact numerical solution 856
H.6.4 Testing of function robustness . . . . . . . . . . . . . . . . . 857
H.6.5 Automatic execution of tests . . . . . . . . . . . . . . . . . . 859
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 861
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 863
剩余450页未读,继续阅读
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
TZG-Q
- 粉丝: 1
- 资源: 6
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- 贵州煤矿矿井水分类与处理策略:悬浮物、酸性与非酸性
- 醛固酮增多症肾上腺静脉采样对比:ACTH后LR-CAV的最优评估
- 开源云连接传感器监控平台:农业土壤湿度远程监测
- 母婴用品企业年度生产计划线性规划优化模型:实证与应用
- 井下智能变电站:Rogowski线圈电流检测系统的研发与性能验证
- 霍州矿区煤巷稳定性分析及支护策略
- ARM嵌入式系统远程软件更新方案:基于TFTP协议
- 煤炭选煤中汞分布规律与洗选脱汞效果
- 提升码垛机器人性能:拉格朗日动力学模型与滑模模糊控制的应用
- 增强现实技术提升学前手写教学:设计与开发案例
- 不规则工作面沉陷三角剖分算法提升与应用
- 卡尔曼滤波在瞬变电磁干扰压制中的应用研究
- 煤矿安全能力研究:理论与系统构建
- LonWorks总线技术在斜巷运输车辆定位与跑车防护中的应用
- 神东煤炭集团高效煤粉锅炉系统:节能环保新实践
- Ti/SnO2+Sb2Ox/PbO2电极分形维数与电催化性能研究
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)