数学建模期中复习


 

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