谁能告诉我如何用vb编一个“解4元一次方程组”的程序 点击:4549 | 回复:20



bydfans

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:13帖 | 42回
  • 年度积分:0
  • 历史总积分:178
  • 注册:2004年6月11日
发表于:2005-06-02 11:42:00
楼主



bydfans

  • 精华:0帖
  • 求助:0帖
  • 帖子:13帖 | 42回
  • 年度积分:0
  • 历史总积分:178
  • 注册:2004年6月11日
发表于:2005-06-02 12:15:00
1楼
自己顶一下

hppost

  • 精华:1帖
  • 求助:0帖
  • 帖子:9帖 | 74回
  • 年度积分:0
  • 历史总积分:193
  • 注册:2004年7月28日
发表于:2005-06-03 08:59:00
2楼
这样的问题发到程序员论坛更合适一些

心剑

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 11回
  • 年度积分:0
  • 历史总积分:62
  • 注册:2005年6月02日
发表于:2005-06-03 09:07:00
3楼
你能说一下那个方程组吗? 我想有可能能帮你一下。 你可以分析你的方程组的几个条件。用if 和 and 语句的话应该不难,不过,你的数学要过关哦!

bydfans

  • 精华:0帖
  • 求助:0帖
  • 帖子:13帖 | 42回
  • 年度积分:0
  • 历史总积分:178
  • 注册:2004年6月11日
发表于:2005-06-03 09:15:00
4楼
楼上的我的方程组是标定产生的,不是特定的方程组,数学知识我倒是有,我会用行列式求解,但是怎么用程序实现呢?

心剑

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 11回
  • 年度积分:0
  • 历史总积分:62
  • 注册:2005年6月02日
发表于:2005-06-03 09:32:00
5楼
一般编程,不是说你用数学的方式用在语言中,而是,把数学方程细分几种条件来逐一列出来,我冒昧的问一下你学过C吗?学过的话,你应该知道有一个例程序是求二元二次方程的,你可以参考一下

bydfans

  • 精华:0帖
  • 求助:0帖
  • 帖子:13帖 | 42回
  • 年度积分:0
  • 历史总积分:178
  • 注册:2004年6月11日
发表于:2005-06-03 09:42:00
6楼
我觉得二元二次方程很Easy,但是我实在不知道四元一次的怎么解。

心剑

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 11回
  • 年度积分:0
  • 历史总积分:62
  • 注册:2005年6月02日
发表于:2005-06-03 09:46:00
7楼
那是一样的啊,只是,它的情况多一点了罢了,要不,我现在在上班,我下班后,给你编一个,星期一,发上,你看一下

bydfans

  • 精华:0帖
  • 求助:0帖
  • 帖子:13帖 | 42回
  • 年度积分:0
  • 历史总积分:178
  • 注册:2004年6月11日
发表于:2005-06-03 09:51:00
8楼
谢谢心剑先,期盼ing...

pmousea

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 5回
  • 年度积分:0
  • 历史总积分:56
  • 注册:2004年4月22日
发表于:2005-06-03 10:08:00
9楼
我觉得用MATLB解决这个问题是一个很容易的问题.有兴趣可以和我联系一下.QQ:64615530

心剑

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 11回
  • 年度积分:0
  • 历史总积分:62
  • 注册:2005年6月02日
发表于:2005-06-06 09:14:00
10楼
bydfabs ,我在家试了一下,我把问题想的太简单了,我只是编写了一个所有的数据都在十以下的,而且,我觉得算法有问题,如果,你不急的话,再等我几天,不知道行不行?

bydfans

  • 精华:0帖
  • 求助:0帖
  • 帖子:13帖 | 42回
  • 年度积分:0
  • 历史总积分:178
  • 注册:2004年6月11日
发表于:2005-06-06 14:43:00
11楼
谢谢心剑先,我可以等,手上有好几个项目,这个项目月底做完就可以了,麻烦心剑了。

心剑

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 11回
  • 年度积分:0
  • 历史总积分:62
  • 注册:2005年6月02日
发表于:2005-06-13 08:09:00
12楼
不好意思,今天才发给你,前几天比较忙。 '主要是应用了线性代数了,我好久没用了,临时看了一下书了 '因此,耽搁了这么多时间,不好意思啊 Dim A(4, 5) As Double '定义A(n,n+1),因为是四维,n=4 Dim x(4) As Double Dim ark As Double Dim flag As Integer Private Sub Form_Load() Dim i As Integer Dim n As Integer '下面为一示例四维方程组参数 ' x1+x2 + x3 + x4 = 10 ' x1+2*x2+x3+x4=12 ' x1+2*x2-2*x3+x4=3 ' x1+x2+2*x3-2*x4=1 n = 4 ' n 为几维方程组 ' 下面为数组的参数 A(4, 1) = 1 A(4, 2) = 1 A(4, 3) = 1 A(4, 4) = 1 A(4, 5) = 10 A(3, 1) = 1 A(3, 2) = 2 A(3, 3) = 1 A(3, 4) = 1 A(3, 5) = 12 A(2, 1) = 1 A(2, 2) = 2 A(2, 3) = -2 A(2, 4) = 1 A(2, 5) = 3 A(1, 1) = 1 A(1, 2) = 1 A(1, 3) = 2 A(1, 4) = -2 A(1, 5) = 1 If (cal(4)) Then MsgBox ("解算错误,参数不对") End If Text1.Text = x(1) ' 方程的值 Text2.Text = x(2) Text3.Text = x(3) Text4.Text = x(4) End Sub Public Function cal(n As Integer) As Integer Dim r, i, j As Integer Dim k As Integer For k = 1 To n - 1 ark = max(n, k) If ark = 0 Then cal = 0 Else If flag <> k Then Call exchange(n, flag, k) For i = k + 1 To n For j = k + 1 To n + 1 A(i, j) = A(i, j) - A(k, j) * A(i, k) / A(k, k) Next Next End If End If Next x(n) = A(n, n + 1) / A(n, n) Dim me As Double For k = n - 1 To 1 Step -1 me = 0 For j = k + 1 To n me = me + A(k, j) * x(j) Next x(k) = (A(k, n + 1) - me) / A(k, k) Next cal = 0 End Function Public Function exchange(n As Integer, r As Integer, k As Integer) ' 该函数为交换行的距函数 Dim i As Integer For i = 1 To n + 1 A(0, i) = A(r, i) Next For i = 1 To n + 1 A(r, i) = A(k, i) Next For i = 1 To n + 1 A(k, i) = A(0, i) Next End Function Public Function max(n As Integer, k As Integer) As Double '该函数为比较同一x的参数的大小的函数 Dim i As Integer max = 0 For i = k To n If Abs(A(i, k)) <> 0 Then max = Abs(A(i, k)) flag = i End If Next End Function

心剑

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 11回
  • 年度积分:0
  • 历史总积分:62
  • 注册:2005年6月02日
发表于:2005-06-13 12:02:00
13楼
不知道你还用不用得着了,怪我发得太慢了!唉!

bydfans

  • 精华:0帖
  • 求助:0帖
  • 帖子:13帖 | 42回
  • 年度积分:0
  • 历史总积分:178
  • 注册:2004年6月11日
发表于:2005-06-13 15:12:00
14楼
感动中ing......,强烈建议与斑竹加精。

Shane

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 17回
  • 年度积分:0
  • 历史总积分:30
  • 注册:2004年11月03日
发表于:2005-06-13 15:26:00
15楼
心剑还真是个热心人,偶收藏先,不知道心剑对程序实现最小二乘法可有心得?

心剑

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 11回
  • 年度积分:0
  • 历史总积分:62
  • 注册:2005年6月02日
发表于:2005-06-13 16:26:00
16楼
楼上得意思是......,我现在不敢说,其实,一个好的程序就是一个好的算法了,你能说清楚一点吗,我可以试一试!

心剑

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 11回
  • 年度积分:0
  • 历史总积分:62
  • 注册:2005年6月02日
发表于:2005-06-13 16:37:00
17楼
言而有信吗?没什么了

Shane

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 17回
  • 年度积分:0
  • 历史总积分:30
  • 注册:2004年11月03日
发表于:2005-06-13 16:56:00
18楼
好的,我再说细一些:在知道四个点(x1,y1)~(x4,y4)四组数据时,你写的这个程序可以用来解决y=k3*x^3+k2*x^2+k1*x+k0这种方程的求(k3,k2,k1,k0)的问题,以此可以求出函数关系,工程上往往是不只取四个点,为求精确要用大量的点来确定一个上面的多项式,这时候就要用到最小二乘法来确定最为合适的曲线,相信我说的这些对心剑是小菜一碟了吧 最近因为工程需要一个这样的程序,可惜偶比较菜,算的总也不准……不知道心剑可否写出一个求解多项式的最小二乘法的vb程序供大家学习? 在这里先谢了!

心剑

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 11回
  • 年度积分:0
  • 历史总积分:62
  • 注册:2005年6月02日
发表于:2005-06-14 11:24:00
19楼
这个问题就是上面的程序的算法啊!只不过是把 (x1,y1),(x2,y2),(x3,y3),(x4,y4)代进去,求k1,k2,k3,k4.不就是一个四维一次方程组的求解吗?

Shane

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 17回
  • 年度积分:0
  • 历史总积分:30
  • 注册:2004年11月03日
发表于:2005-06-15 14:48:00
20楼
有一点不同,算法不同,一个是拟合,一个是求解

热门招聘
相关主题

官方公众号

智造工程师