matlab函数调用函数画图问题,求大神 60

程序如下,7个未知数7个方程,myfun5里面max想是关于a的表达式,最后想画出max-a的函数图像,求大神赐教啊functionf=myfun5(a)symsx1x2... 程序如下,7个未知数7个方程,myfun5里面max想是关于a的表达式,最后想画出max-a的函数图像,求大神赐教啊
function f=myfun5(a)
syms x1 x2 x3 x4 n c p max
max(1)=17.86*x3*(-(4*a*(exp(-7/15)*exp(-(4*a)/15) - 1))/(4*a + 7))+22.99*x4*(-(10*a*(exp(-7/15)*exp(-(2*a)/3) - 1))/(10*a + 7));
x1=c*n;
x2=c*n*exp(-0.7);
x3=c*n*exp(-1.4);
x4=c*n*exp(-(0.8*a/3+3*0.7));
c=1.22*1e11/(1.22*1e11+n);
n=0.5*p*x3*exp(-2*(0.4*a+0.7)/3)+p*x4*exp(-2*(a+0.7)/3);
p=1.109*1e5;
format long
f=vpa(max(1),5);
%调用上述函数
syms a
ezplot('myfun5',0,20)
这是报错信息
展开
 我来答
  • 你的回答被采纳后将获得:
  • 系统奖励15(财富值+成长值)+难题奖励30(财富值+成长值)+提问者悬赏60(财富值+成长值)
若以下回答无法解决问题,邀请你更新回答
匿名用户
2015-08-16
展开全部
题主的MATLAB是什么版本?
我用2008a和2015a都可以画出图。
追问
应该不是版本的问题,您方便把您的运行程序结果发一下么?
追答

限于字数,代码作为附件上传。绘图结果如下。

 

1、首先,我上次搞错了,用ezplot('myfun5',0,20),并且把myfun5作为一个子函数写在同一个m文件中。使用字符串来表示函数,无法使用子函数,而是在工作路径中查找一个myfun5.m的文件,找不到这样的文件或builtin函数,就会将其理解为一个inline函数的表达式(这个过程在ezfcnchk进行),也就是把myfun5理解为一个变量,函数表达式也就是变量自身,即单位比例函数。所以画出来的图如下:

 

2、ezplot前面的syms a毫无意义。p是常数,没必要定义符号变量。format long也毫无意义。max(1)也有点无厘头。后面的vpa也没什么意义。

 

3、之前没注意到你给的是一个方程组,按照现有的写法肯定是不行的,不可能你随便罗列一下方程它就能自动给你解出来。

 

4、ezplot的用法也是有问题的。正确的用法应该是ezplot(@myfun5,[0,20])
像现在这种用法,会把区间上限20理解为figure的句柄(同时把它作为区间上限使用)。这样使用的后果是,如果这个数不是正整数,例如19.9,就会导致出错。这种调用方式在文档中也没有记载。

 

5、这个方程组其实是可以直接求解的。方程组有两组解,可以直接用solve求出。其中一组解为c=1,其余为0。另一组解表示为a的函数,可用于计算max后绘图。由于求出的关于a的表达式太长,绘图后最好把title清除。


另外值得一提的是,符号运算在不同版本的MATLAB中可能有差别。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式