查看: 422|回复: 1|关注: 0

[未答复] 求大神指点,我想画一个函数等高线,程序出错

[复制链接]

新手

9 麦片

财富积分


050


4

主题

13

帖子

0

最佳答案
发表于 2018-7-11 23:40:49 | 显示全部楼层 |阅读模式
本帖最后由 翻翻 于 2018-7-20 10:20 编辑

我想画一个函数的等高线,这个函数的自变量是p和h,但是matlab出现空的图像,检查了好久,貌似是这个y11的函数计算出来有虚数,但不应该啊,因为P和h的范围给定是(0,1),y11不会出现虚数啊、、、跪求大神帮忙~~~
matlab程序如下:
clear all
p = linspace(0,1,1e3);
h = linspace(0,1,1e3);
% 下面是计算函数+作图指令+一些图形设置
scrsz = get(0,'ScreenSize');
figure('Name','PARTIE II.- Exercice 1 :Lecontour','NumberTitle','off',...
'Position',[scrsz(3)/2,40,scrsz(3)/2-20,scrsz(4)/3]);
[p,h]=meshgrid(0:2e-3:1,0:2e-3:1);
y11= (175*(exp(-(4049340145520689*10^(3/5)*p.*((289*h+ 11).^(11/5) - (289*h + 28).^(11/5)))./1981583836043018240000) - 1))./(2*p) -104*h + (175*(exp(-(4049340145520689*10^(3/5)*p.*((306*h + 11).^(11/5) - (306*h+ 28).^(11/5)))./1981583836043018240000) - 1))./(2*p) +(175*(exp(-(4049340145520689*10^(3/5)*p.*((323*h + 11).^(11/5) - (323*h + 28).^(11/5)))./1981583836043018240000)- 1))./(2*p) + (175*(exp(-(4049340145520689*10^(3/5)*p.*((340*h + 11).^(11/5) -(340*h + 28).^(11/5)))./1981583836043018240000) - 1))./(2*p) +(175*(exp(-(4049340145520689*10^(3/5)*p.*((357*h + 11).^(11/5) - (357*h + 28).^(11/5)))./1981583836043018240000)- 1))./(2*p) + (175*(exp(-(4049340145520689*10^(3/5)*p.*((374*h + 11).^(11/5) -(374*h + 28).^(11/5)))./1981583836043018240000) - 1))./(2*p) +(175*(exp(-(4049340145520689*10^(3/5)*p.*((391*h + 11).^(11/5) - (391*h + 28).^(11/5)))./1981583836043018240000)- 1))./(2*p) + (175*(exp(-(4049340145520689*10^(3/5)*p.*((408*h + 11).^(11/5) -(408*h + 28).^(11/5)))./1981583836043018240000) - 1))./(2*p) +(175*(exp(-(4049340145520689*10^(3/5)*p.*((425*h + 11).^(11/5) - (425*h + 28).^(11/5)))./1981583836043018240000)- 1))./(2*p) + (175*(exp(-(4049340145520689*10^(3/5)*p.*((442*h + 11).^(11/5) -(442*h + 28).^(11/5)))./1981583836043018240000) - 1))./(2*p) +(175*(exp(-(4049340145520689*10^(3/5)*p.*((459*h + 11).^(11/5) - (459*h +28)^(11/5)))./1981583836043018240000) - 1))./(2*p) + (175*(exp(-(4049340145520689*10^(3/5)*p.*((476*h+ 11).^(11/5) - (476*h + 28).^(11/5)))./1981583836043018240000) - 1))./(2*p) +(175*(exp(-(4049340145520689*10^(3/5)*p.*((493*h + 11).^(11/5) - (493*h + 28).^(11/5)))./1981583836043018240000)- 1))./(2*p) + (175*(exp(-(4049340145520689*10^(3/5)*p.*((510*h + 11).^(11/5) -(510*h + 28).^(11/5)))./1981583836043018240000) - 1))./(2*p) +(175*(exp(-(4049340145520689*10^(3/5)*p.*((527*h + 11).^(11/5) - (527*h + 28).^(11/5)))./1981583836043018240000)- 1))./(2*p) + (175*(exp(-(4049340145520689*10^(3/5)*p.*((544*h + 11).^(11/5) -(544*h + 28)^(11/5)))./1981583836043018240000) - 1))./(2*p) +(175*(exp(-(4049340145520689*10^(3/5)*p.*((561*h + 11).^(11/5) - (561*h + 28).^(11/5)))./1981583836043018240000)- 1))./(2*p) + (175*(exp(-(4049340145520689*10^(3/5)*p.*((578*h + 11).^(11/5) -(578*h + 22).^(11/5)))./1981583836043018240000) - 1))./(2*p) + 195;
[c,m]=contour(p,h, y11,[20,50,100,300,500,800,1000]);% 此乃画等高线图指令
m=clabel(c,m);
set(m,'BackgroundColor',[1 1.6],'Edgecolor',[.7 .7 .7]);
xlabel('p');
ylabel('h');
title({'La contour de la fonction:$$f(x,y)=(1-x)^2+100(y-x^2)^2$$';...
'sur l''intervalle [0,1]x[0,1]'},'Interpreter','latex','FontSize',12);

程序运行出来,图像是这样的,很奇怪

程序运行出来,图像是这样的,很奇怪

新手

9 麦片

财富积分


050


4

主题

13

帖子

0

最佳答案
 楼主| 发表于 2018-7-12 16:53:10 | 显示全部楼层
路过的大神,请留下脚印~~~不胜感激~~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

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