找回密码
 注册
Simdroid-非首页
查看: 444|回复: 9

如何将参数传递到solve求解的方程组里面?

[复制链接]
发表于 2006-11-6 14:58:00 | 显示全部楼层 |阅读模式 来自 江苏南京
a=1:0.5:1000,我要随参数a变化时,解x,y的变化并绘图.我只要数值解就可以了,
因此必须对a进行参数指定,但参数a的数值如何能传递到下列方程组里面呢?
S = solve('a*x ^2+ a^2*y^2+3*x*y+18 = 0','(a-2)*x^4+a^3*y^4+7*y^2-12 = 0')

当a=1时,解得的根如下:
X=
[         4.43]
[        -4.43]
[       .976*i]
[      -.976*i]
[  1.46+2.06*i]
[ -1.46-2.06*i]
[  1.46-2.06*i]
[ -1.46+2.06*i]
Y=
[         -4.4]
[          4.4]
[       2.91*i]
[      -2.91*i]
[ -1.28+1.57*i]
[  1.28-1.57*i]
[ -1.28-1.57*i]
[  1.28+1.57*i]
a的取值有2000个数,我一个个的算,恐怕很难实现,有没有将参数 a直接传递到方程里面的方法,请大家指点,谢谢.
方程如下:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
发表于 2006-11-6 19:02:12 | 显示全部楼层 来自 新疆乌鲁木齐
Simdroid开发平台
  1. function ParameterPasstoSymbolicEquation
  2. clc
  3. a=1:0.5:10;
  4. for i=1:length(a)
  5.     str1=[num2str(a(i)),'*x^2+',num2str(a(i)),'^2*y^2+3*x*y+18=0'];
  6.     str2=['(',num2str(a(i)),'-2)*x^4+',num2str(a(i)),'^3*y^4+7*y^2-12 = 0'];
  7.     S{i} = solve(str1,str2);
  8. end
复制代码

即使是传进去,估计也很难实现,算了十九个用了将近40s,你自己算算你的a序列需要多长时间。
另:希望今后遇到参数传递的问题先搜索一下,光我自己都记不清到底回答过多少遍了,有点儿烦了...
 楼主| 发表于 2006-11-7 16:49:54 | 显示全部楼层 来自 江苏南京
原帖由 bainhome 于 2006-11-6 19:02 发表
function ParameterPasstoSymbolicEquation
clc
a=1:0.5:10;
for i=1:length(a)
    str1=;
    str2=;
    S{i} = solve(str1,str2);
end
即使是传进去,估计也很难实现,算了十九个用了将近40s,你自己 ...



但总比手算强,回答的次数多了,说明这个问题很重要,多谢bainhome版主.
发表于 2006-11-7 18:19:50 | 显示全部楼层 来自 四川成都
原帖由 zcf1976 于 2006-11-7 16:49 发表

但总比手算强,回答的次数多了,说明这个问题很重要,多谢bainhome版主.


这个问题也很简单...:lol
发表于 2006-11-8 09:57:14 | 显示全部楼层 来自 北京海淀
bainhome的意思不是否认这个问题不重要。他是希望新手能够先自己尝试解决一下(包括看MATLAB帮助文档还有搜索论坛帖子等等),这样对自己能力的提高很有帮助。我自己清楚记得当初刚学MATLAB没几天时就遇到楼主这个问题了,当时周围的人对MATLAB都不熟,而仅有的一本书上也没有这方面的直接描述。最后是在帮助文档里找到的。虽然花了很多时间(如果当时能够稍微熟悉些MATLAB系统,应该不会花那么长时间)但是在翻MATLAB文档的过程中见识了很多MATLAB应用技巧(事实证明,这些技巧后来都派上用场了,也就是说虽然解决那个问题花了很多时间,但是在解决那个问题的时候顺便就把未来可能遇到一系列问题解决了,因此看帮助文档并不是浪费时间)。如果当时知道这些论坛就更好办了。像这些问题,但凡知名的MATLAB版都有解答。
发表于 2009-5-6 12:52:56 | 显示全部楼层 来自 宁夏银川
这是a=1:0.5:5时,x1与x2的关系曲线图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

发表于 2009-5-6 12:59:04 | 显示全部楼层 来自 宁夏银川
2楼的代码考入m文件中按F5键怎么运行不了啊??
回复 不支持

使用道具 举报

发表于 2009-5-6 14:05:23 | 显示全部楼层 来自 浙江杭州
7# wanglei5201118

运行没问题呀

可能函数形式要调用吧,你把第一行去掉后再拷入运行就可以了。
回复 不支持

使用道具 举报

发表于 2009-5-25 11:10:37 | 显示全部楼层 来自 北京
本帖最后由 zhaoyan24 于 2009-5-25 11:27 编辑

如果我的方程中有两个参数呢?是不是该这样写呢?str1=[num2str(a(i)), num2str(b(i)), '…………=0']
……s(i)=solve(str1)
但会有solve命令用错的错误提示,是怎么回事呢?
回复 不支持

使用道具 举报

发表于 2009-5-25 12:19:44 | 显示全部楼层 来自 北京海淀
这个Mathematica和MuPAD都可以帮你给出符号解的。然后你就直接把a的值代进去,没必要中间经过MATLAB
回复 不支持

使用道具 举报

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

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-5-19 15:59 , Processed in 0.060961 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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