《量化投资:以MATLAB为工具》

MATLAB技术论坛

 找回密码
 注册账号
查看: 540|回复: 2
收起左侧

[提问] 分段函数画图

[复制链接]
发表于 2017-10-10 11:15:21 | 显示全部楼层 |阅读模式
13贝壳
分段函数画图,我的程序应该是错了,无法运行,但是自己找不到,最后是要画K和r的隐函数图像
clear
% clc
close all
syms p1 p2 v o x c beta O X r k w;

c=1;
beta=0;
v=0.5;
O=2-v-(1-beta)*k;
X=(pi/2)*c;
if (r>1)
    H=[(p1^2-v)*cosh(p1*x) -(p2^2+v)*cos(p2*x); p1*(p1^2-o)*sinh(p1*x) p2*(p2^2+o)*sin(p2*x)];
    eq1=det(H);
    P1=(sqrt(sqrt((1-k/2)^2+(r-1))+(1-k/2)));
    P2=real(sqrt(sqrt((1-k/2)^2+(r-1))-(1-k/2)));
    eq2 = subs(eq1,[p1 p2],[P1 P2]);
    eq3 = subs(eq2,[o x ],[O X ]);
else
    if (0<=k<=2);
       if (1-(1-k/2)^2<r<1)
    H=[(p1^2-v)*cosh(p1*x) (p2^2-v)*cosh(p2*x); p1*(p1^2-o)*sinh(p1*x) p2*(p2^2-o)*sinh(p2*x)];
    eq1=det(H);
    P1=(sqrt(sqrt((1-k/2)^2+(r-1))+(1-k/2)));
    P2=real(sqrt(-sqrt((1-k/2)^2+(r-1))+(1-k/2)));
    eq2 = subs(eq1,[p1 p2],[P1 P2]);
    eq3 = subs(eq2,[o x ],[O X ]);
else if (2<k);
        if (1-(1-k/2)^2<r<1)
    H=[(p1^2+v)*cos(p1*x) (p2^2+v)*cos(p2*x); p1*(p1^2+o)*sin(p1*x) p2*(p2^2+o)*sin(p2*x)];
    eq1=det(H);
    P1=(sqrt(sqrt((1-k/2)^2+(r-1))+(k/2-1)));
    P2=real(sqrt(-sqrt((1-k/2)^2+(r-1))+(k/2-1)));
    eq2 = subs(eq1,[p1 p2],[P1 P2]);
    eq3 = subs(eq2,[o x ],[O X ]);
        end
    end
        end
    end
end
    ezplot(eq3,[0 6 0 30]);
    view(90,-90)
TIM图片20171010111111.png

发表于 2017-10-11 08:47:48 | 显示全部楼层
我调试了一下你的代码 你定义的r和k没有赋值,没有范围 你的判断语句运行不出来
回复

使用道具 举报

 楼主| 发表于 2017-10-11 15:44:43 | 显示全部楼层
徐彳余 发表于 2017-10-11 08:47
我调试了一下你的代码 你定义的r和k没有赋值,没有范围 你的判断语句运行不出来

我最后用ezplot画图限制的坐标轴范围不可以吗,主要是我最后想得到k和r的关系图,一开始如果用for循环语句限定其中一个的范围的话,应该画不出k和r的关系图吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|网站地图|MATLAB技术论坛|Simulink仿真论坛 ( 蜀ICP备19014457号 

GMT+8, 2019-5-23 17:33 , Processed in 0.080621 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表