1. 多项式运算
【思考】
多项式的加、减运算在阶次相同的情况下可直接进行系数向量的加减;若两个多项式阶次不同,则低价多项式必须人工用零填补其对应的高阶系数,使其与高阶多项式有相同的阶次。问题是:能否通过编程的方式,实现任意两个多项式的自动加减运算?
——如何自动检测参与运算的两个多项式向量的阶次是否相同?
——若不同,如何在低阶多项式中自动用零(0)填补对应的高阶系数?
——并用多项式: x^2 + 2x + 3 和 x^4 + 3x^3 + 5x^2 + 7x + 9,进行测试。
答:
老师给的代码:
我写的代码:
X1=[1 2 3] % x^2 + 2*x + 3
X2=[1 3 5 7 9] % x^4 + 3*x^3 + 5*x^2 + 7*x + 9
if length(X1) == length(X2)
X3=X1+X2
elseif length(X1) > length(X2)
X3 =[zeros(1,(length(X1) - length(X2))), X2] + X1
else
X3 =[zeros(1,(length(X2) - length(X1))), X1] + X2
end
【练习】
求(S^2 + 1)(S+3)(S+1)/S^3 + 2*S+1的“商”及“余”多项式。
clear all, clc
M1 = [1 0 1]; M2 = [1 3]; M3 = [1 1];
Z = [1 0 2 1];
FM1 = conv(M1, M2), FM2 = conv(FM1, M3)
[k, r] = deconv(FM2, Z) % 商为k,余为r
【练习+】
- 已知一个多项式的根为 r= [ -5.5745 2.5836 -0.7951 0.7860 ] , 请编程写出此多项式。
r = [-5.5745, 2.5836, -0.7951, 0.7860]
f = poly(r) % 通过根构建多项式
- 已知 f(x)=x^4 + 3x^3 - 15x^2 - 2x + 9, 试编程绘制该函数在 [ 1, 10 ] 范围内的曲线。
f = [1, 3, -15, -2, 9]
r =roots(f) % 求多项式的根
x=1:10
y=polyval(f, x) % 根据表达式f求x对应的y
plot(x, y) % 绘图
2. 结构数组与单元数组
【练习1】
创建一结构数组stusorce,其域为:学号,姓名,英语成绩,数学成绩,语文成绩,总分,平均分。结构数组的大小为2×2。
stusorce = struct('number',{'08', '09'; '10', '11'}, 'name',{'Huo', 'Xiao'; 'HXX', 'hxx'}, 'EngSc',{100, 99; 98, 97}, 'MaSc',{98, 97; 99, 100}, 'ChSc',{96, 95; 98, 97},'Sc',{294, 291; 295, 294},'AvSc',{98, 97; 98.33, 98});
【练习2】
创建一大小为2×2 单元数组stucell,其元素的类型分别为:结构类型、字符串、矩阵和单元类型。
要求:
- 首先用cell函数创建空单元数组 K
- 通过单下标为 第1个单元(名称)赋值一个结构体数据(如,student)
- 通过双下标为 第2个单元(名称)赋值一个字符串(如,“student”)
- 通过单下标为 第3个单元(内容) 赋值一个矩阵(如,[1:5;6:10])
- 通过双下标为 第4个单元(内容)赋值一个单元类型数据(如,C)
- 分别用celldisp和cellplot函数查看单元数组K的内容。
- 分别通过单下标和双下标方式引用K中第3个单元中的元素:9
答:
clc, clear all
K =cell(2 , 2); % 创建空单元数组 K
student = struct('number',{'01', '02'},'name',{'Jack', 'Lucy'}); % 结构体
K(1) = {student}; % 单下标赋值
K(2, 1) = {'student'}; % 字符串
K(3) = {[1:5; 6:10]}; % 矩阵
C=cell(1,2); % 单元类型数据
K(2, 2) = {C}; % 双下标赋值
celldisp(K)
cellplot(K)
K{1, 2}(2, 4)
法一:
法二:
% 或:直接创建
clc, clear all
stucell ={struct('number',{'01', '02'},'name',{'Jack', 'Lucy'}), [1:5; 6:10]; 'student', cell(1, 2)}
celldisp(stucell)
cellplot(stucell)
stucell{1, 2}(2, 4)