intersectab返回向量ab的公共部分.docx

上传人:b****6 文档编号:6630169 上传时间:2023-01-08 格式:DOCX 页数:28 大小:337KB
下载 相关 举报
intersectab返回向量ab的公共部分.docx_第1页
第1页 / 共28页
intersectab返回向量ab的公共部分.docx_第2页
第2页 / 共28页
intersectab返回向量ab的公共部分.docx_第3页
第3页 / 共28页
intersectab返回向量ab的公共部分.docx_第4页
第4页 / 共28页
intersectab返回向量ab的公共部分.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

intersectab返回向量ab的公共部分.docx

《intersectab返回向量ab的公共部分.docx》由会员分享,可在线阅读,更多相关《intersectab返回向量ab的公共部分.docx(28页珍藏版)》请在冰豆网上搜索。

intersectab返回向量ab的公共部分.docx

intersectab返回向量ab的公共部分

intersect(a,b):

返回向量a,b的公共部分

intersect(A,B,'row'):

A,B为相同列数的矩阵,返回元素相同的行

[c,ia,ib]=intersect(a,b):

c为a,b的公共元素,ia表示公共元素在a中的位置,ib表示公共元素在b中的位置

c=setdiff(a,b):

返回属于a但不属于b的不同元素的集合,即c=a-b

c=setdiff(A,B,'row'):

返回属于A但不属于B的不同行

[c,i]=setdiff(...):

c与前面一致,i表示c中元素在a中的位置

c=setxor(a,b):

返回a,b交集的非

c=setxor(A,B,'row'):

返回矩阵A,B的非,A,B有相同的列数

[x,ia,ib]=setxor(...):

ia,ib表示c中元素分别在a(或A),b(或B)中的位置

c=union(a,b):

a,b的交集

c=union(A,B,'row'):

返回A,B矩阵不同行向量构成的大矩阵,其中相同行向量只取其一

[c,ia,ib]=union(...):

ia,ib分别表示c中行向量在原矩阵(向量)中的位置

dot(a,b):

若a,b为向量,a和b长度必须相同,返回向量a,b的点积;若a,b为矩阵,则a,b必须有相同的维数

dot=(A,B,dim):

在dim维数中给出A与B的点积

c=cross(a,b):

若a,b为向量,则c=a*b,a,b必须是3个元素的向量;若a,b为矩阵,则返回一个3*n的矩阵,其中的列式a与b对应列的叉积,a,b都是3*n矩阵

c=cross(a,b,dim):

在dim维数在给出向量a,b的叉积,a和b必须有相同的维数,size(a,dim),size(b,dim)必须是3

混合积:

x=dot(a,cross(b,c)),即a.(b*c),先叉积后点积

向量的长度:

sqrt(dot(a,a))或sqrt(sum(a.*a))

向量的方向角:

r=sqrt(dot(A,A));%计算向量A的长度

alpha=acos(A

(1)/r);%向量A与x轴的夹角

beta=acos(A

(2)/r);%向量A与y轴的夹角

gamma=acos(A(3)/r);%向量A与z轴的夹角

R1=sqrt(dot(a,a));R2=sqrt(dot(b,b));

alpha=acos(dot(a,b)/R1/R2)%计算向量a,b间的夹角

 

解析几何简单应用

(1)点与点之间的距离

s=A-B;

r=sqrt(dot(s,s))%计算A,B两点间的距离

(2)点与平面的距离

平面方程Ax+By+Cz+D=0,用f=[A,B,C,D],点P(a,b,c)用P=[a,b,c]表示。

d1=dot(f,[P,1]);%计算Aa+Bb+Cc+D

d2=sqrt(dot(f(1:

3),f(1:

3)));%计算(A^2+B^2+C^2)^(1/2)

d=abs(d1/d2)%d为点P到平面f的距离

(3)点与直线的距离

将直线

表示为点O=[

]和向量v=[A,B,C],距离

vs=p-pv;%计算

d1=sqrt(dot(v,v));%计算

c=cross(v,vs)%计算

d2=sqrt(dot(c,c))%计算

d=d2/d1%计算点P到直线的距离d

 

多项式和线性方程组的求解

1.p=[1,-4,7,-31];

poly2sym(p)%poly2sym(p)命令是将多项式向量转变为符号形式

2.A=[1,2,3;4,5,6;7,8,9];

p=poly(A)%特征根

poly2sym(p)%特征多项式

3.r=[1,3,7]%已知多项式的根为1,3,7

p=poly(r)%由根创建多项式的系数

poly2sym(p)%由根创建多项式

4.多项式的运算

(1)计算两多项式

的和、积、商,

p=[2,1,0,-5,3];s=[1,1,1];s0=[0,0,1,1,];

p+s0%多项式加法,向量p,s必须同维,将s扩展成s0

conv(p,s)%多项式乘法,此时s不必扩维成s0

[q,r]=deconv(p,s)%多项式除法,商为q,余数为r,不必扩维

(2)多项式的根

roots(p)%多项式的根,即方程p(x)=0的解

pc=compan(p)%多项式p的伴随矩阵

eig(pc)%多项式p的伴随矩阵的特征值等于多项式p的根

例:

求多项式

的根

解法1:

p=[1,3,7];roots(p)

解法2:

p=[1,3,7];pc=compan(p);eig(pc)

(3)多项式微分与赋值运算

polyder(p)%多项式p的一阶微分

polyval(p,a)%求x=a是多项式p的值

5.方程组的求解

(1)线性方程组有惟一的解时

x=inv(A)*b

x=inv(sym(A))*b%精确解

(2)线性方程组有无穷多解时

Z=null(A)%求解A矩阵的化零矩阵,也即基础解系

Z=null(A,'r')%求解A矩阵的化零矩阵的规范形式

x0=(pinv(A)*b)%AX=b的一个特解

(3)无解时

x=pinv(A)*b%最小二乘解

 

6.图形的绘制

(1)显函数绘制

fplot('函数',[a,b])%函数表达式要置于单引号内,[a,b]为指定区间

如:

fplot('sin(4*x)',[0,pi])

fplot('[sin(x),cos(x)]',[-2*pi,2*pi)%在同一坐标系下绘制正弦、余弦取曲线

(2)隐函数的绘制

ezplot('隐函数表达式')

如:

ezplot('x^2*sin(x+y^2)+y^2*exp(x+y)+5*cos(x^2+y)')

上面函数将根据x的定义域绘图,下面的限制了定义域

ezplot('x^2*sin(x+y^2)+y^2*exp(x+y)+5*cos(x^2+y)',[-10,10])

(3)极坐标下的图形绘制

polar(x,y,s)%x为极角,y为极径,s为图形设置选项

ezpolar('函数表达式')

(4)特殊二维曲线绘制函数

函数名

意义

常用调用格式

函数名

意义

常用调用格式

bar

条状图

bar(X,Y)

comet

彗星状图

comet(X,Y)

compass

罗盘图

compass(X,Y)

errorbar

误差限图

Errorbar(x,y,

feather

羽毛状图

feather(X,Y)

fill

二维填充图形

fill(X,Y,c)

hist

直方图

hist(X,Y)

stem

离散数据柄状图

stem(X,Y)

polar

极坐标图

polar(X,Y)

quiver

磁力线图

quiver(X,Y)

stairs

阶梯图

stairs(X,Y)

semilogx

x-半对数图

semilogx(X,Y)

loglog

对数图

loglog

semilogy

y-半对数图

semilogy(X,Y)

 

(5)图形修饰与控制

axissquare%是绘图区域为正方形

axisequal%控制各坐标轴的单位刻度,使其相等

axis([xmin,xmax,ymin,ynax])%控制坐标轴的范围

title('字符串')%给图形加上标题

xlabel('字符串')%x轴标注

ylabel('字符串')%y轴标

test(x,y,'字符串')%在点(x,y)处注说明文字

gridon%加网格线

gridoff%取消网格线

holdon%保持当前图形

holdoff%解除holdon命令

legend('First','Second',n)%对一个坐标系上的两个图形做出图例注解

subplot(m,n,p)%将当前窗口分成m行n列个区域,并指定在p区绘图

fill(X,Y,'颜色选项')%颜色填充

 

关于legend('First','Second',n)中参数n的补充:

0:

自动定位,使得图标与图形重复最少,即自动放在最佳位置

1:

置于图形的右上角(默认值)

2:

左上角

3:

左下角

4:

右下角

-1:

右外侧

(6)三维图形的绘制

plot3(X,Y,Z,s)

如:

绘制螺旋线

t=0:

pi/60:

10*pi;

x=sin(t);y=cos(t);

plot3(x,y,t,'*b')

其它函数:

stem3可以绘制火柴杆型曲线,fill3可以绘制三维的填充图形,bar3可以绘制三维的直方图,comet3可以绘制三维的彗星状图。

(7)三维曲面的绘制

[X,Y]=meshgrid(v1,v2)%生成网格数据

Z=...,如Z=X.*Y%计算二元函数的Z矩阵

surf(X,Y,Z)或mesh(X,Y,Z)%mesh函数绘制网格图,surf函数绘制表面图

其中v1,v2为x轴和y轴的分隔形式

 

其他绘制三维曲面的函数有:

meshz%绘制带有底座的三维网格图

meshc%带有等高线的三维网格图

surfc%带有等高线的三维曲面图

surf1%绘制光照下的三维曲面

waterfall%瀑布型三维图形

contour3%三维等高线函数

pie3%三维饼状图

cylinder%柱面图

sphere%球面图

如:

绘制带有底座的马鞍面:

x=-8:

8;y=-8:

8;

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

Z=(x.^2/4^2-y.^2/5^2);

meshz(X,Y,Z)

(8)直角坐标,柱坐标,球坐标之间的转换

[x,y]=pol2cart(theta,r)%二维极坐标转换为直角坐标

[theta,r]=cart2pol(x,y)%二维直角坐标转换为极坐标

[x,y,z]=pol2cart(theta,r,z)%三维柱坐标转换为直角坐标

[theta,r,z]=cart2pol(x,y,z)%三维直角坐标转换为柱坐标

[x,y,z]=sph2cart(theta,phi,r)%三维球坐标转换为直角坐标

[theta,phi,r]=cart2sph(x,y,z)%三维直角坐标转换为球坐标

如:

把三维柱坐标转换为直角坐标

theta=0:

pi/30:

2*pi;ro=sin(theta);

[t,r]=meshgrid(theta,ro);

z=r.*t;

[x,y,z]=pol2cart(t,r,z);

mesh(x,y,z)

(9)图形命令的各种设置选项

曲线线型

曲线颜色

标记符号

选项

意义

选项

意义

选项

意义

实线

b

蓝色

*

星号

——

虚线

c

蓝绿色

.

实点

点线

g

绿色

o

圆圈

—.

点划线

k

黑色

叉号

none

无线

m

紫红色

+

加号

r

红色

d

棱形

w

白色

^

向上三角

y

黄色

<

向左三角

>

向右三角

s

正方形

h

正六角形

p

五角形

向下三角

 

7.微积分基本运算

(1)函数的极限

limit(f,x,a)%f(x)在

时极限值

limit(f,x,a,'right')%右极限

limit(f,x,a,'left')%左极限

limit(limit(f,x,

),y,

)%累次极限

如:

求解极限

symxab;

f=x*(1+a/x)^x*sin(b/x);

limit(f,x,inf)

(2)函数的导数

diff(f,x)%求f关于x的导数

diff(f,x,n)%n阶导数

diff(diff(f,x,m),y,n)%二元函数f的偏导数

(3)函数的积分

int(f,x)%函数f(x)的不定积分;当被积函数f中只有一个变量时,可以省略x

int(f,x,a,b)%定积分

int(f,x,a,inf)%无穷积分

(4)函数的级数展开

(a)泰勒(Taylor)级数展开

taylor(f,x,k)%f(x)在x=0处的泰勒展开式,k为需要展开的项数

taylor(f,x,k,a)%在x=a处展开

注:

k的默认值为6.

(b)傅里叶(Fourier)级数展开

MATLAB本身没有提供专门的傅里叶级数展开的函数,可编写如下M函数实现

function[a0,an,bn]=fourier(f)

symsx

a0=int(f,-pi,pi)/pi;

an=int(f*cos(n*x),-pi,pi)/pi;

bn=int(f*sin(n*x),-pi,pi)/pi;

(4)梯形法数值积分

trapz(x,y)%x可以为行向量或列向量,y的行数等于x向量的元素数

注:

若y由多列向量给出,则该函数可以得到若干个函数的积分值。

如:

用梯形法求

区间,函数

的定积分值

x=[0:

pi/30:

pi]';%步长

可选

y=[sin(x)cos(x)];

trapz(x,y)

(5)quad函数计算数值积分(Simpson算法)

quad(Fun,a,b)%求定积分,误差为

quad(Fun,a,b,

)%限定精度为

的定积分求解

 

注:

Fun为描述被积函数的字符串变量,可以是一个Fun.m函数文件名,还可以是inline函数直接定义。

a,b分别为定积分的上限和下限,

为用户指定的误差限,默认值为

(6)矩形区域上二重积分的数值解

dblquad(Fun,a,b,c,d)%计算双重积分

dblquad(Fun,a,b,c,d,

)%限定精度为

的双重积分

如:

求二重积分:

f=inline('exp(-x.^2/2).*sin(x.^2+y)','x','y');

%inline函数的第一个输入变量为被积函数本身,第二个、第三个输入变量为自变量

J=dblquad(f,-2,2,-1,1)

(7)长方体区域上三重积分的数值解

triplequad(Fun,a,b,c,d,m,n,

)%三重积分

 

8.代数方程与常微分方程的求解

(1)代数方程的图解法

如:

求解方程:

ezplot('exp(x)-x^2-10',[0,5])

holdon,line([0,5],[0,0])

注:

通过局部放大图形,可得到原方程的解,直到曲线与x轴的交点附近完全一致。

如下图红圈所示。

 

(2)代数方程的符号解

solve(eqn)%求解方程eqn=0,输入变量eqn可以是符号表达式或字符串

solve(eqn,'x')%对指定变量x求解eqn(x)=0

solve(eqn1,eqn2,...,eqnn)%求解方程:

eqn1=0,eqn2=0,...,eqnn=0

如:

使用solve函数求解方程:

x3+4x2-4x-1=0

solve('x^3+4*x^2-4*x-1')

使用solve函数求解方程组:

x+y=1,x-3y=5。

[x,y]=solve('x+y=1','x-3*y=5')

(3)一般非线性方程数值解

x=fsolve(Fun,x0)

其中,Fun应该用M函数文件或inline函数按指定的格式描述,x0为搜索点的初值,方程求根程序从该值开始逐步减小误差搜索出满足方程的实根x。

如:

先用图解法观察方程5x2sinx-e-x=0在区间[0,10]内有多少解,然后试用数值方法求之。

ezplot('5*x^2*sin(x)-exp(-x)',[0,10])

holdon

line([0,10],[0,0])

从图中可以看出在[0,10]内共有4个解,分别在0,3,6,9附近

从而可以使用fsolve函数求其数值解

fun=inline('5*x.^3.*sin(x)-exp(-x)');

fsolve(fun,[0,3,6,9])

 

例:

求解方程组:

x-0.7sinx-0.2cosy=0,y-0.7cosx+0.2siny=0

解:

先编制函数文件fu.m

functiony=fu(x)

y

(1)=x

(1)-0.7*sin(x

(1))-0.2*cos(x

(2))=0;

y

(2)=x

(2)-0.7*cos(x

(1))+0.2*sin(x

(2))=0;

y=[y

(1),y

(2)];

在命令窗口调用fu函数,并计算:

x=fsolve('fu',[0.5,0.5])

 

结果为:

x=

0.52650.5079

(4)常微分方程的符号解(解析解)

dsolve(f1,f2,...fn)

dsolve(f1,f2,...Fn,'x')

其中,fi既可以描述微分方程,又可以描述初始条件或边界条件。

在描述微分方程,可以用D4y表示y(4)(t),还可以用D2y

(2)=3表示y''

(2)=3。

如火自变量不是t而是x,则可以用后一个语句指明自变量。

如:

求解微分方程y''-y'-ex=0的通解及在初始条件y(0)=1;y'(0)=2下的特解。

dsolve('D2y-Dy-exp(x)=0','x')

ans=

C3*exp(x)+exp(x)*(x+C2*exp(-x))

在初始条件y(0)=1;y'(0)=2下:

dsolve('D2y-Dy-exp(x)=0','y(0)=1','Dy(0)=2','x')

ans=

exp(x)+x*exp(x)

(5)常微分方程的数值解法

[T,Y]=ode45(Fun,[t0,tf],y0)%在区间[t0,tf]上,用初始条件y0求解显式微分方程:

y'=f(t,y),t0默认为0

例:

求解微分方程y'=-2y+2x2+2x,0

x

0.5,y(0)=1

fun=inline('-2*y+2*x^2+2*x','x','y');

[x,y]=ode45(fun,[0,0.5],1);

plot(x,y)%绘制解函数曲线图

例:

考虑描述振荡器的经典VanderPol方程:

在初始条件y(0)=1y'(0)=0的解(取μ=7)

分析:

首先,用dsolve函数,看看有啥结论

y=dsolve('D2y+mu*(y^2-1)*Dy+y=0','y(0)=1','Dy(0)=0')

Warning:

Explicitsolutioncouldnotbefound.

>Indsolveat194

y=

[emptysym]

得出无解提示,可见dsolve函数不能直接用于一般非线性方程的解析解的求解。

数值解,首先把微分方程转化为显式微分方程

的形式。

,则原方程化为:

初值条件变为:

x1(0)=1,x2(0)=0

解法1使用inline函数描述微分方程组:

f1=inline('[x

(2);-7*(x

(1)^2-1)*x

(2)-x

(1)]','t','x');

y0=[1;0];

[t,x]=ode45(f1,[0,40],y0);

plot(t,x)

解法2编写M函数文件vdp.m来描述微分方程组:

functionfy=vdp(t,x)

fy=[x

(2);-7*(x

(1)^2-1)*x

(2)-x

(1)];

然后在命令窗口中输入:

y0=[1;0];

[t,x]=ode45('vdp',[0,40],y0);

plot(t,x)

(6)不同求解器Solve的特点

求解器Solve

ODE类型

特点

说明

ode45

非刚性

一步法,4,5阶Runge-Kutta方程,累计截断误差达(Δx)3

大部分场合的首选算法

ode23

非刚性

一步法,2,3阶Runge-Kutta方程,累计截断误差达(Δx)3

使用于精度较低的情形

ode113

非刚性

多步法,Adams算法,高低精度均可达10-6~10-3

计算时间比ode45短

ode23t

适度刚性

采用梯形算法

适度刚性情形

ode15s

刚性

多步法,Gear's反向数值微分,精度中等

若ode45失败时。

可尝试使用

ode23s

刚性

一步法,2阶Rosebrock算法,低精度

当精度较低时,计算时间比ode15s短

 

9.优化问题

(1)无约束最优化问题的数值解法

x=fminunc(Fun,x0)%最简求解语句

[x,f]=fminunc(Fun,x0,options)%一般求解语句

fminsearch的用法与fminuc一样

 

options的选择

参数名

参数说明

Display

中间结果显示方式,其值可以取off表示不显示中间值,iter逐步显示,notify求解不收敛时给出提示,final只显示终值

GradObj

表示目标函数的梯度是否已知,可以选择为on或off

LargeScale

表示是否使用大规模问题算法,取值为on或off

MaxIter

方程求解和优化过程最大允许的迭代次数,若方程未求出解,可适当增加此值

MaxFunEvals

方程函数或目标函数的最大调用次数

TolFun

误差函数的误差限控制量,当函数的绝对值小于此值即终止求解

TolX

解的误差限控制量,当解的绝对值小于此值即终止求解

opt=optimset%获得默认的常用变量

opt.TolX=1e-10;%修改解的误差限控制量,或者用set(opt.'TolX',1e-10)

【例1.75】已知二元函数z=f(x,y)=(x^2-2*x).exp(-x^2-y^2-xy),使用MATLAB提供的求解函数求出其最小值

首先用inline语句定义目标函数:

f=inline('(x

(1)^2-2*x

(1))*exp(-x

(1)^2-x

(2)^2-x

(1)*x

(2))','x');

然后给出初始值,并将求解控制变量中的Display属性设置为'iter',这样可以显示中间的搜索结果:

x0=[0;0];ff=optimset;ff.Display='iter';

最后,可以用下面的语句求解出最优解:

x=fminsearch(f,x0,ff)

 

IterationFunc-countminf(x)Procedure

010

13-0.000499937initialsimplex

24-0.000499937reflect

.......

71135-0.641424contractinside

72137-0.641424contractoutside

Optimizationterminated:

thecurrentxsatisfiestheterminationcriteriausingOPTIONS.TolXof1.000000e-04

andF(X)satisfiestheconver

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1