grta 发表于 2006-4-4 11:40

solve求解非线性方程组一问

solve函数中的一些数值是不是不能用变量来取代啊?
例如:
function tty
a=5;
b=3;
c=solve('x1+x2=a,x1*x2=b')
d=c.x1(2)
怎么输出的表达式是:
d =

1/2*a+1/2*(a^2-4*b)^(1/2)

是用a和b来表示的?
小弟初学matlab,还望高手指点,谢谢

happy 发表于 2006-4-4 11:55

c=solve('x1+x2=a,x1*x2=b')

计算完之后

c.x1和c.x2分别表示x1和x2的解

grta 发表于 2006-4-4 12:08

可是我还要利用求解得到的结果来构建另外一个方程组,上面举的例子只是想把求解得到的一个结果赋值给d,为什么出来之后却是用字母表示的,字母a和b我已经赋值了啊:

m文件:
function tty
a=5;
b=3;
c=solve('x1+x2=a,x1*x2=b')
d=c.x1(2)
运行结果:
c =
    x1:
    x2:

d =

1/2*a+1/2*(a^2-4*b)^(1/2)

happy 发表于 2006-4-4 21:53

solve是符号运算的
换fsolve

grta 发表于 2006-4-5 12:12

谢谢happy,可是我觉得fsolve对初值要求太严格了,计算结果远不如solve精确啊

happy 发表于 2006-4-5 14:20

那就自己找一个精度高、计算快的算法写个小程序,不一定要用现成的
另外如果规模比较大,不建议用matlab
页: [1]
查看完整版本: solve求解非线性方程组一问