計算方法試驗報告3【實(shí)驗目的】檢查各種數值計算方法的長(cháng)期行為【內容】給定方程組x'(t)=ay(t),y'(t)=bx(t), x(0)=0, y(0)=b的解是x-y平面上的一個(gè)橢圓,利用你已經(jīng)知道的算法,取足夠小的步長(cháng),計算上述方程的軌道,看看那種算法能夠保持橢圓軌道不變。
(計算的時(shí)間步長(cháng)要足夠多)【實(shí)驗設計】用一下四種方法來(lái)計算:1. Euler法2. 梯形法3. 4階RK法4. 多步法Adams公式【實(shí)驗過(guò)程】1. Euler法具體的代碼如下:clear;a=2;b=1;A=[0 a; -b 0];U=[];u(:,1)=[0;b];n=1000000;h=6*pi/n;for i=1:n delta(i)=((u(1,i)/a)^2+(u(2,i)/b)^2)^0.5; u(:,i+1)=u(:,i)+h*A*u(:,i);endt=1:n+1;subplot(1,2,1);plot(1:n,delta);grid on;subplot(1,2,2);plot(u(1,:),u(2,:));grid on;max(abs(delta-ones(1,length(delta))));結果如下:2. 梯形法具體的代碼如下:clear;a=2;b=1;A=[0 a; -b 0];U=[];u(:,1)=[0;b];n=300;h=6*pi/n;for i=1:n delta(i)=((u(1,i)/a)^2+(u(2,i)/b)^2)^0.5; v1=u(:,i)+h*A*u(:,i); v2=u(:,i)+h*A*(u(:,i)+v1)/2; u(:,i+1)=u(:,i)+h*A*(u(:,i)+v2)/2;endt=1:n+1;subplot(1,2,1);plot(1:n,delta);grid on;subplot(1,2,2);結果如下3. 4階RK法clear;a=2;b=1;A=[0 a; -b 0];U=[];u(:,1)=[0;b];n=70;h=6*pi/n;for i=1:n delta(i)=((u(1,i)/a)^2+(u(2,i)/b)^2)^0.5; k1=A*u(:,i); k2=A*(u(:,i)+h/2*k2); k3=A*(u(:,i)+h*k3); k4=A*(u(:,i)+h*k3); u(:,i+1)=u(:,i)+h/6*(k1+2*k2+2*k3+k4);endt=1:n+1;subplot(1,2,1);plot(1:n,delta);grid on;subplot(1,2,2);結果如下:4. 多步法Adams公式clear;a=2;b=1;A=[0 a; -b 0];U=[];u(:,1)=[0;b];n=200;h=6*pi/n; u(:;2)=u(u,1)+h*A*u(:,1); u(:;3)=u(u,2)+h/2*A*(3*u(:,2)-u(:,1)); u(:;4)=u(u,3)+h/12*A*(23*u(:,3)-16*u(:,2)+5*u(:,1)); delta(1)=((u(1,1)/a)^2+(u(2,1)/b^2)^0.5 delta(2)=((u(1,2)/a)^2+(u(2,2)/b^2)^0.5 delta(3)=((u(1,3)/a)^2+(u(2,3)/b^2)^0.5for i=4:n delta(i)=((u(1,i)/a)^2+(u(2,i)/b)^2)^0.5; u(:,i+1)=u(:,i)+h/24*A*(55*u(:,i)-59*u(:,i-1)+37*u(:,i-1)+37*u(:,i-2)-9*u(:,i-3));endt=1:n+1;subplot(1,2,1);plot(1:n,delta);grid on;subplot(1,2,2);結果如下:【實(shí)驗分析】通過(guò)這幾種方法對比,發(fā)現最為穩定的是多步法Adams公式和4階RK法,其次是梯形法,而歐拉法最為不穩定。
MATLAB 基礎知識
一、MATLAB簡(jiǎn)介
二、MATLAB基礎知識
1、命令窗口是用戶(hù)與MATLAB進(jìn)行交互作業(yè)的主要場(chǎng)所,用戶(hù)輸入的MATLAB交互命令均在命令窗口執行。
例如:在MATLAB命令窗口下鍵入
a=[3 2 3;4 7 6;7 5 9]
按回車(chē)鍵后,顯示結果
a=
3 2 3
4 7 6
7 5 9
2、求逆矩陣命令
格式:[變量]=inv(參數)
例如:輸入b=inv(a),按回車(chē)后,顯示
b= 1.3750 -0.1250 -0.3750
0.2500 0.2500 -0.2500
-1.2083 -0.0417 0.5417
3、MATLAB系統還具有保存歷史紀錄的功能,它將本次啟動(dòng)MATLAB系統之后,用戶(hù)輸入的命令和創(chuàng )建的所有變量的值保存起來(lái),用戶(hù)通過(guò)方向鍵可查找所需的命令。
MATLAB提供了存儲變量和刪除變量的命令。
SAVE [文件名] [變量名1,變量名2,。.]
功能:將命令中的變量保存在給出的文件中。
說(shuō)明:(1)若過(guò)文件名省略,默認保存在MATLAB.MAT中。
(2)若變量名省略,則保存所有的變量到指定的文件中。
(3)若文件名和變量名都省略,則保存所有定義過(guò)的變量到MATLAB.MAT中。
例如:SAVE AA.MAT a b c %將變量a b c保存在文件AA.MAT中。
SAVE BB.MAT % 將所有的變量保存到文件BB.MAT中。
SAVE % 將所有變量保存到文件MATLAB.MAT中。
clear [變量名1 變量名2,。]
功能:刪除指定的變量。
說(shuō)明:若變量名表省略,表明刪除當前工作空間中的所有變量。
例如:clear a b c %刪除變量a b c
clear %刪除當前工作空間的所有變量。
MATLAB還提供了一些命令,專(zhuān)門(mén)管理和控制命令窗口。例如:
clc
格式:clc
功能:清除命令窗口。
home
格式:home
功能:光標移動(dòng)到左上角
who
格式:who
功能:查看當前的所有變量,只給出變量名。
whos
格式:whos
功能:查看當前的所有變量,給出變量的詳細信息。信息同變量瀏覽器。
clear
格式:clear [變量名]
功能:刪除后面列出的變量,如果變量名省略,則刪除所有的變量。
4、MATLAB中的常量
MATLAB提供了整數、實(shí)數、復數和字符四種類(lèi)型數據。對應的常量類(lèi)型也是這四種。實(shí)數在屏幕顯時(shí)默認的小數位數為4位。可以用命令改變實(shí)數的顯示格式。
命令format
格式:format '格式'
例如:format long :輸出實(shí)數為16位
format short e :5位加指數
format long e : 16位加指數
format rat : 有理數近似
矩陣操作
1、提取矩陣的元素
例如:A=[1 2 3 3; 3 2 4 1; 3 4 5 6]
執行b=A(1,2),結果為:
b= 2
執行v=A([1,2],[3,4]),結果為:
v= 3 3
4 1
對于第一個(gè)問(wèn)題可以直接采用函數求解的方法 y1=dsolve('D2y+4*Dy+29*y=0','Dy(0)=15',' y(0)=0','x') y1=(3*sin(5*x))/exp(2*x) y2=dsolve('D2y-2*Dy+5*y=sin(2*x)') y2=sin(2*x)/5 + C5*cos(2*t)*exp(t) + C6*sin(2*t)*exp(t) 對于第三個(gè)問(wèn)題,那么不能求出通解,所以只能借助于數值求解的方法來(lái)求解,數值求解采用ode45函數來(lái)求解的方法,具體過(guò)程如下: 先編寫(xiě)待求解的微分方程函數,打開(kāi)編輯器: %編寫(xiě)要求解的微分方程組函數表達式! function dy = rigid(t,y) dy = zeros(3,1); % 定義數組函數! dy(1) = y(2) * y(3);%第一個(gè)微分方程; dy(2) = -y(1) * y(3);%第二個(gè)微分方程; dy(3) = -0.51 * y(1) * y(2);%第三個(gè)微分方程; 并以默認的文件名保存函數文件! 編寫(xiě)命令行,對微分方程求解: options = odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4 1e-5]);%定義求解選項包含精度項! [T,Y] = ode45(@rigid,[0 12],[0 1 1],options);%采用ode45求解方程組,并把求解結果保存到數組T,Y中! plot(T,Y(:,1),'r-',T,Y(:,2),'b-.',T,Y(:,3),'k.')%作圖! grid minor%網(wǎng)格化! 運行上面的代碼就得到函數的解: 附上圖片! 如果有什么問(wèn)題可以問(wèn)我!。
MATLAB 語(yǔ)言是當今國際上科學(xué)界 (尤其是自動(dòng)控制領(lǐng)域) 最具影響力、也是最有活力的軟件。它起源于矩陣運算,并已經(jīng)發(fā)展成一種高度集成的計算機語(yǔ)言。它提供了強大的科學(xué)運算、靈活的程序設計流程、高質(zhì)量的圖形可視化與界面設計、便捷的與其他程序和語(yǔ)言接口的功能。MATLAB 語(yǔ)言在各國高校與研究單位起著(zhù)重大的作用。
補充:
MATLAB的含義是矩陣實(shí)驗室(MATRIX LABORATORY),主要用于方便矩陣的存取,其基本元素是無(wú)須定義維數的矩陣。MATLAB自問(wèn)世以來(lái),就是以數值計算稱(chēng)雄。MATLAB進(jìn)行數值計算的基本單位是復數數組(或稱(chēng)陣列),這使得MATLAB高度“向量化”。經(jīng)過(guò)十幾年的完善和擴充,現已發(fā)展成為線(xiàn)性代數課程的標準工具。由于它不需定義數組的維數,并給出矩陣函數、特殊矩陣專(zhuān)門(mén)的庫函數,使之在求解諸如信號處理、建模、系統識別、控制、優(yōu)化等領(lǐng)域的問(wèn)題時(shí),顯得大為簡(jiǎn)捷、高效、方便,這是其它高級語(yǔ)言所不能比擬的。美國許多大學(xué)的實(shí)驗室都安裝有MATLAB供學(xué)習和研究之用。在那里,MATLAB是攻讀學(xué)位的大學(xué)生碩士生、博士生必須掌握的基本工具。MATLAB中包括了被稱(chēng)作工具箱(TOOLBOX)的各類(lèi)應用問(wèn)題的求解工具。工具箱實(shí)際上是對MATLAB進(jìn)行擴展應用的一系列 MATLAB函數(稱(chēng)為M文件),它可用來(lái)求解各類(lèi)學(xué)科的問(wèn)題,包括信號處理、圖象處理、控制系統辨識、神經(jīng)網(wǎng)絡(luò )等。隨著(zhù)MATLAB版本的不斷升級,其所含的工具箱的功能也越來(lái)越豐富,因此,應用范圍也越來(lái)越廣泛,成為涉及數值分析的各類(lèi)工程師不可不用的工具。 MATLAB5.3中包括了圖形界面編輯GUI,改變了以前單一的“在指令窗通過(guò)文本形的指令進(jìn)行各種操作”的狀況。這可讓使用者也可以象VB、VC、VJ、DELPHI等那樣進(jìn)行一般的可視化的程序編輯。在命令窗口(matlab command window)鍵入simulink,就出現(SIMULINK) 窗口。以往十分困難的系統仿真問(wèn)題,用SIMULINK只需拖動(dòng)鼠標即可輕而易舉地解決問(wèn)題,這也是近來(lái)受到重視的原因所在。
作圖的plot函數和ezplot比較常見(jiàn)
差分的沒(méi)看,不知道
線(xiàn)性的linprog或者用牛頓法,都可以,前面的比較好用
非線(xiàn)性用最小二乘或者lsqcurvefit非線(xiàn)性擬合
優(yōu)化的有很多,黃金分割,進(jìn)退法,這些都可以,最速下降法都可以,這幾個(gè)也是可以用手算的,當然最速下降法手算有點(diǎn)難,因為當他接近目標的時(shí)候會(huì )很慢,算很多次,一般先最速下降,后牛頓,這樣配合比較好
聲明:本網(wǎng)站尊重并保護知識產(chǎn)權,根據《信息網(wǎng)絡(luò )傳播權保護條例》,如果我們轉載的作品侵犯了您的權利,請在一個(gè)月內通知我們,我們會(huì )及時(shí)刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學(xué)習?shū)B(niǎo). 頁(yè)面生成時(shí)間:2.646秒