solve解方程的问题
我用solve函数解方程为什么返回值不能给出小数表示的结果呢?如:给定a=3,b=4,c=1,d=1,
clear; syms x; syms y; syms z; syms w;
a=input('please input a= '); b=input('please input b= ');
c=input('please input c= '); d=input('please input d= ');
eq1=(x+y+z)*w/(x+y+z+w)-a; eq2=(x+y+w)*z/(x+y+z+w)-b;
eq3=(x+w+z)*y/(x+y+z+w)-c; eq4=(w+y+z)*x/(x+y+z+w)-d;
= solve(eq1,eq2,eq3,eq4,x,y,z,w)
这样一个简单的程序解得的结果是这样表示的:
solvx =
11/4+1/4*17^(1/2)
11/4-1/4*17^(1/2)
-1/2
-1/2
怎么转换成一个小数来表示最终的结果啊,请大家帮帮忙啊?
[ 本帖最后由 ChaChing 于 2009-10-30 21:22 编辑 ] help double
回复 沙发 ChaChing 的帖子
问题解决了,谢谢版主!这个论坛真是太好了!继续学习!回复 楼主 yuanping09 的帖子
大家好,还是这个程序,在这里还想请教两个问题:1.实际中只要x,y,z,w都为正数的那组解,怎么在显示的结果中只保留x,y,z,w同时都为正数的那组解啊?
因为要用这组解来计算e=(x+z)*(y+w)/(x+y+z+w); f=(x+w)*(y+z)/(x+y+z+w);
2.而且直接计算e,f会提示错误??? Error using ==> mtimes
Inner matrix dimensions must agree.
Error in ==> abcd1 at 19
e=(x+z)*(y+w)/(x+y+z+w);
应该怎么修改啊?
谢谢!
[ 本帖最后由 ChaChing 于 2009-10-31 12:51 编辑 ]
回复 地板 yuanping09 的帖子
a=3;b=4;c=1;d=1;syms x y z w;
eq1=(x+y+z)*w/(x+y+z+w)-a; eq2=(x+y+w)*z/(x+y+z+w)-b;
eq3=(x+w+z)*y/(x+y+z+w)-c; eq4=(w+y+z)*x/(x+y+z+w)-d;
= solve(eq1,eq2,eq3,eq4,x,y,z,w);
x1=double(solvx); y1=double(solvy); z1=double(solvz); w1=double(solvw);
Sol=; ii=all(Sol>0,2);
x1=x1(ii); y1=y1(ii); z1=z1(ii); w1=w1(ii);
e=(x1+z1)*(y1+w1)/(x1+y1+z1+w1)
f=(x1+w1)*(y1+z1)/(x1+y1+z1+w1)
[ 本帖最后由 ChaChing 于 2009-10-31 12:52 编辑 ]
回复 5楼 ChaChing 的帖子
ChaChing真的是很厉害啊,谢谢你!回复 6楼 yuanping09 的帖子
客气! 个人并不厉害, 仅是分享我会的!亦希望楼主能与会员们一起分享 俺也遇到了这个问题 谢谢chaching
页:
[1]