matlab 求点坐标

matlab 求点坐标,第1张

好多分啊,求采纳

思路如下:

1、根据A,B得到直线方程

2、根据B和BC距离得到C所在圆的方程

3、根据直线方程和圆的方程交点求C点的位置

程序如下:

clear;

clc

A_x = input('输入点A的横坐标:');

A_y = input('输入点A的纵坐标:');

B_x = input('输入点B的横坐标:');

B_y = input('输入点B的纵坐标:');

R = input('输入BC间距离:');

syms x y

eq1 = (x-A_x)/(B_x-A_x)(B_y-A_y)+A_y-y; %%%% 直线方程

eq1 = subs(eq1);

eq2 = (x-B_x)^2+(y-B_y)^2-R^2; %%%% 圆的方程

eq2 = subs(eq2);

[x,y]=solve(eq1,eq2); %%%% 求直线和圆的交点

x = double(x);

y = double(y);

fprintf('第一个可能点是(%f,%f)\n',x(1),y(1))

fprintf('第二个可能点是(%f,%f)\n',x(2),y(2))

结果如下:

输入点A的横坐标:1

输入点A的纵坐标:1

输入点B的横坐标:2

输入点B的纵坐标:2

输入BC间距离:2

第一个可能点是(3414214,3414214)

第二个可能点是(0585786,0585786)

你想问的是matlab2014b运行程序报系统性错误怎么办吧,1、MATLAB程序运行错误后,切换到MATLAB命令行中,观察命令行中的错误信息,确定错误原因。

2、在错误信息中,查找源程序中错误代码的行数,点击行数链接,可以直接定位错误语句。

3、错误语句定位后,自动跳转到代码编辑器中,在代码编辑器中通过光标标识错误代码的位置。

4、确定错误语句后,通过F12快捷键在错误语句处设定断点。

5、断点设定完成后,通过F5快捷键重新执行程序,程序会在断点处停止运行,进入调试状态。

6、在调试状态下有多个步骤可以查找程序问题的原因。

MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。

在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。

%层次分析法的matlab程序

1、disp('请输入判断矩阵A(n阶)');

A=input('A=');

[n,n]=size(A);

x=ones(n,100);

y=ones(n,100);

m=zeros(1,100);

m(1)=max(x(:,1));

y(:,1)=x(:,1);

x(:,2)=Ay(:,1);

m(2)=max(x(:,2));

y(:,2)=x(:,2)/m(2);

p=00001;i=2;k=abs(m(2)-m(1));

while k>p

i=i+1;

x(:,i)=Ay(:,i-1);

m(i)=max(x(:,i));

y(:,i)=x(:,i)/m(i);

k=abs(m(i)-m(i-1));

disp('权向量');disp(w);

disp('最大特征值');disp(t);

2、y(:,i)=x(:,i)/m(i);

k=abs(m(i)-m(i-1));

end

a=sum(y(:,i));

w=y(:,i)/a;

t=m(i);

disp('权向量');disp(w);

disp('最大特征值');disp(t);

%以下是一致性检验

扩展资料:

Matlab是一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。

新版本的MATLAB语言是基于最为流行的C++语言基础上的,因此语法特征与C++语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式。使之更利于非计算机专业的科技人员使用。而且这种语言可移植性好、可拓展性极强,这也是MATLAB能够深入到科学研究及工程计算各个领域的重要原因。

-MATLAB

1理解连续系统时域分析方法

2学习利用matlab对连续系统进行时域分析的方法

3掌握单位冲激响应和单位阶跃响应一般求解方法和基本特征,学习利用matlab求此响应的方法。

4掌握单位冲激响应与系统稳定性、因果性之间的关系。

二、实验器材

计算机、MATLAB软件

三、实验原理

对于单输入-单输出系统的输入激励为 f (t),输出响应为y(t),则描述连续LTI系统的数学模型为n阶次的常系数线性微分方程,形式如下

[上传失败(image-82e2d0-1639285196529)] (3-1)

式子中, a i = 0,1,n,和b i =0,1,m均为常数。

由信号与系统的分析理论值,如果描述系统的微分方程、激励和初始状态已知,我们可用经典时域求解法求出其解。但对于高阶系统,手工计算十分的繁琐,甚至很困难,这时可以用matlab工具求解。

Matlab里提供了求(3-1)解用到的函数,常用的是impluse()、step()、lism()、conv()、dsolve()。下面我们分别介绍这几个函数。

1连续时间系统冲激响应和阶跃响应的求解

连续LTI系统的冲激响应和阶跃响应,分别用impluse和step求解。其调用格式为

impluse (b,a) y=impluse(sys,t)

step (b,a) y=step(sys,t)

式中,t表示计算系统响应的抽样点向量,sys是LTI系统模型,它表示 微分方程,差分方程或状态方程 。其调用格式

sys = tf (b,a)

式中,b和a分别是微分方程的右端和左端系数向量。例如

[上传失败(image-63fd93-1639285196529)]

用a=[a3,a2,a1,a0] ; b=[b3,b2,b1,b0] ,sys = tf (b,a) 获得其LTI模型。

例1:已知描述某连续系统的微分方程为

[上传失败(image-954b31-1639285196529)]

试利用matlab绘出该系统的单位冲激响应和单位阶跃响应的时域波形,并根据单位冲激响应判断系统的稳定性和因果性。`1

matlab程序如下

a=[1 1 6];

b=[1];

subplot(2,1,1)

impulse(b,a)

subplot(2,1,2)

step(b,a)

程序运行后,其图形如下3-1所示。

[上传失败(image-8ac458-1639285196530)]

图3-1 系统的冲激响应和阶跃响应图

从图3-1所示的系统的单位冲激响应的时域波形可以看出,当时间t<0时系统的单位冲激响应h(t)=0,所以该系统为因果系统;同时h(t)随着时间的增长而衰减,当t趋于无穷大时时,h(t)趋于零,所以系统也是一个稳定的系统。

2连续时间系统零输入响应的求解

在MATLAB中,initial是求连续系统的零输入响应函数,其调用形式为

initial(sys,x0)

[y,x,t]=initial(sys,x0)

initial函数可计算出连续时间线性系统由于初始状态所引起的响应(故而称零输入响应)。当不带输出变量引用函数时,initial函数在当前图形窗口中直接绘制出系统的零输入响应。

例2:已知描述某连续系统的微分方程为

[上传失败(image-15bccf-1639285196529)]

y(0)=1,y’(0)=2, 用matlab求其零输入响应

程序如下:

a=[1 1 6];

b=[1];

sys=tf(b,a);

sys1=ss(sys); % 转成状态变量表示

x0=[1,2]

initial(sys1,x0)

运行结果如图3-2所示

[上传失败(image-f08768-1639285196530)]

图3-2 系统的零输入响应图

3连续时间系统零状态响应的数值计算----- lism()

求解微分方程零状态响应的数值解。其调用格式主要有两种。

lism(sys,f,t) y=lism(sys,f,t)

其中,f是输入信号在向量t定义的时间点上的采样值,t是输入信号时间范围向量,sys是LTI系统模型

例3: 已知描述某连续系统的微分方程为

[上传失败(image-4a9e83-1639285196529)]

试利用matlab求出该系统当激励信号为[上传失败(image-5ad649-1639285196529)] 时,系统的响应[上传失败(image-348322-1639285196529)] ,并会出其波形。

matlab程序如下

a=[1 2 1];

b=[1 2];

sys=tf(b,a); %定义系统函数对象

p=001; %定义采样时间间隔

t=0:p:5;

f=exp(-2t);

lsim(sys,f,t); %对系统输出信号进行仿真

程序运行后,其图形如图3-3所示。

[上传失败(image-3950ed-1639285196529)]

图3-3 连续系统的响应仿真

4微分方程的符号解的函数dsolve()

在MATLAB中,dsolve()是求解微分方程的符号解的函数,其调用形式为

r=dsolve(‘eq1,eq2,…’,’cond1,cond2,…’,’v’)

或r=dsolve(‘eq1’,eq2’,…,’cond1’,’cond2’,…,’v’)

其中cond1、cond2…是初始条件(如没有给出初始条件,则默认为求通解),v为自变量变量。D表示一阶微分,D2为二阶微分……。函数dsolve把D后的变量当成因变量,默认为这些变量对自变量的求导。

例4:求二阶系统[上传失败(image-9ca77c-1639285196529)] 在初始条件[上传失败(image-ae497b-1639285196529)] 下的零输入响应的解、零状态响应的解及全解

matlab程序如下

yzi=dsolve('D2y+5 Dy+4 y=0','y(0)=0,Dy(0)=1')

yzs=dsolve('D2y+5 Dy+4 y=exp(-3t)','y(0)=0,Dy(0)=0')

y=dsolve('D2y+5 Dy+4 y=exp(-3t)','y(0)=0,Dy(0)=1')

运行结果如下

yzi =

-1/3 exp(-4 t)+1/3exp(-t)

yzs =

1/3 exp(-4 t)+1/6 exp(-t)-1/2 exp(-3t)

y =

1/2 exp(-t)-1/2 exp(-3t)

即 [上传失败(image-8a13eb-1639285196529)]

[上传失败(image-9036d5-1639285196529)]

[上传失败(image-fa7bd7-1639285196529)]

四、实验内容

1验证实验原理中所述的相关程序

2已知描述某连续系统的微分方程为

[上传失败(image-d41f06-1639285196529)]

(1) 试利用matlab绘出该系统的冲激响应和阶跃响应的时域波形,并根据冲激响应判断系统的稳定性。

a=[1,3,2];

b=[1,2];

subplot(2,1,1)

impulse(b,a);

subplot(2,1,2)

step(b,a);

wending

(2) 当激励信号为[上传失败(image-e16660-1639285196529)] 时,系统的零状态响应[上传失败(image-5beb2d-1639285196529)] ,并绘出响应的波形。

a=[1,3,2];

b=[1,2];

sys=tf(b,a)

t=0:001:5;

f=exp(-2t);

lsim(sys,f,t)

3求三阶系统[上传失败(image-a71fa6-1639285196529)] 在初始条件[上传失败(image-40502a-1639285196529)] 下的零输入响应的解、零状态响应的解及全解。

yzi=dsolve('D2y+5Dy+y=0','y(0)=0,Dy(0)=1')

yzs=dsolve('D2y+5 Dy+y=exp(-3 t)','y(0)=0,Dy(0)=0')

y=dsolve('D2y+5 Dy+y=exp(-3 t)','y(0)=0,Dy(0)=1')

五、实验报告要求

1实验内容中详细说明用连续系统时域分析法的步骤与原理。

2写出其对应的matlab程序。

3上机调试程序的方法及实验中的心得体会。

clear; W0=1; m=51;

alpha=01;v=00780092;k=628;v1=001;v2=002;

A2=1;A1=A2;

这里clear是清空内存,一般matlab都有这句,是个良好的代码习惯。后面几句是赋值,没什么可说的。

z=linspace(0,4pi,256); x=linspace(-10,10,256);

[X,Z]=meshgrid(x,z);

这几句是建立一个网格,想想看坐标纸或者网球拍的那种网格好了。

之后用大写的X Z 就代表了网格上的那些点P(X,Z)

%Z=2pi/2;

%开头的都是注释语句,不过,放在这里,估计是他反复修改代码,乱用变量呢。这种习惯不好。

Theta2=-1/2Z+1/4(m/W0)^2sin(2Z)-1/4v^2W0^2k^2sin(2Z)-1/2kmvcos(2Z);

V1=-m/(W0)^2sin(Z);V2=-m/(W0)^2sin(Z)-vcos(Z); x01=mcos(Z);x02=mcos(Z)-v(W0)^2ksin(Z); W=W0;

E1=A1exp(-(X-x01)^2/2)exp(iv1X);

E2=A2exp(-(X+x02)^2/2)exp(iv2X);

E=abs(E1-E2)^2;

以上都是按照数学公式计算,其实没什么可说的。按照数学公式写就行了。

[C,h]=contour(Z,X,E,15);%给出数据

%contourf(X,Z,E,10); %不给出数据

%clabel(C,h)

n=4;

%subplot(3,1,1),

shading interp

colormap hot

colorbar

这以上几句是画图语句,你自己拿matlab试试看,哪句前面加个%后,成了什么样子,就明白了。比如,%shading interp后的样子,比如 %colormap hot后 的样子。不是太好形容,呵呵。colorbar是个彩条,告诉你colormap里彩色块的代表的意思的。

欢迎分享,转载请注明来源:浪漫分享网

原文地址:https://hunlipic.com/jiehun/1928414.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-07-21
下一篇2023-07-21

发表评论

登录后才能评论

评论列表(0条)

    保存