声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1516|回复: 5

[编程技巧] solve求解非线性方程组一问

[复制链接]
发表于 2006-4-4 11:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
solve函数中的一些数值是不是不能用变量来取代啊?
例如:
  1. function tty
  2. a=5;
  3. b=3;
  4. c=solve('x1+x2=a,x1*x2=b')
  5. d=c.x1(2)
复制代码

怎么输出的表达式是:
d =

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

是用a和b来表示的?
小弟初学matlab,还望高手指点,谢谢
回复
分享到:

使用道具 举报

发表于 2006-4-4 11:55 | 显示全部楼层
c=solve('x1+x2=a,x1*x2=b')

计算完之后

c.x1和c.x2分别表示x1和x2的解
 楼主| 发表于 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: [2x1 sym]
    x2: [2x1 sym]

d =

1/2*a+1/2*(a^2-4*b)^(1/2)
发表于 2006-4-4 21:53 | 显示全部楼层
solve是符号运算的
换fsolve
 楼主| 发表于 2006-4-5 12:12 | 显示全部楼层
谢谢happy,可是我觉得fsolve对初值要求太严格了,计算结果远不如solve精确啊
发表于 2006-4-5 14:20 | 显示全部楼层
那就自己找一个精度高、计算快的算法写个小程序,不一定要用现成的
另外如果规模比较大,不建议用matlab
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-6-16 18:31 , Processed in 0.067138 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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