【Matlab作业】MATLAB数值基础

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

在这里插入图片描述

【练习+】

  1. 已知一个多项式的根为 r= [ -5.5745 2.5836 -0.7951 0.7860 ] , 请编程写出此多项式。
r = [-5.5745, 2.5836, -0.7951, 0.7860]
f = poly(r) % 通过根构建多项式

在这里插入图片描述

  1. 已知 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,其元素的类型分别为:结构类型、字符串、矩阵和单元类型。
要求:

  1. 首先用cell函数创建空单元数组 K
  2. 通过单下标为 第1个单元(名称)赋值一个结构体数据(如,student)
  3. 通过双下标为 第2个单元(名称)赋值一个字符串(如,“student”)
  4. 通过单下标为 第3个单元(内容) 赋值一个矩阵(如,[1:5;6:10])
  5. 通过双下标为 第4个单元(内容)赋值一个单元类型数据(如,C)
  6. 分别用celldisp和cellplot函数查看单元数组K的内容。
  7. 分别通过单下标和双下标方式引用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)

在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不雨_亦潇潇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值