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