声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 970|回复: 12

[编程技巧] 如何产生随机解

[复制链接]
发表于 2008-2-27 09:23 | 显示全部楼层 |阅读模式

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

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

x
请教各位大虾们,小弟最近遇到这样的一个问题,例如有这样一个方程,a+b+c+d=1222。我该如何编程序随机产生产生一组a,b,c,d的解呐
回复
分享到:

使用道具 举报

发表于 2008-2-27 10:05 | 显示全部楼层
随机产生4个数,满足条件就认为是解
 楼主| 发表于 2008-2-27 10:34 | 显示全部楼层

回复 2楼 的帖子

哦,是的。谢谢了
发表于 2008-2-27 10:50 | 显示全部楼层

回复 3楼 的帖子

不过我觉得4个数都随机数,不容易刚好满足条件
或许有其他方法
 楼主| 发表于 2008-2-27 15:20 | 显示全部楼层

回复 4楼 的帖子

对,我今天试了,程序写不好。
发表于 2008-2-27 20:13 | 显示全部楼层
随机产生三个而不是四个, 第四个根据约束方程定
 楼主| 发表于 2008-3-1 15:46 | 显示全部楼层

回复 6楼 的帖子

你好,谢谢你的热心回复。下面是我写的一点小程序,对于帖子中问题还挺适合。但是我在实际中遇到的问题是不可能将约束关系a+b+c+d=1222写成d(i,1)=1222-a(i)-b(i)-c(i)
这种简单的形式,所以遇到了一些麻烦,还请大虾帮忙看一下。
a=zeros(100,1)
b=zeros(100,1)
c=zeros(100,1)
d=zeros(100,1)
e=zeros(100,4)
for i=1:1:100
a(i,1)=1000*rand(1,1)
b(i,1)=1000*rand(1,1)
c(i,1)=1000*rand(1,1)
d(i,1)=1222-a(i)-b(i)-c(i)
e(i,1)=a(i,1)
e(i,2)=b(i,1)
e(i,3)=c(i,1)
e(i,4)=d(i,1)

end
发表于 2008-3-1 18:10 | 显示全部楼层

回复 7楼 的帖子

把你的约束关系贴上来
 楼主| 发表于 2008-3-2 16:16 | 显示全部楼层

回复 8楼 的帖子

谢谢你的热心回复,下面是约束方程,是一个哈密顿方程,

h=2*w*(a^2+b^2+c^2+d^2)+a*(n-2*(a^2+b^2+c^2+d^2))...
+x*((n+l)*(b^2+a^2)-(n-l)*(c^2+d^2)-2*(b^2+a^2)^2-2*(d^2+c^2)^2)...   
+a*(8*(a^2+b^2)^2+8*(c^2+d^2)^2+2*(n^2+l^2)-2*(n+l)*(a^2+b^2)-2*(n-l)*(c^2+^2))...
+4*s*(n-2*(a^2+b^2+c^2+d^2))*(b*d-a*c)...
+(r+2*g)*(((n+l)/2-b^2-a^2)*(b^2-a^2)+((n-l)/2-d^2-c^2)*(d^2-c^2))
这里边的abcd是正则坐标和动量
发表于 2008-3-3 08:03 | 显示全部楼层
需要的是a,b,c,d四者之间的关系,而你给出的是h作为a,b,c,d的函数。
 楼主| 发表于 2008-3-3 14:46 | 显示全部楼层

回复 10楼 的帖子

是的,但是在这里h是一个已知量,
发表于 2008-3-3 19:16 | 显示全部楼层
能否从你的h中显式解出a,b,c,d之一。如能则其他三量独立产生,在算出另外一个。
如果无法找到显式解,那么只能解非线性方程了。
 楼主| 发表于 2008-3-3 20:06 | 显示全部楼层

回复 12楼 的帖子

算不出来第四个,那只好解非线性方程了,我试试吧,谢谢你的热心回复。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-12-4 18:19 , Processed in 0.057750 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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