【发布时间】:2013-09-20 06:31:49
【问题描述】:
考虑下面的代码(MatLab):
w = 0 : 0.0001 : 9.4978;
a = [1 11 46 95 109 74 24];
b = [-1 3 4 3 1];
mu = 1;
a0 = a(7) ;a1 = a(6) ;a2 = a(5); a3 = a(4) ; a4 = a(3) ; a5 = a(2); a6 = a(1);
b0 = b(5);b1 = b(4);b2 = b(3) ; b3 = b(2); b4 = b(1) ;
De = -a6*w.^6 + a4*w.^4 - a2*w.^2 + a0;
Do = a5*w.^4 - a3*w.^2 + a1;
Ne = b4*w.^4 - b2*w.^2 + b0;
No = -b3*w.^2 + b1;
T = 0.01;
e = real((1i*w).^mu);
f = imag((1i*w).^mu);
A = Ne.*cos(T*w) + w.*No.*sin(T*w);
B = e.*(Ne.*cos(T*w) + w.*No.*sin(T*w)) - f.*(w.*No.*cos(T*w) - Ne.*sin(T*w));
C = w.*No.*cos(T*w) - Ne.*sin(T*w);
D = e.*(w.*No.*cos(T*w) - Ne.*sin(T*w)) + f.*(Ne.*cos(T*w) + w.*No.*sin(T*w));
Kp = (-De.*D + w.*Do.*B)./(f.*(Ne.^2 + w.^2.*No.^2));
Kd = (-w.*Do.*A + De.*C)./(f.*(Ne.^2 + w.^2.*No.^2));
figure
plot(Kp,Kd)
line([-24 -24],[-2.24 9.813])
通过运行代码,我们得到了这个图:
我想在曲线的指定部分绘制切线(红色部分,w属于[0.6342,0.9985]):
这样做之后,我的目标是找到由这条线定义的向内半平面的最大面积,以及由切线产生的所有可能区域之间的曲线(像这样):
另一个在另一点有另一条切线的例子是:
我们可以得出结论,第一个区域比第二个区域大。这种方法应该适用于红色部分的所有点。
我如何通过 MatLab 做到这一点?
我希望我的问题很清楚。任何想法将不胜感激。
【问题讨论】:
-
您有什么想法来解决这个问题?这真的是编程问题吗?
-
这有点模棱两可:“想在曲线的指定部分绘制切线”。你的意思是你想在特定的点画一条切线,或在那段的一堆点上画一个或多个切线?另外,正如 EitanT 所指出的,这首先是一个几何问题。一旦你解决了这个问题,你就可以考虑编程了。如果这是一个图形练习,您可能还需要考虑使用图像处理工具来执行任务。
-
@EitanT 我不知道该怎么做。这就是我发布这个的原因。
-
@Zia 但这与 MALTAB 有什么关系?这是一个理论问题。一旦找到解决问题的方法,就可以在 MATLAB 中尝试一下。
-
@TryHard 我的意思是我想在 n 个不同(但连续)点绘制“n 切线”(n 点属于曲线的红色部分)。在n条切线产生的n个区域中搜索后,确定最大面积和与最大面积相关的切线。 (红色部分的一堆点的切线)。但我不明白你为什么注意到这是一个几何问题?您对使用图像处理工具有什么建议?