这样的曲线图如何绘制?
这样的图形如何绘制,尤其是象图中那样将一系列曲线画在一个图形中。还有那个θ-s图如何通过方程绘制!方程为:
A/B=1/((1-s^2+3/4*epsilon*A^2)^2+(2*zeta*s)^2)^(1/2);
theta=arctan(2*zeta*s/(1-s^2+3/4*epsilon*A^2));
方程和示例图形如下, 右边的图形需要结合两个方程进行绘制!
[ 本帖最后由 ChaChing 于 2010-1-17 22:45 编辑 ] 直接绘制有问题么?还有啊,右边的图为什么方程里没有B,但是图里确有B=0.02呢?
[ 本帖最后由 花如月 于 2007-10-12 16:46 编辑 ] 左边那个可以直接绘制,右边那个需要结合两个方程进行绘制!
还有就是我不知道如何将一系列的曲线画在同一个图形中! hold on
请仔细阅读本版置顶贴,里面就有介绍绘图的基本命令
[ 本帖最后由 ChaChing 于 2010-4-20 23:13 编辑 ]
回复 #4 eight 的帖子
哦!我去看看! 我查了一些matlab书,都没找到!不好意思! 看了还是不会!:@L
希望有人指点一下!
[ 本帖最后由 ChaChing 于 2010-1-17 22:46 编辑 ] 首先要相信自己。2个图情形差不多,我把左边的画了下。由于用得是隐函数绘图,因此程序标注比较麻烦(要去掉ezplot自带的label,并在特定的位置加text。还没想到实现的方法,知道的高手望不吝赐教呀)。你先自己在figure窗口里标注吧>> e=;
>> exaplot(e)
>> 结果见附图,exaplot.m的内容如下:function exaplot(e)
warning off all
for i=1:length(e)
hold on;
ezplot(@(s,A)myfun(s,A,e(i)),)
end
function z = myfun(s,A,e)
z = (1/sqrt((1-s^2+3/4*0.04*A^2)^2+(2*e*s)^2))-A;
[ 本帖最后由 ChaChing 于 2010-4-20 23:14 编辑 ] 呵呵!我也是用ezplot,但没想到使用循环来画!
再弱弱的问一下:
@(s,A)这个代表什么意思?:@$
查帮助没查到!
另外你说的右边那个更好画我就不理解了,右边那个需要结合左边那个方程共同来画,怎么会更好画呢?
[ 本帖最后由 unknowno 于 2007-10-12 20:14 编辑 ]
回复 #7 花如月 的帖子
去掉label直接用xlabel('')
ylabel('')
title('')
就可以把
回复 #9 无水1324 的帖子
应该可以的,去掉label问题不大。不过因为是隐函数,所以在特定位置加text不太好弄。to 楼主:由于你事先没说2个图是相关的。我画第二图的时候发现波形不对,检查程序没有问题,再仔细看才发现是相关的。这样以来第二个图确实就比较麻烦了,需要先求方程(根据参数B求A然后代入)。方程是解出来了,不过解太长了,后边基本没法进行了。
3点建议供参考:
(1)是否可以根据A参数画theta的波形?
(2)考虑换个软件吧,我用matlab根据B求A^2,实际上是解个一元3次方程,虽然可以得解。
但是化简后还是长得要命。
(3)再等等吧,我的水平也就只能帮你到这一步了,等待真正的高手的到来吧
至于你8楼的那个@的意思,在help里应该是可以搜索到的。matlab基础书上也应该有,或者百度一下匿名函数试试看
[ 本帖最后由 花如月 于 2007-10-12 21:16 编辑 ]
回复 #10 花如月 的帖子
谢谢你!:handshake听了你的建议使我受益非浅,我同时也在考虑maple这个软件能不能解决!
呵呵!
想出解决的办法了,将右边方程中的A^2解出带入左边方程,就得到关于s和θ的方程,再使用6楼的方法就可以很容易画出了!
谢谢你!月月:lol
[ 本帖最后由 ChaChing 于 2010-1-17 22:57 编辑 ]
回复 #12 unknowno 的帖子
这个方法我昨天都想过了,似乎中间会有些麻烦。如果你画出来了,希望可以共享一下。:handshake 还有一个问题就是,左边那个图形中表示峰值趋势的曲线我用什么方法可以把它画上去?回复 #14 unknowno 的帖子
那个都不是问题,你先把右边的那个画法帖上来而且在解A^2过程中会出现复数根,因为每次都可以解出3组。但是也有3个全是复数的情形,请问出现复系数下边怎么做呢?期待楼主的答案哦
>> temp(5,118:120,:)
ans(:,:,1) =
17.8955 - 0.3057i18.1525 - 0.3266i18.4109 - 0.3460i
ans(:,:,2) =
8.1974 +44.8221i 8.2733 +45.4772i 8.3536 +46.1347i
ans(:,:,3) =
9.7258 -44.5164i 9.9062 -45.1506i10.0835 -45.7887i
上边的3组解就都是复数,也就是你说的A^2:@D
[ 本帖最后由 ChaChing 于 2010-1-17 22:54 编辑 ] 我使用的是matlab6.5,确实查不到@的用法,而且似乎不支持@这个函数,所以就做了如下的变动。
function exaplot(e)
syms x y%x=s,y=theta
for i=1:length(e)
hold on;
ezplot(myfun(x,y,e(i)),)
end
function z = myfun(x,y,e)
epsilon=0.2;xi=0.03;
z=2/3*3^(1/2)*((2*xi*x*cot(y)-1+x^2)/epsilon)^(1/2)/e-1/((cot(y)^2+1)^(1/2))/2/xi/x;
>> e=;
>> exaplot(e) 你没看清楚我12楼的方法
你所解的是左边方程(A/B)中的A^2(这个方程确实很难处理)
我解的是右边方程(θ)中的A^2,然后再带入左边的方程(A/B)。(右边这个方程就好处理多了)
源程序我已经贴出!
我还有个问题:
能画出第二个图形的突破口,在于第二个方程相对第一个方程要简单许多。
问题是,如果第二个方程和第一个方程一样不能求出A^2的表达式,该怎么办?
换句话说,有没有直接根据两个隐函数来做出变量的曲线的方法。
(不知道叙述的清楚不清楚)
[ 本帖最后由 ChaChing 于 2010-1-17 23:03 编辑 ]
页:
[1]
2