实验6答案Matlab数值计算

  • 格式:doc
  • 大小:140.50 KB
  • 文档页数:14

实验6 Matlab数值计算

实验目的:

1、 掌握数据统计与分析的方法;

2、 掌握数据插值和曲线拟合的方法及其应用;

3、 掌握多项式的常用运算。

实验内容:

1. 利用randn函数生成符合正态分布的10×5随机矩阵A,进行如下操作:

(1) 求A的最大元素和最小元素;

(2) 求A的每行元素的和以及全部元素的和;

(3) 分别对A的每列元素按升序、每行元素按降序排列。

a = randn(10,5)+10;

ma = max(max(a))

mi = min(min(a))

s = sum(a,2)

sa = sum(sum(a))

p = sort(a)

p1 = -sort(-a,2)

2. 用3次多项式方法插值计算1-100之间整数的平方根。

N 1 4 9 16 25 36 49 64 81 100

平方根 1 2 3 4 5 6 7 8 9

10

n= (1:10).^2;

f = sqrt(n);

interp1(n,f,(1:100),'cubic')

3. 某气象观测站测得某日6:00-18:00之间每隔2h的室内外温度(°C)如下表所示。

时间 6 8 10 12 14 16 18

室内温度 18.0 20.0 22.0 25.0 30.0 28.0 24.0 室外温度 15.0 19.0 24.0 28.0 34.0 32.0 30.0

使用三次样条插值分别求出该日室内外6:30-17:30之间每隔2h各点的近似温度,并绘制插值后的温度曲线。

n= 6:2:18;

f1 = [18 20 22 25 30 28 24];

f2 = [15 19 24 28 34 32 30];

r = 6.5:2:17.5;

w = interp1(n,f1,r,'spline');

w1 = interp1(n,f2,r,'spline');

subplot(211),plot(r,w)

subplot(212),plot(r,w1)

4. 已知lgx在[1,101]区间10个整数采样点的函数值如下表所示,

x 1 11 21 31 41 51 61 71 81 91 101

lgx 0 1.0414 1.3222 1.4914 1.6128 1.7076 1.7853 1.8513 1.9085 1.9590 2.0043

试求lgx的5次拟合多项式p(x),并绘制lgx和p(x)在[1,101]区间的函数曲线。

x = linspace(1,101,10);

y = log(x) /log(10);

p = polyfit(x,y,5)

y1 = polyval(p,x)

plot(x,y,':o',x,y1,'-*')

legend('sin(x)','fit')

5. 有3个多项式(),(),()PxxxxPxxPxxx4322123245223,试进行下列操作:

(1) 求()()()()PxPxPxPx123。

(2) 求()Px的根。

(3) 当x取矩阵A的每一元素时,求()Px的值。其中:

.....A112140752350525

p1 = [1 2 4 0 5];

p2 = [0 0 0 1 2]; p3 = [0 0 1 2 3];

p = p1 +p2 +p3

r = roots(p)

a = [-1 1.2 -1.4;0.75 2 3.5;0 5 2.5];

s = polyval(p,a)

6. 求函数在指定点的数值导数。

(),,,fxxx21123

f = inline('sqrt(x.^2+1)');

x = 1:3;

dx = diff(f([x,4]))/1

7. 用数值方法求定积分。

(1)cossin()Ittdt22210421的近似值。

(2)ln()xIdxx122011

(1)I = inline('sqrt((cos(t)).^2+4*sin(2*t).^2+1)','t');

quad(I,0,2*pi)

(2)I = inline('log(1+x)./(1+x.^2)','x');

quad(I,0,1)

实验二 Matlab矩阵的初等运算

实验目的:掌握Matlab的运算方法

实验内容:

2.1 在Matlab命令窗口输入:

H1=ones(3,2) H2=zeros(2,3) H3=eye(4)

观察以上各输入结果,并在每式的后面标注其含义。

>> format compact

>> H1=ones(3,2),disp('3行2列的全1矩阵')

H1 =

1 1

1 1

1 1

3行2列的全1矩阵

>> H2=zeros(2,3),disp('2行3列的全零矩阵')

H2 =

0 0 0 0 0 0

2行3列的全零矩阵

>> H3=eye(4),disp('4阶的单位矩阵')

H3 =

1 0 0 0

0 1 0 0

0 0 1 0

0 0 0 1

4阶的单位矩阵 2.2 已知123456Q,789P,10R,3S,试把这四个矩阵组合为一个大矩阵,看看有几种组合方式?8

>> format compact

>> Q=[1 2 3;4 5 6];P=[7 8 9];R=[1;0]; S=3;

>> [Q,R;P,S]

ans =

1 2 3 1

4 5 6 0

7 8 9 3

>> [R,Q;P,S]

ans =

1 1 2 3

0 4 5 6

7 8 9 3

>> [Q,R;S,P]

ans =

1 2 3 1

4 5 6 0

3 7 8 9

>> [R,Q;S,P]

ans =

1 1 2 3

0 4 5 6 3 7 8 9

>> [S,P;R,Q]

ans =

3 7 8 9

1 1 2 3

0 4 5 6

>> [S,P;Q,R]

ans =

3 7 8 9

1 2 3 1

4 5 6 0

>> [P,S;R,Q]

ans =

7 8 9 3

1 1 2 3

0 4 5 6

>> [P,S;Q,R]

ans =

7 8 9 3

1 2 3 1

4 5 6 02.4 建立一个字符串向量,删除其中的大写字母。提示:利用find函数和空矩阵。

>> a='ABCDefgijKLMN123'

a =

ABCDefgijKLMN123

>> k=find(a>='A'&a<='Z')

k =

1 2 3 4 10 11 12 13

>> a(k)=[]

a =

efgij123

2.3 在命令窗中分别输入who和whos,观察检查结果是否与2.1-2.4所得结果相符。

>> who

Your variables are: H1 H2 H3 P Q R S a ans k

>> whos

Name Size Bytes Class Attributes

H1 3x2 48 double

H2 2x3 48 double

H3 4x4 128 double

P 1x3 24 double

Q 2x3 48 double

R 2x1 16 double

S 1x1 8 double

a 1x8 16 char

ans 3x4 96 double

k 1x8 64 double

2.5 已知矩阵131254709716282113S,计算以下表达式的结果,体会*,^,sqrtm,expm与.*,.^,sqrt,exp的区别。

(1) r1=S^2, r2=2.^S , r3=S.^2,

(2) u1=sqrtm(S), v1=u1*u1

(3) u2=sqrt (S), v2=u2.*u2

(4) u3=expm(S), v3=logm(u3)

(5) u4=exp(S), v4=log(u4)

>> S=[1 3 12 5;4 7 0 9;7 1 6 2;8 2 11 3]

S =

1 3 12 5

4 7 0 9

7 1 6 2

8 2 11 3

>> r1=S^2

r1 =

137 46 139 71

104 79 147 110

69 38 142 62