悠若谷 发表于 2009-6-17 15:51

matlab对复杂函数绘图问题

我要用matlab对一个复杂的隐函数作图,要用到solve
这里我把函数简化用y=1+2x来表达
********mytest.m********
function y=mytest1(x)
z=solve('1+2*x-y=0');
y=sym2poly(z);


*******command window*****
clear all
x=linspace(0,5);
y=zeros(size(x));
for i=1:length(x)
y(i)=mytest1(x(i));
end
plot(x,y)

运行出错提示:???In an assignmentA(I) = B, the number of elements in B and
I must be the same.
麻烦大家帮我看看是哪里出问题了!sym2poly可以这样用吗?

rocwoods 发表于 2009-6-17 16:22

参数传递的问题。不建议使用solve,符号计算慢,并且很多复杂的隐函数求不出符号解析式。建议用数值的办法,楼主可以参考这个帖子http://forum.simwe.com/viewthread.php?tid=791513,我在6楼的那个构造隐函数句柄的方法。这样对于MATLAB来说,隐函数就变成“显式”表达式的函数了。

悠若谷 发表于 2009-6-18 13:56

原帖由 rocwoods 于 2009-6-17 16:22 发表 http://www.chinavib.com/forum/images/common/back.gif
参数传递的问题。不建议使用solve,符号计算慢,并且很多复杂的隐函数求不出符号解析式。建议用数值的办法,楼主可以参考这个帖子http://forum.simwe.com/viewthread.php?tid=791513,我在6楼的那个构造隐函数句柄的 ...
rocwoods您指的是z=@(x,y) fzero(@(z) z-sin((z*x-0.5)^2 + x*2*y^2-z/10)*exp(-((x-0.5-exp(-y+z))^2 + y^2-z/5+3)),rand);这个吧
但是我这个函数没法用一句代码表示
因为里边包括积分什么的
如果写成function里边似乎只能用solve才行
您发的那个帖子很好,学习了,谢谢~

悠若谷 发表于 2009-6-18 14:00

我那个简单程序后来自己改了一下,可以运行了。
我贴出来好了,万一以后有同学要参考。
********mytest.m********
function y=mytest(x)
syms y;
eq1=1+2*x-y;
=solve(eq1);
y=eval(y);
*******command window*****
clear all
x=linspace(0,5);
y=zeros(size(x));
for i=1:length(x)
y(i)=mytest(x(i));
end
plot(x,y)

rocwoods 发表于 2009-6-18 14:22

原帖由 悠若谷 于 2009-6-18 13:56 发表 http://www.chinavib.com/forum/images/common/back.gif

rocwoods您指的是z=@(x,y) fzero(@(z) z-sin((z*x-0.5)^2 + x*2*y^2-z/10)*exp(-((x-0.5-exp(-y+z))^2 + y^2-z/5+3)),rand);这个吧
但是我这个函数没法用一句代码表示
因为里边包括积分什么的
如果写成function ...
为什么只能用solve呢?如果你写成的函数是一元函数,可以用fzero,多元的用fsolve,solve是求符号解,像你说的那样复杂的函数肯定算起来慢。
页: [1]
查看完整版本: matlab对复杂函数绘图问题