我想通过在Matlab中使用这些方程来绘制这个参数方程
p_x = p_0*coshu*cosv, p_y = p_0*sinhu*sinv
sinv*( sqrt(1 − γ)*coshu + cosα) = −sinα *sinhu
我需要p_y/p_0 vs p_x/p_0
之间的情节。如图
其中u是'时的自由参数。 α = 8*pi/5
。和γ = 0, 0.05, 0.15, 0.2
我尝试了一个代码解决上面的方程式;
close all
clear all
clc
a = 8*pi/5 % 'a' as alpha
%z=0; % 'z' as gamma
z=0.15
u = -5:0.003:5;
x = cosh(u).*sqrt(1 - (sin(a).*sin(a).*sinh(u).*sinh(u))./square((sqrt(1-z).*cosh(u) + cos(a))));
% where x = p_x/p_0 and y = p_y/p_0
y= -1.*((sinh(u).*sinh(u).*sin(a))./(1*sqrt(1-z).*cosh(u) + cos(a)));
plot(x,y,'-k')
在评论中解决方程式1的另一种尝试(sign(cos(v))
仍有一些错误):
clc; clear;
alpha=8*pi/5; gamma=0.05;
t=1;
Py0={};
for Px0=-3:.5:3
syms u
F=cosh(u)*sqrt(1 - ((sin(alpha)*sinh(u))/(sqrt(1-gamma)*cosh(u)+cos(alpha)))^2 )-Px0;
u=double(solve(F));
Py0{t}=sinh(u).*(-(sin(alpha).*sinh(u))./(sqrt(1-gamma).*cosh(u)+cos(alpha)));
t=t+1;
clear u
end;
Py0
% plot(-3:0.5:3,Py0)
答案 0 :(得分:1)
$
是自由参数,但其范围受第三个等式的限制:
sin(v)*(sqrt(1 - γ)* cosh(u)+ cos(α))= - sin(α)* sinh(u)
这可以改写为:
sin(v)= -sin(alpha)* sinh(u)/(sqrt(1-y)* cosh(u)+ cos(alpha))
知道
abs(sin(v))< = 1
给出了eval url=replace (url, "Open_KnowledgeZone:", "")
的条件。
使用
cosh(x)^ 2 - sinh(x)^ 2 = 1
条件变为:
abs(-sin(alpha)* sqrt(cosh(u)^ 2-1)/(sqrt(1-y)* cosh(u)+ cos(alpha))< = 1
因为cosh(x)是一个偶数函数,所以上面的表达式也是如此。因此,计算
就足够了-sin(alpha)* sqrt(cosh(u)^ 2-1)/(sqrt(1-y)* cosh(u)+ cos(alpha)< = 1
我们希望知道表达式保留的最大u
(u
),因为我们知道u
在u_max
范围内受到限制。所以我们需要解决
-sin(alpha)* sqrt(cosh(u)^ 2-1)/(sqrt(1-y)* cosh(u)+ cos(alpha)= 1
这是二阶多项式,因此将有2个解。我们对真正的解决方案很感兴趣,如果所有解决方案都是虚构的,那么u
的范围就没有限制。
将其放入MATLAB中,得到以下代码:
[-u_max,u_max]
编辑:更新代码
u