zhaoyaobang 发表于 2009-5-31 22:54

再次求助一个代数方程组matlab求解问题

首先感谢friendchj对我的帮助,见http://forum.vibunion.com/forum/thread-82586-1-1.html。
方程组:x+y=a;x+2y=b.
其中当a=,b=,即a=1,b=6;a=2,b=7.......a=5,b=10.
要求解出x,y的值,并以a为自变量,在同一坐标中画出x,y。
我的程序如下:
syms x y a b
f1=x+y-a;
f2=x+2*y-b;
=solve(f1,f2,x,y);
a1=;
b1=;
for i=1:length(kx)
fx(i,:)=subs(kx(i),{a,b},{a1,b1});
end
for i=1:length(ky)
fy(i,:)=subs(ky(i),{a,b},{a1,b1});
end
plot(a1,fx,a1,fy)
显然上述程序在求解方程时,先得到的是x,y关于a,b的符号表达式,即x=2a-b;y=b-a,然后再依次带入a,b的值求得x,y。
现在的问题是,我实际需要求解的方程组很麻烦,没办法获得类似于(x=2a-b,y=b-a)这样的关于参数的符号解。
我想知道我这个方程求解,怎么样先把a,b的值带入方程,再求出它的解决?
希望能给出详细的解答,再次感谢你无私的帮助!!!

lqbtbs 发表于 2009-6-1 20:13

這是GUI嗎?
syms作啥用的?
是GUI的話是把syms改成global吧

ChaChing 发表于 2009-6-1 20:52

syms x y a b
a1=; b1=;
for k=1:length(a1)
f1=x+y-a; f2=x+2*y-b;
f1=subs(f1,{a,b},{a1(k),b1(k)});
f2=subs(f2,{a,b},{a1(k),b1(k)});
=solve(f1,f2,x,y);
for i=1:length(kx), fx(i,k)=double(kx(i)); end
for i=1:length(ky), fy(i,k)=double(ky(i)); end
end
plot(a1,fx,a1,fy)

ChaChing 发表于 2009-6-1 20:54

回复 沙发 lqbtbs 的帖子

符号运算的东东

friendchj 发表于 2009-6-1 21:02

如果实际算式很麻烦,很可能没有解析解,这时可以用fsolve求数值解。

zhaoyaobang 发表于 2009-6-1 21:17

原帖由 ChaChing 于 2009-6-1 20:52 发表 http://www.chinavib.com/forum/images/common/back.gif
syms x y a b
a1=; b1=;
for k=1:length(a1)
f1=x+y-a; f2=x+2*y-b;
f1=subs(f1,{a,b},{a1(k),b1(k)});
f2=subs(f2,{a,b},{a1(k),b1(k)});
=solve(f1,f2,x,y);
for i=1:length(k ...

ChangChing大黑狗哥哥:loveliness: ,太感谢你了,爱死你了,感谢振动论坛的各位朋友鼎力相助!!!

ChaChing 发表于 2009-6-1 21:39

回复 6楼 zhaoyaobang 的帖子

不客气! 个人工作上较少使用symbolic, 不顶熟, 仅是照friendchj的方式练习下罢了!

[ 本帖最后由 ChaChing 于 2009-6-2 08:14 编辑 ]

zhaoyaobang 发表于 2009-6-1 22:38

回复 5楼 friendchj 的帖子

这位朋友能麻烦您具体告诉我一下吗?我刚学不久,应急用,完全是想照葫芦画瓢,麻烦您耐心指点!

dingd 发表于 2009-6-2 11:26

使用1stOpt可以很简单地解决这类问题:

LoopConstant a=,b=;
PlotLoopData a, x, y;
Function x+y=a;
            x+2*y=b;

结果:
a b x y
1 6 -4 5
2 7 -3 5
3 8 -2 5
4 9 -1 5
5 10 0 5

friendchj 发表于 2009-6-2 12:43

1stOpt的确有独到之处,呵呵
利用fsolve可以这样解:
主程序:
clc
clear
global a b
a=1;
b=6;
fsolve(@myfun,)
子程序:
function F=myfun(x,a,b)
global a b
F=[x(1)+x(2)-a;
   x(1)+2*x(2)-b];

zhaoyaobang 发表于 2009-6-2 21:22

小弟真是三生有幸啊,ChaChing,friendchj,dingd几位大虾都亲自指教了,不愧是教研室主任:@) ,再次深表谢意!!

几位朋友不吝赐教,不厌其烦的把详细代码写出来,对我这个菜鸟真是莫大的帮助,我把大家的编程思路仔细弄明白了的话就能完全解决我的问题了:victory: 。谢谢各位!:handshake

[ 本帖最后由 ChaChing 于 2009-6-3 10:01 编辑 ]

zhaoyaobang 发表于 2009-6-2 21:25

原帖由 dingd 于 2009-6-2 11:26 发表 http://www.chinavib.com/forum/images/common/back.gif
使用1stOpt可以很简单地解决这类问题:

LoopConstant a=,b=;
PlotLoopData a, x, y;
Function x+y=a;
            x+2*y=b;

结果:
a b x y
1 6 -4 5
2 7 -3 5
3 8 -2 5
...
dingd大哥,你能把你的代码具体完整点吗?怎么获得曲线的整个过程,我看上去有点吃力!
页: [1]
查看完整版本: 再次求助一个代数方程组matlab求解问题