实验三
实验内容
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