2016年秋matlab期中大作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2016年秋matlab 期中大作业(40分,共5道题,每题8分)
姓名:党朴成 学号: 1151200218 学院:理学院
专业:数学系
1. 解线性方程 (第二章线性方程)
⎪⎩⎪⎨⎧=++=++=++10
5481272x 6963x 恰定方程z y x z y z y 和 ⎪⎪⎩⎪⎪⎨⎧=-+=++=++=++
6
321054812726963超定方程z y x
z y x
z y x
z y x (1)分别求上两个系数矩阵的行列式det 、逆inv 、伪逆pinv (2)分别采用左除法、逆乘法和伪逆乘法求解;
(3) 对比两个方程,解释逆乘法和伪逆乘法区别。
(8分)
>> run('C:\Users\Administrator\Desktop\question_1.m') A1_det = 108 A1_inv =
-0.1667 0.0833 0.0833 0.2407 -0.3981 0.2685 0.0741 0.1852 -0.1481
A1_pinv =
-0.1667 0.0833 0.0833 0.2407 -0.3981 0.2685
0.0741 0.1852 -0.1481
A2_pinv =
-0.1659 0.0724 0.0925 -0.0086
0.2207 -0.1232 0.0377 0.2168
0.0836 0.0547 -0.0386 -0.1028 x1_1 =
0.3333
0.0741
1.4074
x1_2 =
0.3333
0.0741
1.4074
x1_3 =
0.3333
0.0741
1.4074
x2_1 =
0.2492
2.1857 0.4057 x2_3 =
0.2492 2.1857 0.4057
逆乘法和伪逆乘法的区别:如果矩阵A 不是一个方阵,或者A 是一个非满秩的方阵时,矩阵A 没有逆矩阵,伪逆函数在求解这种系数矩阵为严重病态问题时可避免“伪解”的产生,即找到一个与A 的转置矩阵A ‘同型的矩阵B ,使得:A ·B ·A=A ;B ·A ·B=B ;此时称矩阵B 为矩阵A 的伪逆,也称为广义逆矩阵。
从结果中的可看出逆矩阵和伪逆矩阵区别在于如果方阵行列式为零,得到的结果不同。
方阵行列式不为零,逆矩阵和伪逆矩阵的计算值相同,反之则不同
2. 四个矩阵a 、b 、c 和d ,求matlab 运算 (第二章矩阵数组运算)
2936a ⎛⎫= ⎪
⎝⎭,
8714b ⎛⎫= ⎪⎝⎭,275294c ⎛⎫ ⎪
=- ⎪ ⎪-⎝⎭,5201031d -⎛⎫
= ⎪-⎝⎭ (1) 哪些矩阵可以做加法运算(至少3个)
Ab,c’d,cd’
(2) 哪些可以点乘数组运算(至少3个)
Ab,c’d,cd
(3) 哪些可以矩阵乘法运算(至少3个)
Ab,ad,bd
(4) 说明数组运算和矩阵运算的特点。
(8分)
>> a = [2,9;3,6];
b = [8,7;1,4];
c = [2,7;5,-2;-9,4];
d = [5,-2,0;10,3,-1]
d =
5 -2 0
10 3 -1
>> a_b = a+b
a_b =
10 16
4 10
>> aabb = a.*b
aabb =
16 63
3 24
>> ab = a*b
ab =
25 50
30 45
>> ad = a*d
ad =
100 23 -9
75 12 -6
>> bd = b*d
bd =
110 5 -7
45 10 -4
只有维数相同的矩阵才能进行加、减、点乘、点除运算。
注意只有当两个矩
阵中前一个矩阵的列数和后一个矩阵的行数相同时,才可以进行乘法运算。
a\b运算等效于求a*x=b的解;而a/b等效于求x*b=a的解。
只有方阵才可以求幂
3. 已知计算分段函数
220
()x/sin(x)011
1111
x x x
f x x
x
⎧-+≤
⎪
=<≤
⎨
⎪-<
⎩
(第三章编程,条件语句)
(1)要求采用条件语句if编写脚本文件和函数文件计算分段函数文件;
(2)x由input指令从键盘给出,数据的输出f(x)值采用fprintf('f=%e',f)
(3)运行脚本文件计算x=-1的f值和运行函数文件计算x=5的f值
(4)说明脚本文件和函数文件区别
脚本文件
x = input('x =');
if x<=0
f = x^2-x+2;
elseif x>11
f = -11;
else
f = x/sin(x);
end
fprintf('f=%e',f);
>> fx
x =-1
f=4.000000e+00>>
>> fx
x =5
f=-5.214176e+00>>
函数文件
function f= fenduan(x)
if x<=0
f = x^2-x+2;
elseif x>11
f = -11;
else
f = x/sin(x);
end
fprintf('f=%e',f);
>> fenduan(-1); f=4.000000e+00>> >> fenduan(5);
f=-5.214176e+00>>
脚本式M 文件:无函数定义行;无输入和输出量,也不一定要返回结果。
在base workspace 中数据操作,运行后变量驻留其中;全局变量
函数式M 文件:有函数定义行;可有输入和输出变量,并有返回结果;中间变量存在临时工作空间,它随函数结束而删除;局部变量,除特别声明
4. 多项式运算 (第四章多项式) 已知:第一个多项式是 (1) 表示多项式p1=[] (2) 采用roots 求根
(3) 采用polyval 求x=6时y 值 (4) 采用polyder 对多项式一阶求导 (5) 采用polyint 对多项式不定积分 已知第二个多项式为 (6) 求两个多项式的乘积conv (p1,p2) (7) 求两个多项式的除法deconv (p1,p2)
>> p1 = [1,0,0,4,5]; >> r = roots(p1) r =
1.0987 + 1.4551i 1.0987 - 1.4551i -1.0987 + 0.5449i -1.0987 - 0.5449i
>> y = polyval(p1,6) y =
y =x 4
+ 4 x + 5 y=x 3
+ 3 x 2 + 5
1325
>> pd = polyder(p1)
pd =
4 0 0 4
>> pn = polyint(p1)
pn =
0.2000 0 0 2.0000 5.0000 0
>> p2 = [1,3,0,5];
>> p1p2 = conv(p1,p2)
p1p2 =
1 3 0 9 17 15 20 25
>> dp1p2 = deconv(p1,p2)
dp1p2 =
1 -3
5.第四章差值拟合
某年美国旧车价格的调查资料如下表,其中xi表示轿车的使用年数,yi表示相应的平均价格。
(1)2次多项式拟合(polyfit)
(2)采用2次拟合多项式预测每隔0.5年的价格(polyval),再用插值法
(interpl)预测一下;
(3)绘制年数-价格曲线,要求用plot不同线型(LineSpec)绘制原始数据
点、插值数据和2次多项式曲线,标注坐标轴为‘年份’和‘价格’(xlabel、
ylabel)、图形标题(title)为‘插值’,以及标注图例legend,说明插值
和拟合的特点
x i 1 2 3 4 5 6 7 8 9 10 y i2615 1943 1494 1087 765 538 484 290 226 204
>> x = 1:10;
>> y = [2615,194,149,1087,76,53,48,29,22,20];
>> p2 = polyfit(x,y,2)
p2 =
1.0e+03 *
0.0460 -0.6775 2.3845
>> xi = [1:0.5:10];
>> yi1 = polyval(p2,xi)
yi1 =
1.0e+03 *
1 至13 列
1.7530 1.4718 1.2136 0.9783 0.7661 0.5768 0.4106 0.2673 0.1471 0.0498 -0.0244 -0.0757 -0.1039
14 至19 列
-0.1092 -0.0915 -0.0507 0.0130 0.0997 0.2095
>> yi2 = interp1(x,y,xi)
yi2 =
1.0e+03 *
1 至13 列
2.6150 1.4045 0.1940 0.1715 0.1490 0.6180 1.0870 0.5815 0.0760 0.0645 0.0530 0.0505 0.0480
14 至19 列
0.0385 0.0290 0.0255 0.0220 0.0210 0.0200
>> plot(x,y,'or',xi,yi1,'-*k', xi,yi2,'-dg');
legend('原始数据','2阶多项式拟合曲线','插值曲线') ;
xlabel('年份');ylabel('价格');
title('插值')
相同点:都需根据已知数据构造函数;可用得到函数计算未知点值。
不同点:插值构造函数必须通过已知点;拟合则不要求,只要均方差最小。