請教matlab關於s函式多輸入和多輸出的問題

時間 2021-12-28 01:59:14

1樓:匿名使用者

7.1.1 分段線性插值

所謂分段線性插值就是通過插值點用折線段連線起來逼近原曲線,這也是計算機繪製圖形的基本原理。實現分段線性插值不需編制函式程式,matlab自身提供了內部函式interp1其主要用法如下:

interp1(x,y,xi) 一維插值

◆ yi=interp1(x,y,xi)

對一組點(x,y) 進行插值,計算插值點xi的函式值。x為節點向量值,y為對應的節點函式值。如果y 為矩陣,則插值對y 的每一列進行,若y 的維數超出x 或 xi 的維數,則返回nan。

◆ yi=interp1(y,xi)

此格式預設x=1:n ,n為向量y的元素個數值,或等於矩陣y的size(y,1)。

◆ yi=interp1(x,y,xi,』method』)

method用來指定插值的演算法。預設為線性演算法。其值常用的可以是如下的字串。

● nearest 線性最近項插值。

● linear 線性插值。

● spline 三次樣條插值。

● cubic 三次插值。

所有的插值方法要求x是單調的。x 也可能並非連續等距的。

正弦曲線的插值示例:

>> x=0:0.1:10;

>> y=sin(x);

>> xi=0:0.25:10;

>> yi=interp1(x,y,xi);

>> plot(x,y,』0』,xi,yi)

則可以得到相應的插值曲線(讀者可自己上機實驗)。

matlab也能夠完成二維插值的運算,相應的函式為interp2,使用方法與interpl基本相同,只是輸入和輸出的引數為矩陣,對應於二維平面上的資料點,詳細的用法見matlab聯機幫助。

7.1.2 最小二乘法擬合

在科學實驗的統計方法研究中,往往要從一組實驗資料中尋找出自變數x 和因變數y之間的函式關係y=f(x) 。由於觀測資料往往不夠準確,因此並不要求y=f(x)經過所有的點 ,而只要求在給定點上誤差按照某種標準達到最小,通常採用歐氏範數作為誤差量度的標準。這就是所謂的最小二乘法。

在matlab中實現最小二乘法擬合通常採用polyfit函式進行。

函式polyfit是指用乙個多項式函式來對已知資料進行擬合,我們以下列資料為例介紹這個函式的用法:

>> x=0:0.1:1;

>> y=[ -0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2 ]

為了使用polyfit,首先必須指定我們希望以多少階多項式對以上資料進行擬合,如果我們指定一階多項式,結果為線性近似,通常稱為線性回歸。我們選擇二階多項式進行擬合。

>> p= polyfit (x, y, 2)

p=-9.8108 20.1293 -0.0317

函式返回的是乙個多項式係數的行向量,寫成多項式形式為:

為了比較擬合結果,我們繪製兩者的圖形:

>> xi=linspace (0, 1, 100); %繪圖的x-軸資料。

>> z=polyval (p, xi); %得到多項式在資料點處的值。

當然,我們也可以選擇更高冪次的多項式進行擬合,如10階:

>> p=polyfit (x, y, 10);

>> xi=linspace (0, 1,100);

>> z=ployval (p, xi);

讀者可以上機繪圖進行比較,曲線在資料點附近更加接近資料點的測量值了,但從整體上來說,曲線波動比較大,並不一定適合實際使用的需要,所以在進行高階曲線擬合時,「越高越好」的觀點不一定對的。

7.2 符號工具箱及其應用

在數學應用中,常常需要做極限、微分、求導數等運算,matlab稱這些運算為符號運算。matlab的符號運算功能是通過呼叫符號運算工具箱(symbolic math toolbox)內的工具實現,其核心是借用maple數學軟體的。matlab的符號運算工具箱包含了微積分運算、化簡和代換、解方程等幾個方面的工具,其詳細內容可通過matlab系統的聯機幫助查閱,本節僅對它的常用功能做簡單介紹。

7.2.1 符號變數與符號表示式

matlab符號運算工具箱處理的物件主要是符號變數與符號表示式。要實現其符號運算,首先需要將處理物件定義為符號變數或符號表示式,其定義格式如下:

格式1: sym (『變數名』) 或 sym (『表示式』)

功能: 定義乙個符號變數或符號表示式。

例如:>> sym (『x』) % 定義變數x為符號變數

>> sym(『x+1』) % 定義表示式x+1為符號表示式

格式2: syms 變數名1 變數名2 …… 變數名n

功能: 定義變數名1、變數2 ……、變數名 n為符號變數。

例如:>> syms a b x t % 定義a,b, x,t 均為符號變數

7.2.2 微積分運算

1、極限

格式:limit (f, t, a, 『left』 or 『right』)

功能:求符號變數t 趨近a 時,函式f 的(左或右)極限。『left』 表示求左極限,『right』 表示求右極限,省略時表示求一般極限;a省略時變數t 趨近0; t省略時預設變數為x ,若無x則尋找(字母表上)最接近字母x 的變數。

例如:求極限的命令及結果為:

>> syms x t

>> limit ((1+2*t/x)^(3*x) , x, inf )

ans=

exp(6*t)

再如求函式x / |x| ,當時的左極限和右極限,命令及結果為:

>> syms x

>> limit(x/abs(x), x, 0, 』left』) ans = -1

>> limit(x/abs(x),x, 0, 』right』) ans = 1

2、導數

格式: diff (f,t,n)

功能: 求函式f 對變數 t的n 階導數。當n省略時,預設 n=1;當t省略時,預設變數x, 若無x時則查詢字母表上最接近字母x 的字母。

例如:求函式f=a*x^2+b*x+c對變數 x的一階導數, 命令及結果為

>> syms a b c x

>> f=a*x^2+b*x+c;

>> diff(f)

ans=

2*a*x+b

求函式f 對變數b的一階導數(可看作求偏導), 命令及結果為

>> diff(f,b) ans=x

求函式f 對變數x的二階導數, 命令及結果為

>> diff(f,2) ans=2*a

3、積分

格式: int(f,t,a,b)

功能: 求函式f 對變數 t從a 到b的定積分. 當a和b省略時求不定積分;當t省略時, 預設變數為(字母表上)最接近字母x的變數。

例如:求函式f=a*x^2+b*x+c對變數x不定積分, 命令及結果為

>> syms a b c x

>> f=a*x^2+b*x+c;

>> int(f)

ans=

1/3*a*x^3+1/2*b*x^2+c*x

求函式f 對變數b不定積分, 命令及結果為

>> int(f,b)

ans=

a*x^2*b+1/2*b^2*x+c*b

求函式f 對變數x 從 1到5的定積分, 命令及結果為

>> int(f,1,5)

ans=

124/3*a+12*b+4*c

4、級數求和

格式: symsum (s,t,a,b)

功能:求表示式s中的符號變數t從第a項到第b項的級數和。

例如: 求級數的前三項的和, 命令及結果為

>> symsum(1/x,1,3) ans=11/6

7.2.3 化簡和代換

matlab符號運算工具箱中,包括了較多的代數式化簡和代換功能,下面僅舉出部分常見運算。

simplify 利用各種恒等式化簡代數式

expand 將乘積為和式

factor 把多項式轉換為乘積形式

collect 合併同類項

horner 把多項式轉換為巢狀表示形式

例如:進行合併同類項執行

>> syms x

>> collect(3*x^3-0.5*x^3+3*x^2)

ans=

5/2*x^3+3*x^2)

進行因式分解執行

>> factor(3*x^3-0.5*x^3+3*x^2)

ans=

1/2*x^2*(5*x+6)

7.2.4 解方程

1、代數方程

格式:solve (f,t)

功能:對變數t 解方程f=0,t 預設時預設為x 或最接近字母x 的符號變數。

例如:求解一元二次方程f=a*x^2+b*x+c的實根,

>> syms a b c x

>> f=a*x^2+b*x+c;

>> solve (f,x)

ans=

[1/2/a*(-b+(b^2-4*a*c)^ (1/2))]

[1/2/a*(-b-(b^2-4*a*c)^ (1/2))]

2、微分方程

格式:dsolve(『s』, 』s1』, 』s2』,…, 』x』)

其中s為方程;s1,s2,……為初始條件,預設時給出含任意常數c1,c2,……的通解;x為自變數,預設時預設為t 。

例如:求微分方程的通解

>> dsolve(『dy=1+y^2』)

ans=

tan(t+c1)

7.3 優化工具箱及其應用

在工程設計、經濟管理和科學研究等諸多領域中,人們常常會遇到這樣的問題:如何從一切可能的方案中選擇最好、最優的方案,在數學上把這類問題稱為最優化問題。這類問題很多,例如當設計乙個機械零件時如何在保證強度的前提下使重量最輕

或用量最省(當然偷工減料除外);如何確定引數,使其承載能力最高;在安排生產時,如何在現有的人力、裝置的條件下,合理安排生產,使其產品的總產值最高;在確定庫存時如何在保證銷售量的前提下,使庫存成本最小;在物資調配時,如何組織運輸使運輸費用最少。這些都屬於最優化問題所研究的物件。

matlab的優化工具箱被放在toolbox目錄下的optim子目錄中,其中包括有若干個常用的求解函式最優化問題的程式。matlab的優化工具箱也在不斷地完善。不同版本的matlab,其工具箱不完全相同。

在matlab5.3版本中,對優化工具箱作了全面的改進。每個原有的常用程式都重新編制了乙個新的程式。

除fzero和fsolve外都重新起了名字。這些新程式使用一套新的控制演算法的選項。與原有的程式相比,新程式的功能增強了。

在matlab5.3和6.0版本中,原有的優化程式(除fzero和fsolve外)仍然保留並且可以使用,但是它們遲早會被撤消的。

鑑於上述情況,本書將只介紹那些新的常用的幾個優化程式。

請教高手,怎麼用matlab畫以下函式的三維圖(以x,y,z為座標)

matlab好像只能畫曲線和曲面,不能畫三維實體,你試試這個樣子的圖你能不能接收吧。for i linspace pi 6,pi 6,20 for j linspace pi 6,pi 6,10 for k linspace pi 6,pi 6,10 x cos i cos j cos k cos ...

matlab中的disp函式和num2str()函式如何使用

disp即display,可用來顯示字串 計算結果等 例子 x 1 2 3 disp the values of x are num2str x 結果顯示為 the values of x are 1 2 3str num2str a 把陣列a中的數轉換成字串表示形式。str num2str a,p...

請教ecel高手問題關於lookup函式應用的

山桑弓 假設原始資料在a1 a100中,b1中輸入 lookup a1,將b1公式用自動填充柄下拉。再簡化點 lookup a1,1 回答補充 大括號代表常量陣列,裡面不能變數,不能放放單元格引用,如果放入單元格位址,只能被當作文字,起不到單元格引用的作用,而且,這樣的寫法也是不對的,就算是文字,也...