数值为sinc函数

4视图(30天)
默罕默德
默罕默德 2023年3月20日
评论道: 默罕默德2023年3月20日
嘿,伙计们,我想问如果数值可以用来解决一个sinc函数的状态方程。
我的状态方程是:
函数dstatesdt = midterm2 (t,状态)
x1 =状态(1);
x2 =状态(2);
z1 = 1 / (5 ^ 2 - x1 ^ 2);
z2 = 1 / (5 ^ 2 - x2 ^ 2);
% u = (x1 * (z1 / z2 + 1) + z1 * x1 ^ 2 * sinc (x2) / z2 + x2 ^ 2 + x2); x
u = - * (z1 / z2 + 1) (x1 + 2 * z1 * x1 ^ 2 * sinc (x2) / z2 + x2 ^ 2 + x2);
% u = (x1 * (z1 / z2 + 1) + z1 * x1 ^ 2 * sinc (x2) / z2 + x2 ^ 2 + x2 + x2 / z1);
x1dot = x2 + x1 * sin (x2);
x2dot x2 = ^ 2 + x1 + u;
dstatesdt = [x1dot; x2dot];
我的函数来解决和情节ODE是:
函数sim_ode (dstatesdt、tspan bx1系列、dx1 bx2, dx2, arg)
x1 = bx1系列(1):dx1: bx1系列(2)
x2 = bx2 (1): dx2: bx2 (2)
ξ= (x1, x2)%显示初始点
[,stateo] =数值(dstatesdt tspan, xi);
x1o = stateo (: 1);
x2o = stateo (:, 2);
%如果任何(x1o > = 5) | (x1o < = 5) |任何(x2o > = 5) | (x2o < = 5)
%流(初始状态的Overbound [%, % d] \ n”, x1, x2)
%结束
如果arg = = 1
情节(x1o)
elseifarg = = 2
情节(x2o)
其他的
情节(x1o x2o)
%的阴谋(x1, x2,“bo”)
%的阴谋(x1o(结束),x2o(结束),“ks”)
结束
drawnow
结束
结束
结束
我在主脚本运行这段代码:
f = @midterm2;
图(1)
持有
标题(“x_1时间序列”)
包含(“t (s)”)
ylabel (“x_1 (t)”)
网格()
sim_ode (f, 10 [0], (-4.5 - 4.5), 0.5 (-4.5 - 4.5), 0.5, 1)
持有
首先初点[-4.5 - -4.5]代码没有情节,没有显示任何错误,只是一直运行(约5分钟)所以我停止这出现在命令提示符:
ξ=
-4.5000 - -4.5000
操作在数值被用户终止
sim_ode(第6行)
[,stateo] =数值(dstatesdt tspan, xi);
main_sim(15行)
sim_ode (f, 10 [0], (-4.5 - 4.5), 0.5 (-4.5 - 4.5), 0.5, 1)
任何帮助将是感激!
谢谢!

接受的答案

山姆翟
山姆翟 2023年3月20日
编辑:山姆翟 2023年3月20日
@Muhammad
虽然你的系统是高度非线性的, 数值 可以评估 sinc () 函数。然而,你选择的初始值 导致轨迹发散 ,奇点(除零)发生在这一项
(x, y) = meshgrid (-4.9:0.35:4.9);
z1 = 1。/ (5 ^ 2 - x ^ 2);
z2 = 1。/ (5 ^ 2 - y ^ 2);
w = - * (z1 (x。/ z2 + 1) + 2 * z1。* (x ^ 2)。* sinc (y)。/ z2 + y。y ^ 2 +);
u = y + x。* sin (y);
v = y。^ 2 + x + w;
l = streamslice (x, y, u, v);
例如,选择另一组初始值 导致轨迹收敛到原点。
tspan = linspace (0, 101);
x0 = (-4.5 - 4.5);
(t, x) =数值(@midterm2 tspan, x0);
情节(t x,“线宽”1.5),网格
包含(“t”),ylabel (“\ bf {x}”),
传奇(”间的{1}”,”间的{2}”)
函数dstatesdt = midterm2 (t,状态)
x1 =状态(1);
x2 =状态(2);
z1 = 1 / (5 ^ 2 - x1 ^ 2);
z2 = 1 / (5 ^ 2 - x2 ^ 2);
% u = (x1 * (z1 / z2 + 1) + z1 * x1 ^ 2 * sinc (x2) / z2 + x2 ^ 2 + x2); x
u = - * (z1 / z2 + 1) (x1 + 2 * z1 * x1 ^ 2 * sinc (x2) / z2 + x2 ^ 2 + x2);
% u = (x1 * (z1 / z2 + 1) + z1 * x1 ^ 2 * sinc (x2) / z2 + x2 ^ 2 + x2 + x2 / z1);
x1dot = x2 + x1 * sin (x2);
x2dot x2 = ^ 2 + x1 + u;
dstatesdt = [x1dot;x2dot];
结束
3评论
默罕默德
默罕默德 2023年3月20日
好的,我将努力实现另一个控制输入。谢谢!

登录置评。

更多的答案(0)

类别

找到更多的在编程帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!

翻译的