MATLAB实习报告模板-11级

时间:2024.3.31

                            

南京工程学院

实习说明书(论文)

              

课 程 名 称           MATLAB实习       

院(系、部、中心)   计算机工程学院       

专       业        电子信息科学与技术     

班       级            电科技              

学 生 姓 名                                

学       号                                

实 习 地 点            信息楼A421          

指 导 教 师          刘  勤   王桂珍       

实习起止时间:20##年9月17 日至20##年9月28日


五、收获与体会

2.不足与改进

成绩评定:


实习报告应包括的主要内容有:

一、实习目的

二、实习内容及实现

实习包括8个实训内容

实训1  MATLAB语言环境

实训2  MATLAB数值计算

实训3  MATLAB符号计算

实训4  MATLAB计算的可视化

实训5  MATLAB程序设计

实训6  Simulink建模与仿真

*实训7  MATLAB的工程应用

实训8  GUI界面设计

每个实训内容中应包含如下内容:

1.设计思想说明(简述相应的知识点); 

2.程序清单(手写、程序代码必须有注释)或图(可打印)

3.运行结果(可打印)

4.运行结果分析(所遇问题及问题解决)。

三、综合系统设计及实现

本部分应包含如下内容:

1.设计思想说明

2.程序清单(手写、程序代码必须有注释)或图(可打印)

3.测试结果(可打印)

4.测试结果分析(所遇问题及问题解决)。

四、参考文献

(参考文献要求5本以上,其格式如下)

[1] 郑阿奇.MATLAB实用教材(第3版)[M].电子工业出版社,20##年

[2] MATLAB实习指导书.自编讲义,20##年

[3]

[4]

[5]

五、实习收获和体会

实习收获以及对设计成果做出评价,说明本设计的特点和存在问题,提出改进意见;


第二篇:MATLAB实习报告-1


MATLAB

--实习报告


班级:******

姓名:**

学号:***********

指导老师:***

日期:2011/11/24

目录

一.         MATLAB简介... 3

二.         上机实习题目... 3

1.         第2章第1题... 3

2.         第3章第2题... 3

3.         第5章第2题... 3

4.         第4章第1题... 4

三.         题目实现过程... 4

1.         牛顿插值以及三次样条插值(第一个实验题)... 4

a.牛顿插值... 4

b.三次样条插值... 4

c.牛顿插值截图... 5

d.三次样条插值截图... 6

2.         3次,4次多项式的曲线拟合... 7

a.先输入表格中对应的数据, . 7

b.3次拟合... 7

c. 3次拟合截图... 8

d. 4次拟合... 9

e. 4次拟合截图... 9

3.         高斯消去法解线性方程组... 10

a.         高斯消去法源代码... 10

b.         第一个小题... 11

c.         第二个小题... 12

4.         雅克比迭代法与SOR方法... 13

a. 雅克比迭代法的计算公式... 13

b. 超松弛迭代法的计算公式... 13

c.得到希尔矩阵... 13

d.得到b矩阵... 13

e.雅克比迭代法实现的函数... 13

f.SOR迭代法实现的函数... 14

g.对于雅克比迭代法,通过执行以下代码... 15

h. 对于SOR迭代法,执行相对应代码... 15

四.         心得与感想... 18

一.MATLAB简介

MATLAB是一个软件,用来进行科学计算。在实际生活或者在科学研究中,大量的计算有时候是不可避免的,在这个时候,我们可以选择很多种方式来解决我们的问题。但是选择一个好的软件对于我们来说有时候却是非常困难的,尤其是现在各种软件层出不穷,当然里面有好的,可是有大多数的软件却是鱼目混珠,在里面滥竽充数。如果我们不避开这些,那么我们可能面临的是用很大的工作量来完成一个极其简单的问题,或者说在付出了时间与精力之后却完不成问题。所以必须选择一个好的计算软件来解决问题。MATLAB就是这样一个软件,在你能够熟悉并且流畅运用它之后,那它将是一把能够解决很多问题的钥匙。

MATLAB是Matrix Laboratory,即矩阵实验室的缩写。它是一个有Math Work公司(由Moler,Little,Bangert在1984年在加利福利亚成立)开发的软件包。用来实现数值计算或者符号操作。

另外MATLAB还拥有M-file这一功能,在这里面你可以编写自己的程序(当然这个程序不是windows程序),在这里你就可以实现很多计算,虽然说MATLAB自带的函数在大多数情况下已经够用,但是总会有某些时候你觉得自己编写的程序运用起来更加灵活,而且在一些具体问题的时候,这个优势将会是一大突破,可以让我们很轻松解决很多问题。除了自己编写外,MATLAB自带的很多优秀的程序,如plot(绘图)函数,cond(求矩阵条件数)函数,关于矩阵的一些相关函数,都是相当经典的。

总之,熟悉使用MATLAB可以让我们的工作变得很简单,经过这次的学习,我们以后的很多学习工作问题都可以很方便地解决了。

二.上机实习题目

1.  第2章第1题

已知函数在下列各点的值为

试用4次牛顿插值多项式及三次样条函数(自然边界条件)对数据进行插值。用图给出

2.  第3章第2题

由实验给出数据表

试用3次,4次多项式的曲线拟合,再根据数据曲线形状,求另外一个函数的拟合曲线,用图示数据曲线及相应的三种拟合曲线。

3.  第5章第2题

用列主元高斯消去法解线性方程组

(1);

(2).

分别输出,解向量,(1)中A的条件数。分析比较(1),(2)。

4.  第4章第1题

给出线性方程组,其中系数矩阵为希尔伯特矩阵:

假设。若取,分别用雅克比迭代法及SOR迭代法求解。比较计算结果。

三.题目实现过程

下面开始进行计算:

1.  牛顿插值以及三次样条插值(第一个实验题)

此题要求利用给定点,及给定点的函数值进行牛顿插值以及三次样条插值。

a.牛顿插值

要实现牛顿插值,要用到以下代码

% 调用格式:yi=Lagran_(x,y,xi)

% x,y 数组形式的数据表

function fi=Lagran_(x,f,xi)

fi=zeros(size(xi));               

np1=length(f);

for i=1:np1

    z=ones(size(xi));

    for j=1:np1

        if i~=j,z=z.*(xi-x(j))/(x(i)-x(j));end

    end

    fi=fi+z*f(i);

end

b.三次样条插值

        要实现三次样条插值,要用到以下代码

function S=csfit(X,Y,dx0,dxn)             

N=length(X)-1;

H=diff(X); 

D=diff(Y)./H;

A=H(2:N-1);

B=2*(H(1:N-1)+H(2:N)); 

C=H(2:N); 

U=6*diff(D);

B(1)=B(1)-H(1)/2;

U(1)=U(1)-3*(D(1));

B(N-1)=B(N-1)-H(N)/2;

U(N-1)=U(N-1)-3*(-D(N));      

for k=2:N-1

    temp=A(k-1)/B(k-1);

    B(k)=B(k)-temp*C(k-1);    

    U(k)=U(k)-temp*U(k-1); 

end 

M(N)=U(N-1)/B(N-1);

for k=N-2:-1:1

    M(k+1)=(U(k)-C(k)*M(k+2))/B(k);

end

M(1)=3*(D(1)-dx0)/H(1)-M(2)/2;

M(N+1)=3*(dxn-D(N))/H(N)-M(N)/2;

for k=0:N-1

    S(k+1,1)=(M(k+2)-M(k+1))/(6*H(k+1));

    S(k+1,2)=M(k+1)/2;

    S(k+1,3)=D(k+1)-H(k+1)*(2*M(k+1)+M(k+2))/6;

    S(k+1,4)=Y(k+1);

end 

c.牛顿插值截图

在输入对应的两个数组后,首先进行4次牛顿插值,下面是运行截图

然后根据结果绘图

d.三次样条插值截图

首先得到的是三次样条插值后的多项式系数矩阵,然后利用polyval()函数计算在对应点的值,

并且通过绘图函数将结果表示在图像上面,

通过与上面的牛顿插值所得到的图像进行比较,可以发现,利用三次样条插值得到的结果更加的精确。

2.  3次,4次多项式的曲线拟合

a.先输入表格中对应的数据,

然后首先通过调用plot()函数,绘图

b.3次拟合

通过以下代码

>> x

x =

0    0.1000    0.2000    0.3000    0.5000    0.8000    1.0000

>> y

y =

1.0000    0.4100    0.5000    0.6100    0.9100    2.0200    2.4600

>> s1 = polyfit(x, y, 3);

>> temp = 0:0.001:1;

>> y_temp = zeros(size(temp));

>> y_temp = polyval(s1, temp);

>> hold on;

>> plot(temp, y_temp)

c. 3次拟合截图

可以得到下面的截图,这是看到3次拟合后的多项式与原来的图形比较

d. 4次拟合

通过下面代码

>> x

x =

0    0.1000    0.2000    0.3000    0.5000    0.8000    1.0000

>> y

y =

1.0000    0.4100    0.5000    0.6100    0.9100    2.0200    2.4600

       >> s2 = polyfit(x, y, 4);

>> y_temp = polyval(s2, temp);

>> hold on;

>> plot(temp, y_temp, 'r')

e. 4次拟合截图

通过进行4次拟合,我们会感觉不同,从图像上可以看出(不同次数的拟合在图像上用不同的颜色标示出来以便观察,其中3次拟合是蓝色,4次的是红色)

以上都是用多项式进行拟合,下面代码用一个线性函数来进行拟合

>> xmean = mean(x);

>> ymean = mean(y);

>> sumx2 = (x - xmean) * (x - xmean)';

>> sumxy = (y - ymean) * (y - ymean)';

>> A = sumxy / sumx2;

>> B = ymean - A * xmean;

>> temp = 0:0.01:1;

>> y_temp = A * temp + B;

>> plot(temp, y_temp, 'green')

的到下图其中绿色的线是这次拟合的结果,很明显,误差很大

在进行解决这个题目时候用的拟合函数是MATLAB自带的拟合函数polyfit(),这里是多项式拟合。polyfit()函数得到的是一个矩阵,然后运用另一个MATLAB自带的函数polyval()来进行计算给定点的函数值。

到这里这一题完成。

3.  高斯消去法解线性方程组

对于这道题目,要求用高斯消去法解两个线性方程组,所以利用MATLAB的M-file编写一个文件便可以解决两个小题。

而高斯消去法的核心是逐渐利用消去法是原来的系数矩阵变成一个上三角矩阵。然后一个迭代便可以解出方程的每一个解。

a.  高斯消去法源代码

function X = p178_2_GAUSS(A, b)

[n, m] = size(A);

X = zeros(n, 1);

temp = zeros(1, m);

temp_b = 0;

i = 1;

for j = 1: (m - 1)

    if (A(i, j) ~= 0)

        for k = (i + 1):n

            if (A(k, j) ~= 0)

                temp = A(k, :) + A(i, :) * (-A(k, j) / A(i, j));

                temp_b = b(k) + b(i) * (-A(k, j) / A(i, j));

                A(k, :) = temp;

                b(k) = temp_b;

            end

        end

    end

    i = i + 1;

end;

A

b

disp('det(A) is ...');

x = det(A);

disp(x);

disp('cond(A) is ...');

x = cond(A);

disp(x);

X(n) = b(n) / A(n, n);

for i = (n - 1):-1:1

    temp_b = 0;

    for j = (i + 1):n

        temp_b = temp_b + A(i, j) * X(j);

    end

    X(i) = (b(i) - temp_b) / A(i, i);

end

end

这个程序要求输入两个参数,一个是系数矩阵,另外一个是矩阵b。从程序中我们可以看出程序首先初始化一个解向量,全部以0为元素。然后通过循环来进行系数矩阵的上三角化,在这个过程中,需要判断每一个系数矩阵的行向量的第一元素是否为0,若是0的话,则需要进行换行操作,或者跳过此次循环,直接进入下一次循环(因为有可能是这一行已经达到要求,不需要再进行操作。)

b.  第一个小题

通过以下过程:

>> A = [3.01 6.03 1.99;1.27 4.16 -1.23; 0.987 -4.81 9.34];

>> b = [1; 1; 1];

>> p178_2_GAUSS(A, b)

可以解出方程:

A =

    3.0100    6.0300    1.9900

         0    1.6158   -2.0696

         0         0   -0.0063

b =

    1.0000

    0.5781

    3.1004

det(A) is ...

   -0.0305

cond(A) is ...

  4.0724e+003

ans =

  1.0e+003 *

    1.5926

   -0.6319

   -0.4936

c.  第二个小题

通过以下过程:

>> A = [3.00 6.03 1.99;1.27 4.16 -1.23; 0.990 -4.81 9.34];

>> b = [1; 1; 1];

>> p178_2_GAUSS(A, b)

可以解出方程:

A =

    3.0000    6.0300    1.9900

         0    1.6073   -2.0724

         0         0   -0.0844

b =

    1.0000

    0.5767

    3.1097

det(A) is ...

   -0.4070

cond(A) is ...

  305.2933

ans =

  119.5273

  -47.1426

  -36.8403 

到这里这一大题已经完全解决,下面进入下一题。        

4.  雅克比迭代法与SOR方法

这一题考查的是迭代法的使用,雅克比迭代法与SOR方法,在这道题中

用。

a. 雅克比迭代法的计算公式

b. 超松弛迭代法的计算公式

首先要通过程序获得希尔矩阵与b矩阵,然后才能进行下面的工作,而要实现这个功能需要以下的函数:

c.得到希尔矩阵

function Hn = GET_Hn(n)

Hn = zeros(n);

for i = 1:n

    for j = 1:n

        Hn(i, j) = 1 / (i + j - 1);

    end

end

end

d.得到b矩阵

function b = GET_b(n)

Hn_temp = GET_Hn(n);

b = zeros(n, 1);

for i = 1:n

    for j = 1:n

        b(i) = b(i) + Hn_temp(i, j);

    end

end

end

e.  雅克比迭代法实现的函数

       function X = p211_1_JJ(n)

Hn = GET_Hn(n);

b = GET_b(n);

temp = 0;

X0 = zeros(1, n);

X_old = zeros(1, n);

X_new = zeros(1, n);

disp('Now Jacobi method!');

disp('Start with the vector that (0, 0, 0, ...)^T');

for i = 1:n

           for k = 1:n

              X_old = X_new;

              temp = 0;

              for j = 1:n

                  if(j ~= i)

                       temp = temp + Hn(i, j) * X_old(j);

                  end

            end

            X_new(i) = (b(i) - temp) / Hn(i, i);

         end

end

X = X_new;

end

f.  SOR迭代法实现的函数

function X = p211_1_SOR(n, w)

Hn = GET_Hn(n);

b = GET_b(n);

temp01 = 0;

temp02 = 0;

X0 = zeros(1, n);

X_old = zeros(1, n);

X_new = zeros(1, n);

disp('Now Successive Over Relaxtion method!');

disp('Start with the vector that (0, 0, 0, ...)^T');

for i = 1:n

    for k = 1:n

        X_old = X_new;

        temp01 = 0;

        temp02 = 0;

        for j = 1:n

            if(j < i)

                temp01 = temp01 + Hn(i, j) * X_new(j);

            end

             if(j > i)

                temp02 = temp02 + Hn(i, j) * X_old(j);

            end

        end

    end

    X_new(i) = w * (b(i) - temp01 -  temp02) / Hn(i, i) + X_old(i);

end

X = X_new;

End

g.  对于雅克比迭代法,通过执行以下代码

       >> p211_1_JJ(6)

       >> p211_1_JJ(8)

       >> p211_1_JJ(10)

       可以分别得到:

       Now Jacobi method!

Start with the vector that (0, 0, 0, ...)^T

ans =

           2.4500    1.1036    0.6265    0.4060    0.2831    0.2071

       Now Jacobi method!

Start with the vector that (0, 0, 0, ...)^T

ans =

2.7179    1.4101    0.8524    0.5809    0.4221    0.3198    0.2497    0.1995

Now Jacobi method!

Start with the vector that (0, 0, 0, ...)^T

ans =

  Columns 1 through 9

    2.9290    1.6662    1.0517    0.7423    0.5554    0.4315    0.3445    0.2807    0.2325

  Column 10

0.1951

h. 对于SOR迭代法,执行相对应代码

n=6, ω=1,1.25,1.5的时候

>> p211_1_SOR(6, 1)

Now Successive Over Relaxtion method!

Start with the vector that (0, 0, 0, ...)^T

ans =

    2.4500    1.1036    0.6265    0.4060    0.2831    0.2071

>> p211_1_SOR(6, 1.25)

Now Successive Over Relaxtion method!

Start with the vector that (0, 0, 0, ...)^T

ans =

    3.0625    0.2310    0.8704    0.3389    0.3141    0.2097

>> p211_1_SOR(6, 1.5)

Now Successive Over Relaxtion method!

Start with the vector that (0, 0, 0, ...)^T

ans =

    3.6750   -1.1009    2.0106   -0.3994    0.7670   -0.0384

与n=8, ω=1,1.25,1.5的时候

>> p211_1_SOR(8, 1)

Now Successive Over Relaxtion method!

Start with the vector that (0, 0, 0, ...)^T

ans =

2.7179    1.4101    0.8524    0.5809    0.4221    0.3198    0.2497    0.1995

>> p211_1_SOR(8, 1.25)

Now Successive Over Relaxtion method!

Start with the vector that (0, 0, 0, ...)^T

ans =

3.3973    0.4887    1.0898    0.5062    0.4501    0.3203    0.2573    0.2042

>> p211_1_SOR(8, 1.5)

Now Successive Over Relaxtion method!

Start with the vector that (0, 0, 0, ...)^T

ans =

4.0768   -0.9424    2.2923   -0.2753    0.9252    0.0578    0.4071    0.1275

与n=10, ω=1,1.25,1.5的时候

>> p211_1_SOR(10, 1)

Now Successive Over Relaxtion method!

Start with the vector that (0, 0, 0, ...)^T

ans =

  Columns 1 through 9

2.9290    1.6662    1.0517    0.7423    0.5554    0.4315    0.3445    0.2807    0.2325

  Column 10

    0.1951

>> p211_1_SOR(10, 1.25)

Now Successive Over Relaxtion method!

Start with the vector that (0, 0, 0, ...)^T

ans =

  Columns 1 through 9

3.6612    0.7098    1.2835    0.6617    0.5807    0.4299    0.3506    0.2844    0.2363

  Column 10

    0.1984

>> p211_1_SOR(10, 1.5)

Now Successive Over Relaxtion method!

Start with the vector that (0, 0, 0, ...)^T

ans =

  Columns 1 through 9

4.3935   -0.7958    2.5326   -0.1523    1.0720    0.1565    0.5050    0.2041    0.2819

  Column 10

    0.1766

到此这道题目结束了。

四.  心得与感想

在此次实验的四个题目中,第一个题使用的是老师的程序代码,第二个题是用的是MATLAB自带的函数,第三个题和第四个题中的5个函数(包括p178_2_GAUSS(A, b),GET_Hn(n),GET_b(n),p211_1_JJ(A,b),p211_1_SOR(A,b))是自己写的程序代码。

在学习数值分析的同时,进行学习MATLAB,有助于将两者都更加的熟悉并加以充分利用。比如在学习数值分析过程中对某个问题不是很明白,也许我们就会找出各种借口来将它跳过去,以至于过了一段时间之后连自己有什么问题都忘了,就给以后的生活留下了一个炸弹,有可能在某天我们急需要解决一个问题,而要解决那个问题就需要在数值分析中有个一个知识点,但是因为在学的时候我们没有搞懂,所以在那时候就不能够及时做出来,有可能造成其他问题。但是由于要进行MATLAB实验,我们就必须要把那个问题解决,要不然就不能够让MATLAB运行。同理对于MATLAB的学习是一样的。两者促进另外一者的学习。

MATLAB是一个软件,更可以是一门语言,还有好多的功能我们未曾用过,那些都是值得去搞懂的,但是由于时间原因,不可能停下学习,所以现在有这么多,先满足吧。

更多相关推荐:
大学生实习报告范文及格式

实习报告范文及格式一实习目的例如1通过本次实习使我能够从理论高度上升到实践高度更好的实现理论和实践的结合为我以后的工作和学习奠定初步的知识2通过本次实习使我能够亲身感受到由一个学生转变到一个职业人的过程3本次实...

大学生毕业实习报告及模板

毕业实习报告年级学号姓名专业指导老师20xx年4月6日工商管理系毕业实习评价表1毕业实习报告一引言11实习要求111在上学期的期末考试之后我们电子商务专业的领导同各位指导老师给我们毕业班做了寒假的安排最后一学期...

大学实习报告(万能模板)

大学实习报告几乎是万能模板系部名称专业年级班级姓名学号实践单位XXXX有限公司实践时间20xx年月日至20xx年月日共天实践报告正文一实践目的介绍实践的目的意义实践单位或部门的概况及发展情况实践要求等内容这部分...

实习报告格式模板

北京工业职业技术学院建筑工程专业认识实习报告班级组日期指导教师建筑工程系20xx年01月北京工业职业技术学院实习名称建筑工程专业认识实习完成单位北京工业职业技术学院组注组名可以自由发挥健康向上展示小组特色实习小...

大学生实习报告模版

实习报告实习是每一个大学毕业生必须拥有的一段经历,它使我们在实践中了解社会、在实践中巩固知识;实习又是对每一位大学毕业生专业知识的一种检验,它让我们学到了很多在课堂上根本就学不到的知识,既开阔了视野,又增长了见…

大学生实习报告格式及范文(全)

《实践报告格式》系部名称:专业:______年级______班级:_________姓名:_____学号:____实践单位:XXXX有限公司实践时间:20xx年--月--日至20xx年--月--日共--天实践报…

实习报告样板

西南财经大学天府学院20xx届专科实习报告题目关于在超市做会计工作的实习报告报告作者xX作者所在院系西南财经大学天府学院作者所在专业会计电算化作者学号实习报告成绩实习鉴定表分数评定规则优秀3640分良好3035...

中山大学本科生实习报告书模板

附件4本科生实习报告书院系专业年级班级姓名学号实习单位实习时间指导教师年月日注1文中单位名称可采用国际通用符号或中文名称但全文应统一不可混用2字数一般不少于20xx字可另加同规格纸张

实习报告模板

建筑结构设计与选型实习报告学院林学院专业城市规划姓名李国荣学号110310247指导教师黄保生建筑结构选型实习优90100分良8089分中6079分差60分优90100分良8089分中6079分差60分优901...

实习报告模板及排版要求

题目学号姓名专业班级指导教师实践日期目录一实习目的与要求3二实习任务3三实习日志3四实习总结32一实习目的与要求正文二实习任务三实习日志四实习总结1实习收获与体会2存在的问题与建议排版格式要求1页面设置纸张用A...

顶岗实习报告模板

档号专业代码封面样板广东理工职业学院顶岗实习报告系别汽车学院学生姓名朱管武学生学号20xx5600243学生班级09机电专业名称机电设备维修与管理校内指导教师曾明校外指导教师实习单位一汽大众有限公司20xx年3...

毕业实习报告模版

北京师范大学珠海分校毕业实习报告123

实习报告模板(36篇)