• MATLAB 矩阵处理及多项式计算


     

    一、实验目的

    (1)掌握生成特殊矩阵以及矩阵处理的方法

        (2)掌握数据统计和分析的方法

    (3)掌握多项式的常用计算

    二、实验原理与实验设备

    原理计算机编程相关知识技能和MATLAB软件编译环境

    设备:计算机与MATLAB软件

    三、MATLAB矩阵处理

    设有分块矩阵A=E3×3R3×2O2×3S2×2,其中E、R、O、S分别为单位矩阵、随机矩阵、零矩阵、和对角阵,试通过数值计算验证A2=ER+RSOS2

    clear;

    clc;

    B = eye(3);

    C = rand(3,2);

    D = zeros(2,3);

    E = rand(1,2);

    F = diag(E);

    A = [B C;D F];

    G = A * A

    H = [B C+C*F;D F*F]

    if G == H

        fprintf("\t由结果可知:G = H,也即验证成功\n")

    end

    四、数据分析与多项式计算

    1. 利用MATLAB提供的rand函数生成30000个符合均匀分布的随机数,然后检验随机数的性质。
    1. 均值和标准差
    2. 最大元素和最小元素
    3. 大于0.5的随机数个数占总数的百分比

    clear;

    clc;

    x = rand(1,30000);

    average = mean(x)

    SD = std(x)

    y = length(find(x>0.5));

    P = y/30000

    1. 将100个学生5门功课的成绩存入矩阵P中,进行如下处理。
    1. 分别求每门课的最高分、最低分及相应学生序号。
    2. 分别求每门课的平均分和标准差
    3. 5门课总分的最高分、最低分及相应学生序号。
    4. 将5门课总分按从大到小顺序存入变量score中,相应学生序号存入num。

    为了避免输入学生成绩的麻烦,可用取值范围在[45,95]之间的随机矩阵来表示学生成绩。

    clear;

    clc;

    random_num = 45+50*rand(100,5);

    P = fix(random_num);

    [max_score,max_score_num] = max(P)

    [min_score,min_score_num] = min(P)

    average = mean(P)

    SD = std(P)

    A = sum(P,2);

    [all_max_score,all_max_score_num] = max(A)

    [all_min_score,all_min_score_num] = min(A)

    [score,num] = sort(A)

    1. 有3个多项式P1x=x4+2x3+4x2+5, P2x=x+2, P3x=x2+2x+3,试进行下列操作
    1. 求P(x)=P1(x)+P2(x)P3(x)
    2. 求P(x)的根
    3. 当x取矩阵A的每一元素时,求p(x)的值。矩阵A见下
    4. 当以矩阵A为自变量时,求P(x)的值。矩阵A见下

    A=-11.2-1.40.7523.5052.5

    clc;

    p1 = [1,2,4,0,5];

    p2 = [1,2];

    p3 = [1,2,3];

    p2 = [0,0,0,p2];

    p3 = [0,0,p3];

    p4 = conv(p2,p3);

    num_p4 = length(p4);

    num_p1 = length(p1);

    p = [zeros(1,num_p4-num_p1),p1]+p4

    x = roots(p)

    A = [-1 1.2 -1.4;0.75 2 3.5;0 5 2.5];

    X1 = polyval(p,A)

    X2 = polyvalm(p,A)

    1. 采用interp1对y=sin(x)进行分段性插值,并绘制出图像。

    clear;

    clc;

    x = -2*pi:0.5:2*pi;

    y = sin(x);

    z = -2*pi:0.2:2*pi;

    y1=interp1(x,y,z);

    figure

    plot(x,y,'*',z,y1,'c')

    title('分段性插值')

    五、画图

    1:按要求做出下面函数的图像

    1. 绘制f1(x)=e2xsin2x ,x∈(-π,π)的图像
    2. 绘制隐函数f2(x, y)=x2-x4=0 ,x∈(-,)上的图像
    3. 绘制下面参数曲线的图像。

    x=etcosty=etsint    t∈(-,)

    clear;

    clc;

    x = -pi:0.1:pi;

    f1 = exp(2*x.*sin(2*x));

    figure

    subplot(2,2,1)

    plot(x,f1,'c')

    title('exp(2*x.*sin(2*x))')

    subplot(2,2,2)

    ezplot('x*x-x*x*x*x',[-2*pi,2*pi])

    subplot(2,1,2)

    ezplot('exp(t)*cos(t)','exp(t)*sin(t)',[-4*pi,4*pi])

    2:分别用plot3()、mesh()、meshc()画出下面函数的曲面图形 并添加标题

    z=cosx2+y2     -5x,y5

    clear;

    clc;

    x1 = -5:0.1:5;

    y1 = -5:0.1:5;

    z1 = cos(sqrt(x1.*x1+y1.*y1));

    figure

    subplot(2,1,1)

    plot3(x1,y1,z1,'c')

    title('plot3(x,y,z)')

    subplot(2,2,3)

    x2 = -5:0.1:5;

    y2 = -5:0.1:5;

    [x,y]=meshgrid(x2,y2);

    z2 = cos(sqrt(x.*x+y.*y));

    mesh(x,y,z2)

    title('mesh(x,y,z)')

    subplot(2,2,4)

    meshc(x,y,z2)

    title('meshc(x,y,z)')

    五、实验总结

    请简单对实验进行总结,阐述MATLAB在矩阵计算中的优势。

    本次实验我掌握了用MATLAB生成特殊矩阵以及矩阵处理的方法,掌握了用MATLAB进行数据统计和分析的方法,掌握了用MATLAB进行多项式的常用计算。

    MATLAB在矩阵中计算快的主要原因是因为MATLAB集合了非常多的高性能数学库,这里面有BLAS、LAPACK等矩阵运算库。同时,用MATLAB做矩阵运算的运算符号与我们日常书写的符号非常相似,不需要像python和c语言那样要专门写代码。

    综上所述,MATLAB在矩阵计算中的优势是非常明显的。

    指导教师批阅意见:

    成绩评定:

    实验报告规范性、撰写形式与质量(15%)

    现场完成情况(40%)

    实验数据和处理分析(30%)

    思考题与实验总结(15%)

    总分

                                                        批阅教师签字:

                                                        年    月    日

    备注:

  • 相关阅读:
    Spring之bean对象
    【Zookeeper】ZooKeeper的一些重要功能和作用
    「Java开发指南」如何用MyEclipse搭建Spring安全策略?
    Visual Studio System.Diagnostics.Debug卡顿问题
    蓝桥杯嵌入式AD采样解析
    docker 存储挂载比较
    线程的状态和方法
    EXPLIAN查询type
    Java 并发编程解析 | 如何正确理解Java领域中的多线程模型,主要用来解决什么问题?
    携职教育:不容易啊,我的软考高项经验分享
  • 原文地址:https://blog.csdn.net/weixin_62135607/article/details/127953219