找回密码
 注册
Simdroid-非首页
查看: 230|回复: 7

[工程数学] 编程时,遇到这样的方程,怎么算呢?

[复制链接]
发表于 2006-12-4 12:25:11 | 显示全部楼层 |阅读模式 来自 陕西西安
A*y=B*x+C
D*(z+E)=x*(z+x/2)
z*(1-y/F)=1

这三个方程,x  y   z  是未知数,A B C D E F 是常数。其中要求 1-y/F>0。
请大家帮帮我吧。
发表于 2006-12-4 14:26:16 | 显示全部楼层 来自 LAN
Simdroid开发平台
解决不了可以发到编程版,并且注明使用的程序,可能会有高人指教的
发表于 2006-12-5 02:29:11 | 显示全部楼层 来自 美国
这个数值计算的编程不难。一个简单的数值方法就是迭代法。给x,y和z一个任意的初始值,然后开始
迭代,迭代后将求得的值作为下一次迭代的初始值。所以你可以利用循环实现这个迭代。fortran里面用
do循环,C里面用while或者do while循环。设定一个可以接受的误差,当前一次的循环和这次循环所得的
值的差小于你规定的误差,则结束循环。这样你就得到了所要的解。
发表于 2006-12-6 01:17:28 | 显示全部楼层 来自 美国
顺便指出,经过消元后(消去y,z),这个方程组化简为一个x的一元二次方程。你可以
在谭浩强编的fortruan程序设计或者C程序设计里面找到不下三种的解法。
发表于 2007-1-24 10:09:40 | 显示全部楼层 来自 上海
原帖由 oasis_luo 于 2006-12-6 01:17 发表
顺便指出,经过消元后(消去y,z),这个方程组化简为一个x的一元二次方程。你可以
在谭浩强编的fortruan程序设计或者C程序设计里面找到不下三种的解法。


应该是一元三次方程吧。
发表于 2007-1-29 13:53:18 | 显示全部楼层 来自 江苏南京
3楼的方法比较好,最好用jacobi方法来跌代,速度比较快一些。
他这个确实是可以转化为一元三次方程的,这样如果直接用matlab求解会得到三组解,但是其中会有虚数解的。因此如果不给定实际的ABCDEF是很难得到实数解的,下面的程序是我试了几个ABCDEF才得到一组实数解的。
总的来说,用数值法确实比较好的。最简单就象下面的matlab程序一样,直接得到而不用管它究竟用什么方法。但是你要根据工程实际研究自己的方程,确定哪一个是符合自己要求的。

程序:
A=5;B=1;C=6;D=1;E=7;F=2;
[x y z]=solve('A*y-B*x-C,D*(z+E)-x*(x+x/2),z*(1-y/F)-1');
xyz=[x y z];
xyz=vpa(subs(xyz),7)
结果:
[ 3.194784-.6284858*i, 1.838957-.1256972*i, 7.717474-6.023629*i]
[           -2.389568,            .7220864,            1.565051]
[ 3.194784+.6284858*i, 1.838957+.1256972*i, 7.717474+6.023629*i]
发表于 2007-3-30 17:23:16 | 显示全部楼层 来自 天津河北区
先化简以下啊,侃侃能不能找到一个好的方程?与之解答
发表于 2007-3-30 17:25:39 | 显示全部楼层 来自 天津河北区
先化简以下啊,侃侃能不能找到一个好的方程?与之解答
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-6-1 16:54 , Processed in 0.039345 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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