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