我试图绘制圆形图的Arnold方言的边界(区域是周期解),f(x)= 2x + a + b * sin(2 * pi * x)/ pi这些是在f ^ n(x)= x和d / dx(f ^ n(x))= 1时定义的,其中f ^ n(x)表示迭代函数n次,即f ^ 2(x )= f(f(x)),n是周期点的周期。
我想能够取两个方程并用b表示Arnold方言边界的方程,所以我得到满足方程的x = g(b)和a = h(b) 。然后我想绘制一个反对b。
分析我可以用这种方式通过重新排列d / dx(f(x))= 1来解决这个问题,对于x,它给出x代表b然后将这个值代入f(x)= x给出一个b。我还设法在MATLAB中使用符号方程式以下列方式完成此操作。
clear;
syms x a b
f = 2*x + a + (b/pi)*sin(2*pi*x);
g = diff(f,x);
solx = solve(g==1,x);
fnox = subs(f,x,solx);
solb(1) = solve(fnox(1)==solx(1), a);
solb(2) = solve(fnox(2)==solx(2),a);
[xval1,yval1] = fplot(matlabFunction(solb(1)),[0 1]);
[xval2,yval2] = fplot(matlabFunction(solb(2)),[0 1]);
A1 = [xval1,yval1];
A2 = [xval2,yval2];
A1 = A1(imag(A1(:,2))==0,:);
A2 = A2(imag(A2(:,2))==0,:);
figure(1)
hold on;
plot(A1(:,2),A1(:,1),'b')
plot(A2(:,2),A2(:,1),'b')
hold off;
问题是这个,我有办法解决2期或更高的边界吗?我已尝试过以下内容,
f2 = subs(f,x,f)
g2 = diff(f2,x)
solx2 = solve(g2==1,x);
但是我找不到明确的解决方案'警告。我想也许这个等式太复杂了,MATLAB无法用符号来解决。有没有办法可以使用符号方程式来实现它?如果没有,是否有合适的数字方法来执行上述操作?
非常感谢任何帮助,提前谢谢。