第一篇:matlab實習報告(最新)
1.求f(x)=4x6-x+x3-95在(0,100)上最大值、最小值,根。(使用函數fminbnd、roots)
>>[x,y]=fminbnd('4*x.^6-x+x.^3-95',0,100)x =
0.4432 y =
-95.3258 >> [x,y]=fminbnd('-4*x.^6+x-x.^3+95',0,100)x =
99.9999 y =-4.0000e+012 >> a=[4 0 0 1 0-1-95];roots(a)ans =
1.6860
0.8525 + 1.4852i
0.85251.4514i 求解常微分方程x’’=-x’+x+1,x’(0)=1,x(0)=0(使用函數dsolve)dsolve('D2x=-Dx+x+1','Dx(0)=1','x(0)=0')ans =(5^(1/2)*exp(t*(5^(1/2)/23))/(10*exp(t*(5^(1/2)/2 + 1/2)))1/3 + 1/51/11 +...)其中 n 為函式的輸入,級數和 f(n)則是函式的輸出。此外,你必須進行下列事項:
function f=pifun(n)l=1;s=0;for i=1:n s=s+l/(2*i-1);l=-l;end s=4*s;disp('f(n)的值是');disp(num2str(s))(1)使用 tic 和 toc 指令來測量 pifun(100000)的計算時間。如果你不知道如何使用這兩個指令,請使用 help tic 及 help toc 來查出它們的用法。我的計算機是 Pentium-450,所得的計算時間約為 2 秒。請說明你的計算機規格以及其計算時間。
>> tic,pifun(100000),toc f(n)的值是 3.1416 Elapsed time is 0.028928 seconds.Cpu Pentium dual—core e5300(2)使用 flops 指令來測量 pifun(100000)所用到 floating point operations 的計算次數。如果你不知道如何使用這個指令,請使用 help flops 來查出它的用法。
14、寫一個 MATLAB 的遞歸函式 fibo.m 來計算 Fibonacci 數列,其定義如下:
fibo(n+2)= fibo(n+1)+fibo(n)此數列的啟始條件如下: fibo(1)= 0, fibo(2)= 1.function f=fibo(n)if n==1 f=0;elseif n==2 f=1;else f=fibo(n-1)+fibo(n-2);end 求下列函數的極小點:
1)f?X??x2?4x2?9x2?2x?18x;
12312>> f='x(1)^2+4*x(2)^2+9*x(3)^2-2*x(1)+18*x(2)';[x,fm]=fminsearch(f,[0,0,0])x =
1.0000-2.2500 0.0000
fm =
-21.2500
2)
f?X??2x1; 32?x2?2x1x2?x1?2x22>> f='x(1)^2+3/2*x(2)^2-2*x(1)*x(2)+x(1)-2*x(2)';[x,fm]=fminsearch(f,[0,0])
x =
0.*** 1.***
fm =
-0.***
3)f?X???x?1?4?22.12>> f='(x(1)-1)^4+x(2)^2';>> [x,fm]=fminsearch(f,[0;1])x =
0.***-0.***
fm =
4.24***82e-017
第1),2)題的初始點可任意選取,第3)題的初始點取為X0??0,1?T.?5x1?x2?x3?1?x?3x?x?2?3416. 解線性方程組 ?1并求系數矩陣的行列式。
??x1?x2?5x4?3??2x3?4x4??1 a=[5 1-1 0 1;1 0 3-1 2;-1-1 0 5 3;0 0 2 4-1];>> rref(a)
ans =
1.0000
0
0
0
1.4000
0
1.0000
0
0
-5.9000
0
0
1.0000
0
0.1000
0
0
0
1.0000
-0.3000
所以 x1=1.4;x2=-5.9;x3=0.1;x4=-0.3
a=[5 1-1 0;1 0 3-1;-1-1 0 5;0 0 2 4];>> det(a)
ans =
2?f17. 設 f(x,y)= 4 sin(x y),求
?x?y
3x?2,y?3
syms f s y;syms f x y;f=4*sin(x.^3*y);z=diff(diff(f,x),y);x=2;y=3;subs(z)
>> zs17
ans =
1.0636e+003 18.求方程 3x4+4x3-20x+5 = 0 的所有解。
c=[3 4 0-20 5];roots(c)
>> zs18
ans =
-1.5003 + 1.5470i-1.50031.0860i 1.9536 + 1.0860i 1.0727
r =
8.6397e+003 即在第108年停產可獲最大利潤,最大利潤為8639.7百萬元。一幢樓房的后面是一個很大的花園。在花園中緊靠著樓房建有一個溫室,溫室高10英尺,延伸進花園7尺。清潔工要打掃溫室上方的樓房的窗戶。他只有借助于梯子,一頭放在花園中,一頭靠在樓房的墻上,攀援上去進行工作。他只有一架20米長的梯子,你認為他能否成功?能滿足要求的梯子的最小長度是多少?
步驟:
1.先進行問題分析,明確問題;
2.建立模型,并運用Matlab函數求解; 3.對結果進行分析說明; 4.line)設計程序畫出圖形,對問題進行直觀的分析和了解(主要用畫線函數plot。若梯子能恰好放置,則梯子的長度f與傾角x關系如下:
ab7?f(x)??
(其中a=m, b=3.048m,0 L=inline('3.048/sin(x)+2.333/cos(x)','x');x=fminbnd(L,0.01,pi/2-0.01)l=subs(L) ezplot('3.048/sin(x)+2.333/cos(x)',[0,pi/2]) 由以上可知梯子的最小長度為7.59m。所以他能成功。 22.某大學青年教師從31歲開始建立自己的養老基金,他把已有的積蓄10000元也一次性地存入,已知月利率為0.001(以復利計),每月存入700元,試問當他60歲退休時,他的退休基金有多少?又若,他退休后每月要從銀行提取1000元,試問多少年后他的基金將用完? function f=title22()s=10000;t=0;for i=1:360 s=s*(1+0.001)+700;end fprintf('60?êí?DYê±í?DY?ù?eóD%f?a.n',s);while s>0 s=(s-1000)*(1+0.001);t=t+1;end t=ceil(t/12); fprintf('í?DYoó????òa′óò?DDìáè?1000?a£?%d?êoó?ù?e??ó?íê.n',t);>> zs22 60歲退休時退休基金有317480.843330元.退休后每月要從銀行提取1000元,32年后基金將用完.23.:請設計一個程序,程序完成下列功能:(1)讓用戶輸入一個矩陣A;(2)在A中找出小于0的矩陣元素的位置;(3)在A中統計出等于0的元素的個數;(4)顯示A的行數和列數; (5)找出矩陣A各元素中的最大值(顯示值,不顯示元素位置)。 function f=title20()a=input('??ê?è????óA: ');[m,n]=size(a);t=0;p=0;for i=1:m for j=1:n if a(i,j)<0 p=p+1; fprintf('μú%d??D?óú0μ?????ê?(%d,%d)n',p,i,j); end if a(i,j)==0 t=t+1; end end end B=a(:);max=B(1);for i=2:m*n if B(i)>max max=B(i); end end if p==0 disp('A?D??óDD?óú0μ??a??.');end fprintf('A?Dμèóú0μ??a??μ???êy?a%dn',t);fprintf('Aμ?DDêyoíáDêy·?±e?a%d£?%dn',m,n);fprintf('A?÷?a???Dμ?×?′ó?μ?a%dn',max); 24:請設計一個程序,程序完成下列功能:(1)讓用戶依次輸入兩個字符串s1和s2;(2)比較兩個字符串的長度并顯示比較結果; (3)判斷s1與s2有沒有長度在3個字符以上的相同子串,顯示判斷結果。function f=title24() s1=input('??ê?è?×?·?′?s1: ');s2=input('??ê?è?×?·?′?s2: ');m=length(s1);n=length(s2);t=m;kk=0;if m>n t=n; disp('s1μ?3¤?è′óóús2μ?3¤?è.');elseif m disp('s1μ?3¤?èD?óús2μ?3¤?è.');else disp('s1μ?3¤?èμèóús2μ?3¤?è.');end for i=4:t for j=1:m-i+1 for k=1:n-i+1 if strcmp(s1(j:j+i-1),s2(k:k+i-1))==1 l=0; for r=1:kk if strcmp(s1(j:j+i-1),b{r})==1 l=1; break;end end if l==0 kk=kk+1; b{kk}=s1(j:j+i-1); end end end end end for i=1:kk fprintf('μú%d???àí?×?·?′?£o',i);disp(b{i}); end 25:編寫程序模擬楊氏雙縫干涉 兩相干光源到接收屏上P點距離r1=(D2+(y-a/2)2)1/2, r2=(D2+(y+a/2)2)1/2,相位差 Φ=2π(r2-r1)/λ,光強I=4I0cos2(Φ/2)編寫程序 clear lam=500e-9;a=2e-3;D=1;ym=5*lam*D/a;xs=ym;n=101;ys=linspace(-ym,ym,n);for i=1:n r1=sqrt((ys(i)-a/2).^2+D^2);r2=sqrt((ys(i)+a/2).^2+D^2);phi=2*pi*(r2-r1)./lam;B(i,:)=sum(4*cos(phi/2).^2);end N=255;Br=(B/4.0)*N;subplot(1,2,1);image(xs,ys,Br);colormap(gray(N));subplot(1,2,2);plot(B,ys); 26:編寫程序模擬光柵衍射 公式:I=I0(sinα/α)2(sin(λβ)/sinβ)2 α=(πa/λ)sinΦ β=(πd/λ)sinΦ clear lam=500e-9;N=2;a=2e-4;D=5;d=5*a;ym=2*lam*D/a;xs=ym;n=1001;ys=linspace(-ym,ym,n);for i=1:n sinphi=ys(i)/D;alpha=pi*a*sinphi/lam;beta=pi*d*sinphi/lam; B(i,:)=(sin(alpha)./alpha).^2.*(sin(N*beta)./sin(beta)).^2;B1=B/max(B);end NC=255;Br=(B/max(B))*NC;subplot(1,2,1)image(xs,ys,Br);colormap(gray(NC));subplot(1,2,2)plot(B1,ys); 27:繪制三元函數w?x2?y2?z2的可視化圖形 x=-5:0.05:5;y=-5:0.05:5;z=-5:0.05:5;[x,y,z]=meshgrid(x,y,z);v=x.^2+y.^2+z.^2;isosurface(x,y,z,v,10);axis equal 28:繪制 z?f(x,y)?(1?x)?12ln(x?y)的圖象 [x,y,z,v] = flow; q=1./sqrt(1-x).*log(x-y)-z; p = patch(isosurface(x, y, z, v, 0));isonormals(x,y,z,q,p) set(p, 'FaceColor', 'blue', 'EdgeColor', 'none');view(3) camlight;lighting 29: 試完成matlab 動畫 霓虹燈效果動畫:一顆花心: clear;clc;close all c=5;t=linspace(-c,c);[x,y]=meshgrid(t);z=17*x.^2-16*abs(x).*y+17*y.^2-225;pcolor(x,y,z);shading interp pause(2);spinmap(10) 30:試完成matlab gui程序 function varargout = ex0(varargin)gui_Singleton = 1; gui_State = struct('gui_Name', mfilename,...'gui_Singleton', gui_Singleton,...'gui_OpeningFcn', @ex0_OpeningFcn,...'gui_OutputFcn', @ex0_OutputFcn,...'gui_LayoutFcn', [] ,...'gui_Callback', []);if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1});end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});else gui_mainfcn(gui_State, varargin{:});end function ex0_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject; global i a i=0; a=floor(100*rand); guidata(hObject, handles); function varargout = ex0_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output; function x1_Callback(hObject, eventdata, handles) function x1_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end function x2_Callback(hObject, eventdata, handles) function x2_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end function p1_Callback(hObject, eventdata, handles) global i a x1= eval(get(handles.x1,'String')); if x1>a x2='high'; set(handles.x2,'string',num2str(x2)); elseif x1 set(handles.x2,'string',num2str(x2)); else x2='YOU ARE WIN'; set(handles.x2,'string',num2str(x2));a=floor(100*rand);i=0; end i=i+1;if i==10 x2='YOU ARE LOSE'; set(handles.x2,'string',num2str(x2));a=floor(100*rand);i=0;end function p2_Callback(hObject, eventdata, handles) close = questdlg('?úè·?¨òa1?±??e?','è·?¨1?±?','ê?','·?','ê?');switch close case '·?' case 'ê?' delete(handles.figure1)end matlab實習報告 實習總結報告;學校名稱;實習類型學學軟件MTLAB實習起止時間年月日至年;所在院(系);班級;學生姓名;學號;年月日;實習總結報告;2013年7月8日至7月26日,我們應數專業進行;這次認識實習分為兩大部分:理論知識學習和上機實踐; 一、實習目的;這次實習的目的是使我們掌握MATLAB的基本知識; 二、實習內容; (一)操作基礎;MATLAB是一種用于科學計算的高 實習總結報告 學校名稱 實習類型 學學軟件MTLAB 實習起止時間 年 月 日至 年 月 日 指導教師 所在院(系)班 級 學生姓名 學 號 年 月 日 實習總結報告 2013年7月8日至7月26日,我們應數專業進行了為期3周的實習。這次認識實習分為兩大部分:理論知識學習和上機實踐學習。這次認識實習使我對專業知識有了一定的了解,知道以后的學習重點,感受工作環節,為自己將來走向社會打下基礎。 一、實習目的 這次實習的目的是使我們掌握MATLAB的基本知識,能運用MATLAB來編寫程序,解決一般性的問題,使得我們在完成本課程學習后,掌握MATLAB的基本知識和初步的編程能力,為以后的學習和工作提供了一個非常有用的工具。 二、實習內容 (一)操作基礎 MATLAB是一種用于科學計算的高性能語言。它將計算、可視化和程序設計集成在一個非常容易的環境中,使用我們熟悉的數學符號表示問題與答案。MATLAB系統由5個主要部分組成,包括開發環境、MATLAB數學函數庫、MATLAB語言、圖形、MATLAB應用程序接口。對于MATLAB的操作基礎,應該學會啟動和退出MATLAB、MATLAB的桌面工具和開發環境、命令窗口、歷史窗口等等。 (二)矩陣及其運算 MATLAB,即“矩陣實驗室”,它是以矩陣為基本運算單元。因此,本書從最基本的運算單元出發,介紹MATLAB的命令及其用法。 1.矩陣的表示:MATLAB的強大功能之一體現在能直接處理向量 或矩陣。當然首要任務是輸入待處理的向量或矩陣。不管是任何矩陣(向量),我們可以直接按行方式輸入每個元素:同一行中的元素用逗號(,)或者用空格符來分隔,且空格個數不限;不同的行用分號(;)分隔。所有元素處于一方括號([ ])內;當矩陣是多維(三維以上),且方括號內的元素是維數較低的矩陣時,會有多重的方括號。其中有:符號矩陣、大矩陣的生成、多維數組的創建、特殊矩陣的生成(主要有零矩陣(zero)、單位陣(eye)、全一陣(ones)、均勻分布隨機矩陣(rand)、正態分布隨機矩陣(randn)等)。 (三)程序設計與文件操作 1.程序設計: Matlab既是一種語言,又是一種編程環境。Matlab提供了很多方便用戶的工具,用于管理變量、輸入輸出數據以及生成和管理M文件。 用戶可在Matlab的命令窗口鍵入一個命令,也可以由它定義的語言在編輯器中編寫應用程序,Matlab軟件對此進行解釋后,在Matlab環境下對它進行處理,最后返回結果.MATLAB語言的顯著特點:具有強大的矩陣運算能力:Matrix Laboratory(矩陣實驗室),使得矩陣運算非常簡單。也是一種演算式語,MATLAB的基本數據單元是既不需要指定維數,也不需要說明數據類型的矩陣(向量和標量為矩陣的特例),而且數學表達式和運算規則與通常的習慣相同。因此,MATLAB語言編程簡單,使用方便。 2.文件操作: (1)指令驅動模式:即在MATLABM命令行窗口下用戶輸入單行指令時,MATLAB立即處理這條指令,并顯示結果,這就是MATLAB命令行方式。缺點:命令行方式程序可讀性差,而且不能存儲,當處理復雜問題和大量數據時很不方便。(2)M文件模式:將MATLAB語句構成的程序存儲成以m為擴展名的文件,然后再執行該程序文件,這種工作模式稱為程序文件 模式。 (3)M語言文件可以分為主程序文件和函數文件, 一個M語言文件就是由若干MATLAB的命令組合在一起構成的。M語言文件是標的純文本格式的文件,其文件擴展名為.m。MATLAB提供了meditor編輯器編輯M文件。 (四)數據分析與多項式計算 MATLAB數據分析與多項式計算主要包括:數據統計處理、數據插值、曲線擬合、離散傅立葉變換、多項式計算等等。 在數據處理中我們要了解最大值和最小值,如果在程序中求一個矩陣的極值問題,max或min(x,[],1)代表的是每一列中最大值或最小值組合寫成一個行矩陣,max或min(x,[],2)表示的是每一行中的最大值和最小值寫成一個列矩陣。在計算多項式時,了解root函數以及熟練地應用,將多項式每一項前系數都寫入root中,便可以通過root函數求出根。 (五)解線性方程與函數極值 線性方程:解線性方程包括:線性方程組求解、非線性方程數值求解、常微分方程初值問題的數值解法、函數極值等。 線性方程求解:(a)直接法: 利用左除運算符的直接解法對于線性方程組Ax=b,可以利用左除運算符“”求解:x=Ab。(b)利用矩陣的分解求解線性方程組: 矩陣分解是指根據一定的原理用某種算法將一個矩陣分解成若干個矩陣的乘積。常見的矩陣分解有LU分解、QR分解、Cholesky分解,以及Schur分解、Hessenberg分解、奇異分解等。 (c)非線性方程組的求解: 對于非線性方程組F(X)=0,用fsolve函數求其數值解。fsolve函數的調用格式為: X=fsolve('fun',X0,option)其中X為返回的解,fun是用于定義需求解的非線性方程組的函數文件名,X0是求根過程的初值,option為最優化工具箱的選項設定。最優化工具箱提供了20多個選項,用戶可以使用optimset命令將它們顯示出來。如果想改變其中某個選項,則可以調用optimset()函數來完成。例如,Display選項決定函數調用時中間結果的顯示方式,其中‘off’為不顯示,‘iter’表示每步都顯示,‘final’只顯示最終結果。optimset(‘Display’,‘off’)將設定Display選項為‘off’。 (六)符號計算 在數值計算中,計算機處理的對象和得到的結果都是數值,而在符號計算中,計算機處理的數據和得到的結果都是符號。符號計算中首先要對符號變量進行定義。Sym只能為單個符號變量定義,而Syms可以為多個進行定義。定義之后,可以進行符號計算,主要用于研究符號微積分運算。求解符號微分,可以直接采用diff()函數進行求解;符號的積分,可以使用int()函數進行計算,最后調用M文件得到正確結果。 (七)數值積分與微分 MATLAB數值積分與微分主要包括:數值積分與數值微分。求解定積分的數值方法多種多樣,如簡單的梯形法、辛普生(Simpson)?法、牛頓-柯特斯(Newton-Cotes)法等都是經常采用的方法?;舅枷攵际菍⒄麄€積分區間[a,b]分成n個子區間[xi,xi+1],i=1,2,?,n,其中x1=a,xn+1=b。這樣求定積分問題就分解為求和問題。 二重定積分的數值求解:使用MATLAB提供的dblquad函數就可以直接求出二重定積分的數值解。該函數的調用格式為: I=dblquad(f,a,b,c,d,tol,trace)該函數求f(x,y)在[a,b]×[c,d]區域上的二重定積分。參數tol,trace的用法與函數quad完全相同。 (八)微分方程符號解法和數值解法 solve函數的使用Solve(‘p*sin(x)=r’)ans=asin(r/p),dsolve函數的一般調用形式是:dsolve(‘s’,’s1’; (九)繪圖操作;二維圖形可以采用ezplot進行繪圖,一般形式是;ezplot(f,[a,b])表示的是回執函數y;三維圖形或者多維圖形一般采用ezplot3進行繪; (十)圖形用戶界面設計圖形用戶和界面設計中我們要; (十一)統計方法及其應用;概率分布及其有關函數中,常用的是pdf,cdf,; (十二)圖形句柄; 的一般調用形式是:dsolve(‘s’,’s1’,’s2’...)(s為方程,s1,s2,s3,為初始條件,x為自變量)。Ode45表示的是常微分方程的數值求解。通過此函數可以很方便快速的求出有關微分方程求解的問題。 (九)繪圖操作 二維圖形可以采用ezplot進行繪圖,一般形式是: ezplot(f,[a,b])表示的是回執函數y=f(x)在區間(a,b)上的圖像。 三維圖形或者多維圖形一般采用ezplot3進行繪圖,一般形式是: ezplot3(x,y,z)表示的是空間曲線x=x(t),y=y(t),z=z(t),0 (十)圖形用戶界面設計 圖形用戶和界面設計中我們要遵循四個原則:簡單性,一致性,習常性以及其他考慮因素。如果建立主菜單條,菜單項句柄=uimenu(圖形黃口句柄,屬性名1,屬性值1,...);子菜單句柄=uimenu(父菜單句柄,屬性名1,屬性值1,...)圖形窗口的創建一般是 窗口句柄=figure(屬性名1,屬性值1,屬性名2,屬性值2,...),對于圖形用戶界面設計工具-Guide Control Panel要有簡單的了解。 (十一)統計方法及其應用 概率分布及其有關函數中,常用的是pdf,cdf,stat(概率密度,分布函數,均值與方差),以及樣本均值mean和中值median,在描述性統計就是搜集.整理.加工和分析統計數據使之系統化。在描述樣本中心值的偏離程度中,有var(方差),cov(協方差)等研究參數,同時還可以對參數進行估計,方差分析有anova1(單因素試驗方差)和anova2(雙因素試驗),通過統計數據,最終進行統計圖的繪制。 (十二)圖形句柄 圖形句柄主要包括:圖形對象及其句柄、圖形對象屬性、圖 形對象的創建。我們學習了很多MATLAB高層繪圖函數,這些函數都是將不同的曲線或曲面繪制在圖形窗口中,而圖形窗口也就是由不同圖形對象(如坐標軸、曲線、曲面或文字等)組成的圖形界面。MATLAB給每個圖形對象分配一個標志符,稱為句柄。以后可以通過該句柄對該圖形對象的屬性進行設置,也可以獲取有關屬性,從而能夠更加自主地繪制各種圖形。 直接對圖形句柄進行操作的繪圖方法稱為低層繪圖操作。相對于高層繪圖,低層繪圖的操作控制和表現圖形的能力更強,事實上,MATLAB的高層繪圖函數都是利用低層繪圖函數建立起來的。有時單靠高層繪圖不能滿足要求,如,繪制特殊圖形、建立圖形用戶界面等,這時就需要圖形句柄操作。 三、實習心得 這次實習我收獲頗多,領會了很多東西,這次實習對于我們數學專業的學生意義重大??梢哉f,這次實習完全做到了學以致用,正如陶行知先生所言:“知行合一”。這對于我們以后的學習和將來走上工作崗位,有一定的借鑒意義。在這個過程中心得如下: 1、“實踐是檢驗真理的唯一標準”,在學習Matlab的過程中,這一點非常的重要,在學習的過程中我們不僅要學會老師講授的知識,而且要多操作,多實踐,在操作和實踐的過程中將知識融會貫通,做到“信手拈來”的境界。 2、要有團隊精神,這一似乎是我們這個時代許多重大發現,科技進步一個非常重要的因素。而在學習Matlab的過程中也體現了這一點,在與同學和老師的交流過程中,無形之中就學到了很多的知識。 3、數學與計算機是一對同胞兄弟。在學習Matlab的過程中深有 體會,兩者相輔相成,Matlab的諸多功能對我們學習數學的過程中是非常有幫助的,Matlab簡單易學,代碼短小,有強大的圖形繪制和處理功能,這些功能對于我們學習數學起到了事半功倍的作用。 4、“學無止境”,我們應該樹立一種終身學習的信念,在這個信息時代,知識在不斷的更新,更新的源泉來自創新,而創新就要有獨立思考的能力,Matlab的功能已經非常強大了,但仍需完善,作為數學人我們與責任和義務去完善它,在未來的前進過程中不斷的做出創新,我想,這也是我們高等教育所提倡的,所以說,我們數學人任重而道遠,需明白“學無止境”的道理。 MATLAB實習報告 MATLAB課程設計報告 摘要 MATLAB是由美國mathworks公司發布的主要面對科學計算、可視化以及交互式程序設計的高科技計算環境。它將數值分析、矩陣計算、科學數據可視化以及非線性動態系統的建模和仿真等諸多強大功能集成在一個易于使用的視窗環境中,為科學研究、工程設計以及必須進行有效數值計算的眾多科學領域提供了一種全面的解決方案,代表了當今國際科學計算軟件的先進水平。 MATLAB的基本數據單位是矩陣。MATLAB幾乎包括了矩陣的所有運算,從簡單的矩陣生成及簡單的運算到大量的矩陣運算與轉換。MATLAB應用于矩陣有很大的必要性和很重要的現實意義。 MATLAB具有強大的二維、三維繪圖功能,提供了許多繪圖語句。利用MATLAB我們可以畫出我們所需要的幾乎所有圖形。關鍵詞:矩陣;解方程組;畫圖 MATLAB實習報告 目錄一、二、三、四、五、背景…………………………………………………………………………4 第一部分題目………………………………………………………………17 第二部分選做題…………………………………………………………....19 心得體會…………………………………………………………………....19 參考文獻……………………………………………………………………19 MATLAB實習報告 一、背景 MATLAB軟件功能簡介 MATLAB的名稱源自Matrix Laboratory,1984年由美國Mathworks公司推向市場。它是一種科學計算軟件,專門以矩陣的形式處理數據。MATLAB將高性能的數值計算和可視化集成在一起,并提供了大量的內置函數,從而被廣泛的應用于科學計算、控制系統和信息處理等領域的分析、仿真和設計工作。 MATLAB軟件包括五大通用功能,數值計算功能(Nemeric)、符號運算功能(Symbolic)、數據可視化功能(Graphic)、數字圖形文字統一處理功能(Notebook)和建模仿真可視化功能(Simulink)。其中,符號運算功能的實現是通過請求MAPLE內核計算并將結果返回到MATLAB命令窗口。該軟件有三大特點,一是功能強大;二是界面友善、語言自然;三是開放性強。目前,Mathworks公司已推出30多個應用工具箱。MATLAB在線性代數、矩陣分析、數值及優化、數值統計和隨機信號分析、電路與系統、系統動力學、次那好和圖像處理、控制理論分析和系統設計、過程控制、建模和仿真、通信系統以及財政金融等眾多領域的理論研究和工程設計中得到了廣泛應用。 MATLAB在信號與系統中的應用主要包括符號運算和數值計算仿真分析。由于信號與系統課程的許多內容都是基于公式演算,而MATLAB借助符號數學工具箱提供的符號運算功能,能基本滿足信號與系統課程的需求。例如解微分方程、傅里葉正反變換、拉普拉斯正反變換和z正反變換等。MATLAB在信號與系統中的另一主要應用是數值計算與仿真分析,主要包括函數波形繪制、函數運算、沖擊響應與階躍響應仿真分析、信號的時域分析、信號的頻譜分析、系統的S域分析和零極點圖繪制等內容。數值計算仿真分析可以幫助學生更深入地理解理論知識,并為將來使用MATLAB進行信號處理領域的各種分析和實際應用打下基礎。 MATLAB實習報告 二、第一部分 1.求解常微分方程x’’=-x’+x+1,x’(0)=1,x(0)=0(使用函數dsolve)dsolve('D2x=-Dx+x+1','Dx(0)=1','x(0)=0')ans =(5^(1/2)*exp(t*(5^(1/2)/23))/(10*exp(t*(5^(1/2)/2 + 1/2)))– 1 2.請用梯形法、辛普森法分別計算積分值?x2?x?1dx(trapz、quad) 0f=inline('sqrt(x.^2+x+1)','x');>> quad(f,0,1)ans = 1.3369 >> x=0:0.01:1;y=sqrt(x.^2+x+1);trapz(x,y)ans = 1.3369 3.計算二重積分??(x2?y2?xy?2x?y?1)dxdy(使用函數dblquad) 00dblquad('x.^2+y.^2+x*y+2*x+y+1', 0, 1, 0, 2)ans = 10.3333 4.矩陣M=[1,2,6;4,2,7;8,9,3],求M的LU分解,QR分解,對角陣,特征值分解。 (使用函數lu、qr、shol、eig)M=[1,2,6;4,2,7;8,9,3];lu(M)ans = 8.0000 9.0000 3.0000 0.5000 -2.5000 5.5000 0.1250 -0.3500 7.5500 qr(M)ans = 9.0000 9.1111 6.4444 -0.5000 2.4470 -2.3360 -1.0000 -0.4719 6.8566 [D,X]=eig(M)D = -0.4111 -0.7719 -0.4992 -0.5484 0.6237 -0.3914 121MATLAB實習報告 -0.7282 0.1229 0.7730 X = 14.2944 0 0 0 -1.5712 0 0 0 -6.7232 5.a=3,A=4,b=a2,B=b2-1,c=a+A-2B,C=a+B+2c,求C。(使用函數solve)>> syms a b c A B C eq1='a=3';eq2='A=4';eq3='b=a^2';eq4='B=b^2-1';eq5='c=a+A-2*B';eq6='C=a+B+2*c';x=solve(eq1,eq2,eq3,eq4,eq5,eq6);>> x.C ans =-223 6.用兩種方法求解Ax=b的解。b為四階向量,(A為四階隨機矩陣,自己創建)。方法一:>> A=rand(4)A = 0.9355 0.0579 0.1389 0.2722 0.9169 0.3529 0.2028 0.1988 0.4103 0.8132 0.1987 0.0153 0.8936 0.0099 0.6038 0.7468 >> B=[1;2;3;4];x=inv(A)*B x =-0.2035 2.3800 5.7042 0.9564 方法二: >> A(:,5)=B;rref(A)ans = 1.0000 0 0 0 -0.2035 0 1.0000 0 0 2.3800 0 0 1.0000 0 5.7042 0 0 0 1.0000 0.9564 MATLAB實習報告 13237.f(x)?x?(x?0.8)/(x?1.25)?5(x?),用兩種方法求函數的根,并求其 x極值與零點。 方法1: >> solve('x^3+(x-4/5)^2/(x+5/4)^3-5*x-5/x');x=double(ans);>> for i=1:length(x) xx(i)=isreal(x(i)); end >> x=x(xx)x = 2.4156 方法2: >> fzero('x.^3+(x-0.8).^2/(x+1.25).^3-5*(x+1/x)',3)ans =2.4156 求極值: >> syms x y >> y=x.^3+(x-0.8).^2/(x+1.25).^3-5*(x+1/x);>> dydx=diff(y);>> solve(dydx);x=double(ans);>> for i=1:length(x) xx(i)=isreal(x(i)); end >> t=x(xx)t =-0.4694 -2.4039 >> x=t(1);y1=subs(y)y1 = 16.2832 >> x=t(2);y2=subs(y)y2 =-6.4732 >> z=diff(diff(y));>> x=t(1);z1=subs(z)z1 = 205.8164 >> x=t(2);z2=subs(z)z2 =-53.5382 所以函數f(x)存在一個極大值點x1=-2.4039,極大值為-6.4732;一個極小值點x2=-2.4039,極小值為16.2832 ?x2?x?6,x?0且x??4 ? 28、f(x)的定義如下:f(x)??x?5x?6,0?x?10,x?2且x?3,寫一個matlab函 ?x2?x?1,其它數func1實現該函數。?MATLAB實習報告 function func1(x)if x<0&&x==-4 y=x^2+x-6;elseif x>=0&x<10&x~=2&x~=3 y=x^2-5*x+6;else y=x.^2-x-1;end fprintf('%dn',y); 9、寫一個MATLAB小程序,求出最小的 n 值,使得 n!> realmax。function f=realmax10()s=1;n=1;while(1)n=n+1;s=s*n;if s>realmax break;end end fprintf(' %dn',n) 10、寫一個 MATLAB 函式 pifun.m 來計算下列級數: f(n)= 4*(11/7 + 1/91.5470i 1.4134 0.2539 2?xk?1?1?yk?14.xk13:對于迭代模型?yk?1?0.3xk? 取初值x0 = 0, y0 = 0, 進行3000次迭代,對于k>1000, 在(xk, yk)處亮一點(注意不要連線)可得所謂Henon引力線圖。 x(1)=0;y(1)=0; for i=1:1:3000;%開始先從一到3000 x(i+1)=1+y(i)-1.4*x(i)^2;y(i+1)=0.3*x(i);hold on plot(x(i),y(i),'*b')end 14:請設計一個程序,程序完成下列功能:(1)讓用戶依次輸入兩個字符串s1和s2; (2)比較兩個字符串的長度并顯示比較結果; (3)判斷s1與s2有沒有長度在3個字符以上的相同子串,顯示判斷結果。 MATLAB實習報告 function f=title24()s1=input('please input s1:請以‘要輸入的字符串’ 格式輸入');s2=input('please input s2:同上');m=length(s1);n=length(s2);t=m;kk=0;if m>n t=n;disp('s1長度>s2長度');elseif m for r=1:kk if strcmp(s1(j:j+i-1),b{r})==1 l=1;break;end end if l==0 kk=kk+1;b{kk}=s1(j:j+i-1);end end end end end if kk>0 for i=1:kk fprintf('第%d個相同字符串:',i);disp(b{i});end MATLAB實習報告 else disp('沒有長度在3字符個以上相同的字符串');end 15:編寫程序模擬楊氏雙縫干涉 兩相干光源到接收屏上P點距離r1=(D2+(y-a/2)2)1/2, r2=(D2+(y+a/2)2)1/2,相位差 Φ=2π(r2-r1)/λ,光強I=4I0cos2(Φ/2)編寫程序 function yangshi()lam=500e-9;a=2e-3;D=1;ym=5*lam*D/a;xs=ym;n=101;ys=linspace(-ym,ym,n);for i=1:n r1=sqrt((ys(i)-a/2).^2+D^2);r2=sqrt((ys(i)+a/2).^2+D^2);phi=2*pi*(r2-r1)./lam;B(i,:)=sum(4*cos(phi/2).^2);end N=255;Br=(B/4.0)*N;subplot(1,2,1);image(xs,ys,Br);colormap(gray(N));subplot(1,2,2);plot(B,ys); 16:編寫程序模擬光柵衍射 公式:I=I0(sinα/α)2(sin(λβ)/sinβ)2 α=(πa/λ)sinΦ β=(πd/λ)sinΦ function guangpu()lam=500e-9;N=2; MATLAB實習報告 a=2e-4;D=5;d=5*a;ym=2*lam*D/a;xs=ym;n=1001;ys=linspace(-ym,ym,n);for i=1:n sinphi=ys(i)/D;alpha=pi*a*sinphi/lam;beta=pi*d*sinphi/lam;B(i,:)=(sin(alpha)./alpha).^2.*(sin(N*beta)./sin(beta)).^2;B1=B/max(B);end NC=255;Br=(B/max(B))*NC;subplot(1,2,1)image(xs,ys,Br);colormap(gray(NC));subplot(1,2,2)plot(B1,ys); 17:繪制三元函數w?x2?y2?z2的可視化圖形 x=-5:0.05:5;y=-5:0.05:5;z=-5:0.05:5;[x,y,z]=meshgrid(x,y,z);v=x.^2+y.^2+z.^2;isosurface(x,y,z,v,10);axis equal MATLAB實習報告 18:繪制 z?f(x,y)?(1?x)?12ln(x?y)的圖象 [x,y,z,v] = flow;q=1./sqrt(1-x).*log(x-y)-z;p = patch(isosurface(x, y, z, v, 0));isonormals(x,y,z,q,p)set(p, 'FaceColor', 'blue', 'EdgeColor', view(3)camlight;lighting 19: 試完成matlab 動畫 霓虹燈效果動畫:一顆花心: clear;clc;close all c=5;t=linspace(-c,c);[x,y]=meshgrid(t);z=17*x.^2-16*abs(x).*y+17*y.^2-225;pcolor(x,y,z);shading interp pause(2);spinmap(10));'none'MATLAB實習報告 20:試完成matlab gui程序 function varargout = ex0(varargin)gui_Singleton = 1;gui_State = struct('gui_Name', mfilename,...'gui_Singleton', gui_Singleton,...'gui_OpeningFcn', @ex0_OpeningFcn,...'gui_OutputFcn', @ex0_OutputFcn,...'gui_LayoutFcn', [] ,...'gui_Callback', []);if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});else gui_mainfcn(gui_State, varargin{:});end function ex0_OpeningFcn(hObject, eventdata, handles, varargin)handles.output = hObject;global i a i=0;a=floor(100*rand);guidata(hObject, handles);function varargout = ex0_OutputFcn(hObject, eventdata, handles)varargout{1} = handles.output; MATLAB實習報告 function x1_Callback(hObject, eventdata, handles)function x1_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end function x2_Callback(hObject, eventdata, handles)function x2_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end function p1_Callback(hObject, eventdata, handles)global i a x1= eval(get(handles.x1,'String'));if x1>a x2='high';set(handles.x2,'string',num2str(x2));elseif x1 x2='YOU ARE WIN';set(handles.x2,'string',num2str(x2));a=floor(100*rand);i=0;end i=i+1;if i==10 x2='YOU ARE LOSE';set(handles.x2,'string',num2str(x2));a=floor(100*rand);i=0;end function p2_Callback(hObject, eventdata, handles)close = questdlg('?úè·?¨òa1?±??e?','è·?¨1?±?','ê?','·?','ê?');switch close MATLAB實習報告 case '·?' case 'ê?' delete(handles.figure1)end 三、第二部分 1:某公司投資2000萬元建成一條生產線。投產后,在時刻t 的追加成本和追加收益分別為G(t)= 5?t?2t2/3(百萬元/年), H(t)=180?t2/3(百萬元/年)。試確定該生產線在合適何時停產可獲最大利潤?最大利潤是多少? 要求:寫出數學模型、M函數(如果需要的話)、運算命令和計算結果。解:利潤函數R(t)=?(H(t)?G(t))dt?20(百萬元)0f(t)=H(t)-G(t)=175-t-3t2/3,f(t)單調遞減,則當f(t)=0時利潤最大 f='175-t-3*t^(2/3)';t=double(solve(f))f=inline('175-t-3*t.^(2./3)');r=quad(f,0,107.2708)-20 t = 1.0e+002 * 1.9536-1.0860i 1.9536 + 1.0860i 1.0727 r =8.6397e+003 即在第108年停產可獲最大利潤,最大利潤為8639.7百萬元。:一幢樓房的后面是一個很大的花園。在花園中緊靠著樓房建有一個溫室,溫室高10英尺,延伸進花園7尺。清潔工要打掃溫室上方的樓房的窗戶。他只有借助于梯子,一頭放在花園中,一頭靠在樓房的墻上,攀援上去進行工作。他只有一架20米長的梯子,你認為他能否成功?能滿足要求的梯子的最小長度是多少? 步驟: 1.先進行問題分析,明確問題; 2.建立模型,并運用Matlab函數求解; 3.對結果進行分析說明; 4.設計程序畫出圖形,對問題進行直觀的分析和了解(主要用畫線函數plot,line) 。若梯子能恰好放置,則梯子的長度f與傾角x關系如下: 7ab?f(x)?? (其中a=m, b=3.048m,0 3cosxsinx2接下來用Matlab求該函數的最小值: L=inline('3.048/sin(x)+2.333/cos(x)','x');x=fminbnd(L,0.01,pi/2-0.01)tMATLAB實習報告 l=subs(L)ezplot('3.048/sin(x)+2.333/cos(x)',[0,pi/2]) 由以上可知梯子的最小長度為7.59m。所以他能成功。 3.某大學青年教師從31歲開始建立自己的養老基金,他把已有的積蓄10000元也一次性地存入,已知月利率為0.001(以復利計),每月存入700元,試問當他60歲退休時,他的退休基金有多少?又若,他退休后每月要從銀行提取1000元,試問多少年后他的基金將用完? function f=title22()s=10000;t=0;for i=1:360 s=s*(1+0.001)+700;end fprintf('60歲退休時退休基金,%d.n',s);while s>0 s=(s-1000)*(1+0.001);t=t+1;end t=ceil(t/12);fprintf('退休后每月要從銀行提取1000元,多少年用完,%d.n',t);>> zs22 60歲退休時退休基金有317480.843330元.退休后每月要從銀行提取1000元,32年后基金將用完.4.經調查發現,電飯鍋銷售速度與當時的銷量成正比?,F在我們來建立一個數學模型以預測銷量。 close;fplot(‘exp(0.9*x)’, [0,10]);%模型1解析解 hold on;[t,x]=ode45(inline(‘0.9*x*(1-x/1000)’,‘t’,‘x’),[0 10],1);%模型2數值解 plot(t,x);axis([0 10 0 1500]); MATLAB實習報告 hold off; 四、心得體會 五、參考文獻: 1.姚東.MATLAB及在電子信息課程中的應用[M].第二版.北京:北京電子工業出版社,2000 2.張智星.MATLAB程序設計與應用.北京:清華大學出版社,2002 3.肖偉、劉忠.MATLAB程序設計與應用[M].北京:清華大學出版社 2005 實驗一 仿真條件:電機空載下,輸入為階躍信號,仿真時間為0.4S。 階躍信號,仿真時間為0.4S。 圖二 磁鏈圖 實驗結果:開始時有摩擦轉矩,在短時間內能夠快速形成圓形轉矩。 圖1 速度響應曲線 實際結果:時間與電機負載轉矩為0時的電機響應速度曲線,速度響應誤差為0。 仿真條件:電機空載下,輸入為 仿真條件:d軸電流設置為0,輸入為階躍信號,電機空載運行響應時間為0.4秒。 圖三 速度電流響應曲線 實際結果:在0.02秒時間達到目標轉速,iq達到穩定。 實驗三 實驗目的:驗證比列系數對穩態跟蹤誤差的影響。 仿真條件:修改KVFF為0,KAFF為0,負載為0,KPP為169,KPD為200.8,kpi為0 圖四 速度 EP的響應曲線 試驗目的:驗證比例系數對穩態跟蹤誤差的關系ESS=V/K穩態跟蹤誤差越來越小。 仿真條件:修改KVFF為0,KAFF為0,負載為0,KPP為500,KPD為200.8,kpi為0。 圖五 速度 EP的響應曲線 試驗目的:驗證比例系數對穩態跟蹤誤差的關系。 仿真條件:修改KVFF為0,KAFF為0,負載為0,KPP為5000,KPD為200.8,kpi為0。 圖六 速度 EP的響應曲線 實驗結果:Ep=V/K,隨著K的增加,V不變,EP漸漸減小,前饋=1,完全補償誤差,穩定位置跟蹤誤差=0.試驗目的:修改前饋系數觀察穩態跟蹤誤差關系。 仿真條件:使KVFF為0.5電機負載為0使電機的摩擦系數為0。 圖七 速度 EP的響應曲線 試驗結論:修改前饋系數觀察穩態跟蹤誤差關系。仿真條件:使KVFF為1電機負載為0使電機的摩擦系數為0。 圖八 速度 EP的響應曲線 實驗結果:由穩態跟蹤誤差=速度/比列系數(ess=v/k)得,比列系數越大,速度不變,穩態跟蹤誤差越大。 實驗二 條件:電流給定信號(iq=500HZF方波),Id=0。電機的摩擦系數為無窮大,看Iq的響應波形。 實驗結果:電機的摩擦系數為1000時,TL會反向轉動。 條件:電流環達到速度環輸出,還原參數速度還比列信號改成正弦波,繼續增加頻率。 正弦波頻率為100HZ 正弦波頻率為200HZ 正弦波頻率為500HZ 正弦波頻率為700HZ 實驗四 實驗條件:建立一個直流電機單速度閉環調節器。 南京工程學院 自動化學院 2013/2014學年第一學期 實習報告 MATLAB與控制系統仿真實習 實習報告成績:評閱老師簽字: 2014年 1月 實習學生班級自動化 101實習學生姓名實習學生學號實習地 點基礎實驗中心 B302實習指導老師陸鋒陳桂實習時 間19-20周第二篇:matlab實習報告
第三篇:MATLAB實習報告
第四篇:Matlab實習報告
第五篇:MATLAB實習報告封面