intersectab返回向量ab的公共部分Word格式文档下载.docx
- 文档编号:19643924
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:28
- 大小:337KB
intersectab返回向量ab的公共部分Word格式文档下载.docx
《intersectab返回向量ab的公共部分Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《intersectab返回向量ab的公共部分Word格式文档下载.docx(28页珍藏版)》请在冰豆网上搜索。
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:
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]为指定区间
如:
sin(4*x)'
[0,pi])
[sin(x),cos(x)]'
[-2*pi,2*pi)%在同一坐标系下绘制正弦、余弦取曲线
(2)隐函数的绘制
ezplot('
隐函数表达式'
)
x^2*sin(x+y^2)+y^2*exp(x+y)+5*cos(x^2+y)'
上面函数将根据x的定义域绘图,下面的限制了定义域
[-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
对数图
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('
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:
[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'
)%右极限
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]'
;
%步长
可选
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)代数方程的图解法
求解方程:
exp(x)-x^2-10'
[0,5])
holdon,line([0,5],[0,0])
通过局部放大图形,可得到原方程的解,直到曲线与x轴的交点附近完全一致。
如下图红圈所示。
(2)代数方程的符号解
solve(eqn)%求解方程eqn=0,输入变量eqn可以是符号表达式或字符串
solve(eqn,'
)%对指定变量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]内有多少解,然后试用数值方法求之。
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,'
其中,fi既可以描述微分方程,又可以描述初始条件或边界条件。
在描述微分方程,可以用D4y表示y(4)(t),还可以用D2y
(2)=3表示y'
'
(2)=3。
如火自变量不是t而是x,则可以用后一个语句指明自变量。
求解微分方程y'
-y'
-ex=0的通解及在初始条件y(0)=1;
(0)=2下的特解。
dsolve('
D2y-Dy-exp(x)=0'
ans=
C3*exp(x)+exp(x)*(x+C2*exp(-x))
在初始条件y(0)=1;
(0)=2下:
y(0)=1'
Dy(0)=2'
exp(x)+x*exp(x)
(5)常微分方程的数值解法
[T,Y]=ode45(Fun,[t0,tf],y0)%在区间[t0,tf]上,用初始条件y0求解显式微分方程:
=f(t,y),t0默认为0
=-2y+2x2+2x,0
x
0.5,y(0)=1
-2*y+2*x^2+2*x'
[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'
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'
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)];
然后在命令窗口中输入:
[t,x]=ode45('
vdp'
[0,40],y0);
(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语句定义目标函数:
(x
(1)^2-2*x
(1))*exp(-x
(1)^2-x
(2)^2-x
(1)*x
(2))'
然后给出初始值,并将求解控制变量中的Display属性设置为'
iter'
,这样可以显示中间的搜索结果:
x0=[0;
ff=optimset;
ff.Display='
最后,可以用下面的语句求解出最优解:
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- intersectab 返回 向量 ab 公共 部分