声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1608|回复: 4

[编程技巧] matlab对复杂函数绘图问题

[复制链接]
发表于 2009-6-17 15:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我要用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 assignment  A(I) = B, the number of elements in B and
I must be the same.
麻烦大家帮我看看是哪里出问题了!sym2poly可以这样用吗?
回复
分享到:

使用道具 举报

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

评分

1

查看全部评分

 楼主| 发表于 2009-6-18 13:56 | 显示全部楼层
原帖由 rocwoods 于 2009-6-17 16:22 发表
参数传递的问题。不建议使用solve,符号计算慢,并且很多复杂的隐函数求不出符号解析式。建议用数值的办法,楼主可以参考这个帖子http://forum.simwe.com/viewthread.php?tid=791513,我在6楼的那个构造隐函数句柄的 ...

rocwoods您指的是[email=z=@(x,y]z=@(x,y[/email]) 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;
[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)

评分

1

查看全部评分

发表于 2009-6-18 14:22 | 显示全部楼层
原帖由 悠若谷 于 2009-6-18 13:56 发表

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

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-22 10:02 , Processed in 0.054411 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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