打靶法含Matlab程序Word文档下载推荐.docx
- 文档编号:7108252
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:14
- 大小:18.63KB
打靶法含Matlab程序Word文档下载推荐.docx
《打靶法含Matlab程序Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《打靶法含Matlab程序Word文档下载推荐.docx(14页珍藏版)》请在冰点文库上搜索。
五六阶段还真不知道说什么。
一二阶段必定是要点啦
(3)偏差解析其实还挺难的。
可能的偏差本源是地球的引力,月亮
绕地球向心加快度,太阳的引力(可能会很小),对自己速度、角度的丈量偏差(比方你测出自己当前速度100m/s但其实是
105m/s),控制的时候F大小以及角度的偏差(比方你想朝正前面向
喷2000N但实质上偏了2度并且F=2010N之类)。
上一问已经求出了最优控制策略和飞船路线,把这些扰动加进去此后算出新的路
线减掉理想路线求偏差,而后随意用个卡尔曼滤波器把偏差给校
正
AllforJoy2014/9/1311:
14:
38
老师的思路,求大神解答给我一份呀
实验二十七实验报告
实验名称:
微分方程组边值问题数值算法(打靶法,有
限差分法)。
实验目的:
进一步熟习微分方程组边值问题数值算法(打
靶法,有限差分法)。
实验要求:
运用Matlab/C/C++/Java/Maple/Mathematica
等此中一种语言完成程序设计。
实验原理:
打靶法:
对于线性边值问题
y
p(x)y
q(x)yf(x)x
[a,b]
y(a)
y(b)
(1)
假设
L是一个微分算子使:
Ly
yp(x)yq(x)y
则可获得两个微分方程:
Ly1
f(x),y1(a)
,
y1(a)0
y1
p(x)y1
q(x)y1
f(x),y1(a)
,y1(a)
(2)
Ly2
0,y2(a)
0,y2(a)1
y2
p(x)y2
q(x)y2
1
(3)
方程
(2),(3)是两个二阶初值问题.假设y1是问题
(2)
的解,y2是问题(3)的解,且y2(b)
0,则线性边值问
题
(1)的解为:
y(x)y1(x)
y1(b)y2(x)。
y2(b)
有限差分法:
基本思想是把连续的定解地域用有限个失散点构成的网格来取代,这些失散点称作网格的节点;
把连续定解地域上的连续变量的函数用在网格上定义的失散变量函数来近似;
把原方程和定解条件中的微商用差商
来近似,积分用积分和来近似,于是原微分方程和定解条件就近似地代之以代数方程组,即有限差分方程
组,解此方程组就可以获得原问题在失散点上的近似解。
而后再利用插值方法便可以从失散解获得定解问题在整个地域上的近似解。
实验内容:
%线性打靶法
function[k,X,Y,wucha,P]=xxdb(dydx1,dydx2,a,b,alpha,beta,h)
n=fix((b-a)/h);
X=zeros(n+1,1);
CT1=[alpha,0];
Y=zeros(n+1,length(CT1));
Y1=zeros(n+1,length(CT1));
Y2=zeros(n+1,length(CT1));
X=a:
h:
b;
Y1(1,:
)=CT1;
CT2=[0,1];
Y2(1,:
)=CT2;
fork=1:
n
k1=feval(dydx1,X(k),Y1(k,:
))
x2=X(k)+h/2;
y2=Y1(k,:
)'
+k1*h/2;
k2=feval(dydx1,x2,y2);
k3=feval(dydx1,x2,Y1(k,:
+k2*h/2);
k4=feval(dydx1,X(k)+h,Y1(k,:
+k3*h);
Y1(k+1,:
)=Y1(k,:
)+h*(k1'
+2*k2'
+2*k3'
+k4'
)/6,k=k+1;
end
u=Y1(:
1)
k1=feval(dydx2,X(k),Y2(k,:
y2=Y2(k,:
k2=feval(dydx2,x2,y2);
k3=feval(dydx2,x2,Y2(k,:
k4=feval(dydx2,X(k)+h,Y2(k,:
Y2(k+1,:
)=Y2(k,:
v=Y2(:
Y=u+(beta-u(n+1))*v/v(n+1)
fork=2:
n+1
wucha(k)=norm(Y(k)-Y(k-1));
k=k+1;
X=X(1:
n+1);
Y=Y(1:
n+1,:
);
k=1:
n+1;
wucha=wucha(1:
k,:
P=[k'
X'
Y,wucha'
];
plot(X,Y(:
1),'
ro'
X,Y1(:
1),'
g*'
X,Y2(:
mp'
)
xlabel('
轴\itx'
);
ylabel('
轴\ity'
legend('
是边值问题的数值解y(x)的曲线'
'
是初值问题1的数值解u(x)的曲线'
'
是初值问题2的数值解v(x)的曲线'
)
title('
用线性打靶法求线性边值问题的数值解的图形'
%有限差分法
function[k,A,B1,X,Y,y,wucha,p]=yxcf(q1,q2,q3,a,b,alpha,beta,h)
Y=zeros(n+1,1);
A1=zeros(n,n);
A2=zeros(n,n);
A3=zeros(n,n);
A=zeros(n,n);
B=zeros(n,1);
k1(k)=feval(q1,X(k));
A1(k+1,k)=1+h*k1(k)/2;
k2(k)=feval(q2,X(k));
A2(k,k)=-2-(h.^2)*k2(k);
A3(k,k+1)=1-h*k1(k)/2;
k3(k)=feval(q3,X(k));
B(k,1)=(h.^2)*k3(k);
B(1,1)=(h.^2)*k3
(1)-(1+h*k1
(1)/2)*alpha;
B(n-1,1)=(h.^2)*k3(n-1)-(1+h*k1(n-1)/2)*beta;
A=A1(1:
n-1,1:
n-1)+A2(1:
n-1)+A3(1:
n-1);
B1=B(1:
n-1,1);
Y=A\B1;
Y1=Y'
;
y=[alpha;
Y;
beta];
wucha(k)=norm(y(k)-y(k-1));
y=y(1:
n+1,1);
k=1:
plot(X,y(:
),legend('
是边值问题的数值解
y(x)的曲线
'
用有限差分法求线性边值问题的数值解的图形
),
p=[k'
y,wucha'
打靶法
源代码:
创立M文件:
function
ys=dbf(f,a,b,alfa,beta,h,eps)
ff=@(x,y)[y
(2),f(y
(1),y
(2),x)];
xvalue=a:
%x取值范围
n=length(xvalue)
s0=;
%采用合适的s的初值
x0=[alfa,s0];
%
迭代初值
flag=0;
%用于判断精度
y0=rk4(ff,a,x0,h,a,b);
ifabs(y0(1,n)-beta)<
=eps
flag=1;
y1=y0;
else
s1=s0+1;
x0=[alfa,s1];
y1=rk4(ff,a,x0,h,a,b);
ifabs(y1(1,n)-beta)<
ifflag~=1
whileabs(y1(1,n)-beta)>
eps
s2=s1-(y1(1,n)-beta)*(s1-s0)/(y1(1,n)-y0(1,n));
x0=[alfa,s2];
y2=rk4(ff,a,x0,h,a,b);
s0=s1;
s1=s2;
y0=y1;
y1=y2;
yvalue=y1(1,:
ys=[xvalue'
yvalue'
x=rk4(f,t0,x0,h,a,b)
%rung-kuta
法求每个点的近似值(参照大作业一)
t=a:
%迭代区间m=length(t);
%区间长度
t
(1)=t0;
x(:
1)=x0;
%迭代初值
fori=1:
m-1
L1=f(t(i),x(:
i));
L2=f(t(i)+h/2,x(:
i)'
+(h/2)*L1);
L3=f(t(i)+h/2,x(:
+(h/2)*L2);
L4=f(t(i)+h,x(:
+h*L3);
i+1)=x(:
+(h/6)*(L1+2*L2+2*L3+L4);
4.举例求二阶非线性方程的边值问题:
在matlab控制台中输入:
f=@(x,y,z)(x^2+z*x^2);
x0l=0;
x0u=2*exp(-1);
alfa=0;
beta=2;
h=
dbf(f,x0l,x0u,y0l,y0u,h,1e-6);
>
y=ans(:
2);
x=ans(:
1);
plot(x,y,'
-r'
结果:
再输入:
m=0:
:
2;
n=m.*exp(-1/2*m);
plot(n,m)
n,m,'
-b'
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 打靶 Matlab 程序