數學建模期中復習


 

matlab常用函數函數總結:
(1)mod(,);
   rem(,);(正負——mod同前,rem同后); (
2)sin();cos();sind();cosd(); (3)A\b;inv(A);find(); (4double();abs(); (5)zeros(,);ones(,);eye(,);rand(,);randn(,); (6)匿名函數語法:函數名 = @(參數列表)函數體; (7)plot();polar();plot3();ezplot();
   meshgrid();mesh();surf(); (
8)max();min();
   sum();prod();cumsum();cumprod();
   mean();median();std();corrcoef();sort();
   conv();deconv();polyder();polyval();polyvalm();polyfit();
   poly();roots();
   interp1();interp2();
9)diff();
   integral();integral2();integral3(); (
10fzero();fsolve();
   fminbnd();fminsearch();fmincon();
   linprog();bintprog();
   ode23();ode45(); (
11)sym();syms;
   numden();factors();expand();collect();simplify();eval();poly2sum();sum2poly();
   limit();diff();int();symsum();taylor();
   solve();dsolve();

 

 

第二章.數據及其運算

1.mod(x,y),rem(x,y);mod是和y的正負保持一致,rem是和x保持一致

2.sin、cos輸入是弧度,sind、cosd輸入是度

 

3.矩陣操作:

(1)矩陣乘除法:inv(A)*B == B/A == A\B,A*B。

(2)點運算:在運算符前面加“.”,表示將他們的對應元素進行相關運算。  

(3)矩陣乘方:A^x。

(4)矩陣加減法:A+B(維數相同)。

(5)rem(A,3)、mod(A,3)(+-問題rem前,mod后)

4.關系運算:

(1)>、<、>=、<=、==都和c++中運算相同,值得注意的是,matlab中不等於運算是~=而非!=。

(2)當參與邏輯運算的是兩個標量時,正常比較前后大小,表達式的值為0或1,而當參與運算的是兩個矩陣或者一個矩陣和一個標量時,返回的是一個與原矩陣維數相同的0-1矩陣(每個矩陣元素分別運算)。

(3)三種邏輯運算符(注意與C++的區別)與(&)或(|)非(~)。

(4)優先級排序:算術運算>關系運算>邏輯運算

(5)find()函數:調用方式:[i,j,v] = find(A>4):返回的(i,j)是A中>4元素的坐標,V返回的是value

5.字符串

matlab中字符串是由單引號括起來的字符序列,存儲方式和行向量一樣

例如:ch = 'Na+2Ba==Banana';

幾個操作:(其實就是對於行向量的操作)

(1)ch(1:6);                  

(2)ch(end:-1:1);

(3)length(ch);

(4)k = find(ch>='a'&ch<='z');ch(k) = ch(k)-('a'-'A');

(5)eval(ch)函數,作用是將ch內的字符串內容轉換成matlab中的命令

(6)字符串有數據值之間的轉換,matlab中的字符都是以ASCII碼形式存儲的,可使用abs和double函數將其轉換成數值向量

(7)字符串的連接:使用strcat函數,調用方式strcat(s1,s2,s3,...,sn)。

(8)字符串比較:1.strcmp(s1,s2),比較s1,s2是否相等。

         2.strncmp(s1,s2),比較s1,s2前n個字符是否相等。

         3.strcmpi(s1,s2),在不考慮大小寫的情況下比較s1和s2。

         4.strncmpi(s1,s2),在不考慮大小寫的情況下比較兩字符串的前n個字符是否相等。

 

 

第三章.矩陣運算

1.特殊矩陣

  (1)zeros  //全零

  (2)ones  //全幺

  (3)eye    //產生單位陣

  (4)rand   //產生在0~1區間內服從均勻分布的矩陣

  (5)randn  //產生均值為0,方差為1的服從標准正態分布的矩陣

例如:產生在【20,50】范圍內的服從均勻分布的5階矩陣:20+30*rand(5)

   產生均值為0.6,方差為0.1的服從標准正太分布的5階矩陣:0.6+sqrt(0.1)*randn(5)

 2.矩陣變換:

(1)提取對角陣的元素:diag(A,k)函數,用以返回(A為m*n)min(m,n)個元素的列向量

   diag(m);(m為一m元素行向量),用以使用m作為對角線元素創建一個m*m的矩陣

   diag(V,k);以V中元素作為矩陣第k條對角線上的元素創建(m+k)規模的矩陣

(2)提取三角陣:

  triu(A)、triu(A,k);

  tril(A)、tril(A,k);

(3)矩陣轉置:

  A'

(4)矩陣旋轉:

  rot90(A,k);將矩陣逆時針旋轉90度的k倍,k == 1時可省略。

(5)矩陣翻轉

  fliplr(A)左右翻轉

  flipud(A)上下翻轉

3.矩陣求值

det(A)、rank(A)、trace(A)、eig(A)
(inf->表示無窮)

  應用:解方程p為多項式系數,A = compan(p);A為p的伴隨矩陣,x1 = eig(A)即位方程的解。

第四章.程序流程控制

(1)M文件:其實就是一種文本文件

(2)創建函數:一般創建函數

例如:

function[a,b] = fun(a,b)
c = a;
a = b;
b = c;

(3)輸入輸出:input;調用方式:x = input('提示信息');或者x = input('提示信息','s');第二種允許輸入字符串。

         disp;

(4)選擇分支:

if 
elseif 
elseif
.
.
.
else
end
switch 表達式
case 表達式
語句
case 表達式
語句
.
.
.
otherwise
語句
end

(5)try語句

try 
語句組1
catch
語句組2
end

(6)for語句

for 循環變量 = a:b:c    %只要是一個矩陣就行
    語句
end

(7)while語句

%一般格式
while(條件)
    循環體語句
end

(8)break、continue

和c/c++一樣

(9)內聯函數:

a = '(x+y)^2';
f = inline(a);

(10)匿名函數:

f = @(變量名表)函數表達式

 第五章.繪圖

(1)繪制二維曲線

  直角坐標:

plot()函數:plot(x,y);plot(x1,y1,'選項',x2,y2,'選項');plot(x);

 

 

 

 極坐標:

polar()函數:polar(theta,rou);polar(theta1,rou1,theta2,rou2)

ezpolt(f);默認在-2*Π到2*Π范圍內繪圖;

ezplot(f,[a,b]);f可以是字符串。

 (2)繪制三維圖形

plot3(x1,y1,z1,x2,y2,z2)

[X,Y] = mehgrid(x,y);

mesh(x,y);

surf(x,y);

 第六章.數據分析與多項式計算

(1)max、min函數[Y,U] = max(A,dim)、max(A,n)(n是標量)、max(A,B)(AB同維)

(2)sum(A,dim)、prod(A,dim);cumsum(A,dim),cumprod(A,dim);

(3)mean(A,dim)求平均值;median(A,dim)(求中值);

(4)std(A,flag,dim);(求標准差)flag = 0->無偏,flag = 0->有偏;

(5)corrcoef(A,B);

(6)[Y,I] = sort(A,dim,mode);mode = ['ascend'|'descend'];

(7)conv(P1,P2);(兩多項式的乘積);

(8)[Q,r] = deconv(P1,P2);Q->商,r->余項

(9)polyder(P);polyder(P1,P2);(P1*P2的導數);[p,q] = polyder(P1,P2);(求P1/P2的導數)

(10)Y = polyval(P,x);polyvalm(P,X);polyval->對於實數計算、polyvalm->對於矩陣計算;

(11)x = roots(P);poly(x);roots->求根、poly->根據根構造多項式;

(12)Y = interp1(X,Y,x,method);method = ['linear'|'nearest'|'pchip'|'spline'],interp2(X,Y,Z,X1,Y1,method);

(13)[P,S,mu] = polyfit(X,Y,m);依據X,Y對應關系產生一個m次多項式,P->多項式系數向量,S->誤差向量,mu是一個二維向量mu[1]->mean(x),mu[2]->std(x)

第七章.數值積分與微分

(1)Y = diff(X,n,dim);n階差分;

(2)求函數導數方法:1.直接差分求導2.多項式擬合后,polyder

(3)[I,n] = quad/quadl(filename,a,b,tol,trace);(定積分)

(4)integral(filename,a,b);上下限可為無窮大(inf)

(5)多重積分:integral2(filename,a,b,c,d);(二重)integral3(filename,a,b,c,d,e,f);(三重)

第八章.方程求解問題

(一)線性方程組求解

(1)直接法:利用'\'運算符,Ax = b;->x = A\b;

(2)迭代法。

(二)線性方程組的通解

matlab中無直接求解通解的函數

(三)非線性方程

(1)單變量非線性方程求解問題:

fzero(filename,x0,tol,trace);(只給出最靠近x0的那個解)(牛頓迭代法)

(2)多變量非線性方程組求解問題:

fsolve(filename,X0,option)

(四)最優化問題

無約束最優化問題:

(1)[x,fval] = fminbnd(filename,x1,x2);

求函數在(x1,x2)范圍內的最小值;

(2)[x,fval] = fminsearch(filename,[坐標]);

求函數在點附近的最小值

有約束最優化問題:

(1)[X,y] = fmincon(filename,x0,A,b,Aeq,Beq,Lbnd,Ubnd,NonF,option);

說明:Ax<=b;Aeq*x = Beq;Lbnd<=x<=Ubnd;NonF為非線性約束條件的文件名。

沒有的條件使用'[]'代替

線性規划問題求解:

(1)[X,fval] = linprog(f,A,b,Aeq,Beq,Lbnd,Ubnd);

默認都是求解最小值;f是各個變量前面的系數組成的列向量

整數規划問題求解:

(1)[x,fval] = bintprog(f,A,b,Aeq,Beq,x0,option);

求解一階數值微分的初值問題:

ode23、ode45、ode113、ode23s、ode23t、ode15s;

語法均相同:[t,y] = ode23(filename,[t0,tf],y0);

y0表示t = t0時的函數值。

第九章.符號計算:

(1)sym函數:x = sym('a');

(2)syms函數:syms 變量名1 變量名2 變量名3 ...

值得注意的是:1.變量名之間不要用逗號隔開,而是使用空格,2.變量名不需要使用單引號括起來。

(3)建立符號表達式的三種方式:

1.直接使用單引號括起來:U = ‘表達式’;

2.使用sym函數:U = sym('表達式');

3.使用已經定義過的符號變量生成的表達式就是符號表達式:

syms  a  b  c;

U = a^2+2*b+c;

(4)對定義的變量設置值域:

assume函數:

1.assume(條件);syms x;assume(x>0);

2.assume(符號表達式,集合);表示符號表達式屬於集合。

(5)提取符號表達式的分子分母:

[p1,p2] = numden(S);

p1->分子;p2->分母;

(6)符號表達式的因式分解與展開:

factors(s);因式分解;

expand(S);展開;

collect(S);對S進行合並同類項;

collect(S,v);對S按變量v進行合並同類項;

對符號表達式的化簡:simplify(S);

(7)將符號表達式轉換成數值表達式:

eval(y);

(8)符號表達式和數值表達式之間的轉換:

poly2sym(p(,x)),將多項式系數向量p按照x轉換成符號表達式;

sym2poly(符號表達式);將符號表達式轉換成多項式系數向量;

(9)提取符號表達式內的變量:

findsym(s,n);symvar(s1,n);

n可省(返回s中全部符號變量),若不省,返回S中距離x最近的n個變量;

(10)符號極限:

limit(f,x,a,'right/left');a默認趨近於0,x未指定時等於最靠近x的變量

(11)符號導數:

diff(S,'v',n);對於符號表達式S,對‘v’求n階導;

(12)符號積分:

int(f);

int(f,'v');

int(f,'v',a,b);

(13)符號級數:

symsum(s,'v',n,m);

s->通項;

'v'->求和變量;

n、m開始結束項數;

(14)泰勒展開式:

taloy(f,v,a,Name,Value);

Name->字符串;Name = ['order'|'Expansionpoint'];

Value->Name的值;order->截斷階,默認值為6,即最高階為5;

(15)符號代數方程求解

函數

solve(s);求解符號函數的方程,求解變量為默認變量;

solve(s,v);按變量v求解方程;

solve(s1,s2,s3,s4,s5,...,sn,v1,v2,v3,v4,...,vn);求解由si組成的代數方程組,變量分別為vi(i = 1,2,3,4...)

(16)求解常微分方程:

dsolve(e,c,v);

e->常系數微分符號方程;(Dny->對y的n階導數)

c->初值條件;

v->指定變量;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM