实验三

实验内容

1、程序实现 “为使20 的1/2次幂的近似值 x 的相对误差限不超过0.5%, x 应取几位有效数字?”。
2、实现多项式的加法(不能直接使用polyadd等指令,一个语句实现,多项式的加法需要对齐阶次,需要在程序中有所体现)。
3、实现 9x9 乘法表并打印结果。
4、

铅 芯
直 径
(mm)
橡胶剪
切模量
(MPa)
橡胶与
加劲层
厚度比
橡 胶
层 数
合计功
效系数
1 50 0.4 1.5 9 0.794
2 50 0.5 2 10 0.762
3 50 0.6 2.5 11 0.725
4 55 0.4 2 11 0.811
5 55 0.6 3 9 0.736
6 55 0.7 2.5 10 0.761
7 60 0.4 2.5 12 0.821
8 60 0.5 3 11 0.781
9 60 0.6 1.5 10 0.857
10 60 0.7 2 9 0.829
根据上述数据逐列绘图并界定线型和线条颜色
5、从如下网址自行寻找一个数据集https://archive.ics.uci.edu/ml/index.php,通过查找资料,给出你选择数据集的描述。利用数据集绘图 (二维和三维绘图,有余力加入高阶数据的可视化技术)。


实验综述

本实验均基于 MATLAB 2019b 版本

安装MATLAB 2019b 点击查看

实验过程

程序实现 “为使20 的1/2次幂的近似值 x 的相对误差限不超过0.5%, x 应取几位有效数字?”

实验代码
clc,clear,close;
format long
sum =  20^0.5;
err = 5e-3;
d1 = floor(sum);
n = ceil(-log10((err*(d1+1))/5));
sum1 = fix(sum*10^(n-1))/10^(n-1);
a = (sum - sum1)/sum1;
sprintf('有效数字为%2d%位时', n)
sprintf('相对误差限为%2.2f%%<0.5%%',a*100)
实验效果

实现多项式的加法(不能直接使用polyadd等指令,一个语句实现,多项式的加法需要对齐阶次,需要在程序中有所体现)

实验代码
function[poly]=exp_3_2(poly1,poly2)
if length(poly1)<length(poly2)%判断俩个多项式位数
    short=poly1;
    long=poly2;
else
    short=poly2;
    long=poly1;
end
poly=[zeros(1,length(long)-length(short)),short]+long;%给少的多项式部位做加法
实验效果

实现 9x9 乘法表并打印结果

实验代码
clc,clear,close;
for i = 1:9
   for j = 1:i
       fprintf('%d * %d = %d\t',j,i,i*j);
   end
   fprintf('\n');
end
实验效果


铅 芯
直 径
(mm)
橡胶剪
切模量
(MPa)
橡胶与
加劲层
厚度比
橡 胶
层 数
合计功
效系数
1 50 0.4 1.5 9 0.794
2 50 0.5 2 10 0.762
3 50 0.6 2.5 11 0.725
4 55 0.4 2 11 0.811
5 55 0.6 3 9 0.736
6 55 0.7 2.5 10 0.761
7 60 0.4 2.5 12 0.821
8 60 0.5 3 11 0.781
9 60 0.6 1.5 10 0.857
10 60 0.7 2 9 0.829
根据上述数据逐列绘图并界定线型和线条颜色

实验代码
clc,clear,close;
f = [1 2 3 4 5 6 7 8 9 10];
d = [50 50 50 55 55 55 60 60 60 60];
qml = [0.4 0.5 0.6 0.4 0.6 0.7 0.4 0.5 0.6 0.7];
csb = [1.5 2 2.5 2 3 2.5 2.5 3 1.5 2];
cs = [9 10 11 11 9 10 12 11 10 9];
xs = [0.794 0.762 0.1725 0.811 0.736 0.761 0.821 0.781 0.857 0.829];
plot(f,d/10,'-*r',f,qml,'-*m',f,csb,'-*g',f,cs,'-xb',f,xs,'-co')
xlabel('方案号')
legend('直径cm','剪切模量MPa','层厚比','橡胶层数','功效系数')
grid on
实验效果

从如下网址自行寻找一个数据集https://archive.ics.uci.edu/ml/index.php,通过查找资料,给出你选择数据集的描述。利用数据集绘图 (二维和三维绘图,有余力加入高阶数据的可视化技术)

实验代码
%% 程序说明
%  作者:
%  简介:程序2013年3月1日到2017年2月28日某一天0~24小时北京空气质量的动态柱状图
%  nian表示要查询的年份,月表示查询的月份,ri表示要查询的天
%  数据来源 https://archive.ics.uci.edu/ml/datasets/Beijing+Multi-Site+Air-Quality+Data#
%  text.csv为数据文件,需要将数据和程序放在一个文件夹内

%% 程序部分
clc,clear,close,clf;
nian = 2014;    %修改年份
yue = 2;        %修改月份
ri = 9;         %修改日期
%  导入文件数据
opts = delimitedTextImportOptions("NumVariables", 6);
opts.DataLines = [2, Inf];
opts.Delimiter = ",";
opts.VariableNames = ["PM25", "PM10", "SO2", "NO2", "CO", "O3"];
opts.VariableTypes = ["double", "double", "double", "double", "double", "double"];
opts.ExtraColumnsRule = "ignore";
opts.EmptyLineRule = "read";
tbl = readtable("text.csv", opts);
PM25 = tbl.PM25;
PM10 = tbl.PM10;
SO2 = tbl.SO2;
NO2 = tbl.NO2;
CO = tbl.CO;
O3 = tbl.O3;
clear opts tbl
%% 核心代码
%判断输入的日期
shi = 0;
if rem(nian,4)==0
    n = 366;
else
    n = 365;
end
if yue == 1||yue == 3||yue == 5||yue == 7||yue == 8||yue == 10||yue == 12
    k = 31;
elseif yue == 2
    if rem(nian,4)==0
        k = 29;
    else
        k = 28;
    end
else
    k = 30;
end
days = (nian - 2013)*n +(yue - 1)*k + ri;
days = (days-1)*24 +1;
%设置边框和标题
tit = [num2str(nian),'年',num2str(yue),'月',num2str(ri),'日',num2str(shi),'时北京空气质量数据动态图'];
title(tit);
ylabel('ug/m^3');
box on;
%导入查询当天24小时的数据
for i = days:days+23
    yp(i,1) = {[PM25(i),PM10(i),SO2(i),NO2(i),O3(i)]};
end
%循环绘图
for i = days:days+23
    cla;
    hold on;
    name = {'PM2.5' 'PM10' 'SO2' 'NO2' 'O3'};
    bar(yp{i,1});
    set(gca,'XTick',1:5);
    set(gca, 'XTickLabel', name);
    shi = shi+1;
    if shi == 24
       ri = ri+1;
       shi = 0;
    end
    tit = [num2str(nian),'年',num2str(yue),'月',num2str(ri),'日',num2str(shi),'时北京空气质量数据动态图'];
    title(tit);
    pause(0.5);
    %生成gif文件保存
    frame=getframe(gcf);
    imind=frame2im(frame);
    [imind,cm] = rgb2ind(imind,256);
    if i==1
         imwrite(imind,cm,'test.gif','gif', 'Loopcount',inf,'DelayTime',1e-4);
    else
         imwrite(imind,cm,'test.gif','gif','WriteMode','append','DelayTime',1e-4);
    end
end
实验效果