再次求助一个代数方程组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的值带入方程,再求出它的解决?
希望能给出详细的解答,再次感谢你无私的帮助!!! 這是GUI嗎?
syms作啥用的?
是GUI的話是把syms改成global吧 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)
回复 沙发 lqbtbs 的帖子
符号运算的东东 如果实际算式很麻烦,很可能没有解析解,这时可以用fsolve求数值解。 原帖由 ChaChing 于 2009-6-1 20:52 发表 http://www.chinavib.com/forum/images/common/back.gifsyms 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: ,太感谢你了,爱死你了,感谢振动论坛的各位朋友鼎力相助!!!
回复 6楼 zhaoyaobang 的帖子
不客气! 个人工作上较少使用symbolic, 不顶熟, 仅是照friendchj的方式练习下罢了![ 本帖最后由 ChaChing 于 2009-6-2 08:14 编辑 ]
回复 5楼 friendchj 的帖子
这位朋友能麻烦您具体告诉我一下吗?我刚学不久,应急用,完全是想照葫芦画瓢,麻烦您耐心指点! 使用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 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]; 小弟真是三生有幸啊,ChaChing,friendchj,dingd几位大虾都亲自指教了,不愧是教研室主任:@) ,再次深表谢意!!
几位朋友不吝赐教,不厌其烦的把详细代码写出来,对我这个菜鸟真是莫大的帮助,我把大家的编程思路仔细弄明白了的话就能完全解决我的问题了:victory: 。谢谢各位!:handshake
[ 本帖最后由 ChaChing 于 2009-6-3 10:01 编辑 ] 原帖由 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]