科学计算与matlab语言download.ilovematlab.cn/meetup/2018csu/matlab... ·...

28
科学计算与MATLAB语言 (Scientific Computing & MATLAB Language) 刘卫国 中南大学 信息科学与工程学院 [email protected] 2018年4月14日 长沙

Upload: others

Post on 31-May-2020

31 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 科学计算与MATLAB语言download.ilovematlab.cn/meetup/2018CSU/MATLAB... · 科学计算方法既有数学理论上的抽象性和严谨 性,又有程序设计技术上的实用性和实验性。

科学计算与MATLAB语言

(Scientific Computing & MATLAB Language)

刘卫国

中南大学信息科学与工程学院

[email protected]

2018年4月14日 长沙

Page 2: 科学计算与MATLAB语言download.ilovematlab.cn/meetup/2018CSU/MATLAB... · 科学计算方法既有数学理论上的抽象性和严谨 性,又有程序设计技术上的实用性和实验性。

计算和科学计算的概念

科学计算与MATLAB语言的关系

MATLAB的矩阵

MATLAB语言MOOC

Page 3: 科学计算与MATLAB语言download.ilovematlab.cn/meetup/2018CSU/MATLAB... · 科学计算方法既有数学理论上的抽象性和严谨 性,又有程序设计技术上的实用性和实验性。

1.“计算”的含义

(1)算术运算,即数的四则运算。

一、计算与科学计算

这里,“计算”体现的是一种基本的数学技能,这是

人类的基本技能。

Page 4: 科学计算与MATLAB语言download.ilovematlab.cn/meetup/2018CSU/MATLAB... · 科学计算方法既有数学理论上的抽象性和严谨 性,又有程序设计技术上的实用性和实验性。

(2)较复杂的运算,即根据已知量算出未知量。

求y=sinx

求𝑎𝑏 1

𝑥𝑑𝑥 = 𝑙𝑛𝑏 − 𝑙𝑛𝑎

求ax2+bx+c=0的根

Page 5: 科学计算与MATLAB语言download.ilovematlab.cn/meetup/2018CSU/MATLAB... · 科学计算方法既有数学理论上的抽象性和严谨 性,又有程序设计技术上的实用性和实验性。

当需要求解的问题变得复杂而用传统数学

方法无法求出精确解时,如何进行计算?

求定积分的问题

求一元方程根的问题

Page 6: 科学计算与MATLAB语言download.ilovematlab.cn/meetup/2018CSU/MATLAB... · 科学计算方法既有数学理论上的抽象性和严谨 性,又有程序设计技术上的实用性和实验性。

利用计算机运算速度快、计算精度高的特点,通过重

复执行简单的操作,完成复杂的计算。

求定积分的问题可以变成n个曲边梯形的面积求和

的问题。

求一元方程根的问题,可以采用很多逐渐逼近的

求解方法。

Page 7: 科学计算与MATLAB语言download.ilovematlab.cn/meetup/2018CSU/MATLAB... · 科学计算方法既有数学理论上的抽象性和严谨 性,又有程序设计技术上的实用性和实验性。

2 .什么是科学计算

利用计算机处理数值计算问题的方法,称为科学

计算(Scientific Computing)。

科学计算方法既有数学理论上的抽象性和严谨

性,又有程序设计技术上的实用性和实验性。

由于计算机对数值计算的推动和影响,科学计

算已成为继理论研究和科学实验之后的第三种

科学研究方法。

Page 8: 科学计算与MATLAB语言download.ilovematlab.cn/meetup/2018CSU/MATLAB... · 科学计算方法既有数学理论上的抽象性和严谨 性,又有程序设计技术上的实用性和实验性。

二、科学计算与MATLAB语言的关系

20世纪80年代以来,MATLAB等科学计

算软件的产生,使得科学计算问题变得十

分方便、高效。

Page 9: 科学计算与MATLAB语言download.ilovematlab.cn/meetup/2018CSU/MATLAB... · 科学计算方法既有数学理论上的抽象性和严谨 性,又有程序设计技术上的实用性和实验性。

使用MATLAB语言作为实现工具,人们不需要过多

了解各种数值计算方法的具体细节和计算公式,也

不需要繁琐的底层编程,从而可以专注于本专业问

题的分析和设计,大大地提高工作效率和质量,为

科学研究与工程应用提供重要手段。

Page 10: 科学计算与MATLAB语言download.ilovematlab.cn/meetup/2018CSU/MATLAB... · 科学计算方法既有数学理论上的抽象性和严谨 性,又有程序设计技术上的实用性和实验性。

求x2-3x+1=0的根。

直接利用求根公式

数值计算方法:迭代法、二分法、割线法

MATLAB解法

Page 11: 科学计算与MATLAB语言download.ilovematlab.cn/meetup/2018CSU/MATLAB... · 科学计算方法既有数学理论上的抽象性和严谨 性,又有程序设计技术上的实用性和实验性。

MATLAB方法一

>> p=[1,-3,1];

>> x=roots(p)

x=

2.6180

0.3820

求x2-3x+1=0的根。

Page 12: 科学计算与MATLAB语言download.ilovematlab.cn/meetup/2018CSU/MATLAB... · 科学计算方法既有数学理论上的抽象性和严谨 性,又有程序设计技术上的实用性和实验性。

>> x=-5:0.1:5;

>> y=x.*x-3*x+1;

>> plot(x,y,[-5,5],[0,0]);

Page 13: 科学计算与MATLAB语言download.ilovematlab.cn/meetup/2018CSU/MATLAB... · 科学计算方法既有数学理论上的抽象性和严谨 性,又有程序设计技术上的实用性和实验性。

MATLAB方法二

>> f=@(x)x*x-3*x+1;

>> x1=fzero(f,0.5)

x1=

0.3820

>> x2=fzero(f,2.5)

x2=

2.6180

Page 14: 科学计算与MATLAB语言download.ilovematlab.cn/meetup/2018CSU/MATLAB... · 科学计算方法既有数学理论上的抽象性和严谨 性,又有程序设计技术上的实用性和实验性。

MATLAB方法三

>> f=@(x) x*x-3*x+1;

>> x1=fsolve(f,0.5,optimset('Display','off'))

x1=

0.3820

>> x2=fsolve(f,2.5,optimset('Display','off'))

x2=

2.6180

Page 15: 科学计算与MATLAB语言download.ilovematlab.cn/meetup/2018CSU/MATLAB... · 科学计算方法既有数学理论上的抽象性和严谨 性,又有程序设计技术上的实用性和实验性。

MATLAB方法四

>> symsx

>> x=solve(x^2-3*x+1)

x=

3/2-5^(1/2)/2

5^(1/2)/2+3/2

>> x=eval(x)

x=

0.3820

2.6180

Page 16: 科学计算与MATLAB语言download.ilovematlab.cn/meetup/2018CSU/MATLAB... · 科学计算方法既有数学理论上的抽象性和严谨 性,又有程序设计技术上的实用性和实验性。

三、MATLAB的矩阵

MATLAB:MATrix LABoratory

数据皆矩阵

将二维矩阵看作一维矩阵

向量化编程是MATLAB的特征

Page 17: 科学计算与MATLAB语言download.ilovematlab.cn/meetup/2018CSU/MATLAB... · 科学计算方法既有数学理论上的抽象性和严谨 性,又有程序设计技术上的实用性和实验性。

(1)A*B的二义性

>> A=[1:3;3:5];

>> B=[1,2;3,4;5,6];

>> A*B

ans =

22 28

40 52

>> A.*B

矩阵维度必须一致。

Page 18: 科学计算与MATLAB语言download.ilovematlab.cn/meetup/2018CSU/MATLAB... · 科学计算方法既有数学理论上的抽象性和严谨 性,又有程序设计技术上的实用性和实验性。

什么情况下该用点乘运算?

当x=0.1、0.4、0.7、1时,分别求y=sinx cosx的值。

>> x=0.1:0.3:1;

>> y=sin(x)*cos(x)

错误使用 *

内部矩阵维度必须一致。

Page 19: 科学计算与MATLAB语言download.ilovematlab.cn/meetup/2018CSU/MATLAB... · 科学计算方法既有数学理论上的抽象性和严谨 性,又有程序设计技术上的实用性和实验性。

>> x=0.1:0.3:1;

>> y=sin(x).*cos(x)

y =

0.0993 0.3587 0.4927 0.4546

当x=0.1、0.4、0.7、1时,分别求y=sinx cosx的值。

Page 20: 科学计算与MATLAB语言download.ilovematlab.cn/meetup/2018CSU/MATLAB... · 科学计算方法既有数学理论上的抽象性和严谨 性,又有程序设计技术上的实用性和实验性。

(2)MATLAB矩阵按列存储

>> A=magic(5)

A =

17 24 1 8 15

23 5 7 14 16

4 6 13 20 22

10 12 19 21 3

11 18 25 2 9

按列存储

按行存储

Page 21: 科学计算与MATLAB语言download.ilovematlab.cn/meetup/2018CSU/MATLAB... · 科学计算方法既有数学理论上的抽象性和严谨 性,又有程序设计技术上的实用性和实验性。

>> A=magic(5)

>> max(A)

for n=[1,2,3,4,5]

n

end

for n=[1;2;3;4;5]

n

end等价吗?

Page 22: 科学计算与MATLAB语言download.ilovematlab.cn/meetup/2018CSU/MATLAB... · 科学计算方法既有数学理论上的抽象性和严谨 性,又有程序设计技术上的实用性和实验性。

isprime(m)

~sum(rem(m,2:sqrt(m))==0)

isempty(find(~rem(m,2:sqrt(m))))

all(rem(m,2:sqrt(m)))

factor(m)==m

length(factor(m))==1

(3)向量化编程

判断m是否素数

Page 23: 科学计算与MATLAB语言download.ilovematlab.cn/meetup/2018CSU/MATLAB... · 科学计算方法既有数学理论上的抽象性和严谨 性,又有程序设计技术上的实用性和实验性。

>> primes(100)

ans =

1 至 13 列

2 3 5 7 11 13 17 19 23 29 31 37 41

14 至 25 列

43 47 53 59 61 67 71 73 79 83 89 97

求[2,100]素数?

Page 24: 科学计算与MATLAB语言download.ilovematlab.cn/meetup/2018CSU/MATLAB... · 科学计算方法既有数学理论上的抽象性和严谨 性,又有程序设计技术上的实用性和实验性。

>> m=2:100;

>> m(isprime(m))

>> m(find(isprime(m)))

>> m(find(m.*isprime(m)))

>> m(find(~isprime(m)))=[]

>> m(~isprime(m))=[]

Page 25: 科学计算与MATLAB语言download.ilovematlab.cn/meetup/2018CSU/MATLAB... · 科学计算方法既有数学理论上的抽象性和严谨 性,又有程序设计技术上的实用性和实验性。

>> m(~isprime(m))=[]

m =

1 至 13 列

2 3 5 7 11 13 17 19 23 29 31 37 41

14 至 25 列

43 47 53 59 61 67 71 73 79 83 89 97

Page 26: 科学计算与MATLAB语言download.ilovematlab.cn/meetup/2018CSU/MATLAB... · 科学计算方法既有数学理论上的抽象性和严谨 性,又有程序设计技术上的实用性和实验性。

四、MOOC课程

10个专题

大量的应用案例

MATLAB功能实现的数学背景

与算法原理

Page 27: 科学计算与MATLAB语言download.ilovematlab.cn/meetup/2018CSU/MATLAB... · 科学计算方法既有数学理论上的抽象性和严谨 性,又有程序设计技术上的实用性和实验性。

中国大学MOOC

高手不觉其易,初学不觉其难

(学员的话)

第一期选课人数超过4万人

Page 28: 科学计算与MATLAB语言download.ilovematlab.cn/meetup/2018CSU/MATLAB... · 科学计算方法既有数学理论上的抽象性和严谨 性,又有程序设计技术上的实用性和实验性。

演讲视频下载地址:http://www.ilovematlab.cn/thread-538626-1-1.html