标题:[讨论][挑战]解方程程序
只看楼主
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-07-26 15:21
乌鸦丘比特
Rank: 1
等 级:新手上路
威 望:2
帖 子:625
专家分:0
注 册:2004-7-19
得分:0 
以下是引用ysol在2006-7-26 13:32:25的发言:

无解算不算所有解??????你的那点数学常识不要在我面前显摆,起码在你连我的基本意思都没有搞清楚之前不要说一些不经过大脑考虑的话。

无解的判断实际上可以放在寻找ab的过程中,设定经过一定数量级的2分插值还不能满足f(a)>0,f(b)<0基本上可以判断在
区间[a,b]上无实根,方程的求解过程关键在于预测该方程的解区间也就是a,b的值的确定。这只是简单的解方程思想。

如果要精确的求解恐怕要用到拉格朗日多项式插值公式和矩阵,特别是Vandermonde矩阵或者Toeplitz矩阵,可惜Vandermonde问题本身是一个严重病态的,解搂主的方程个人感觉最好用Toeplitz矩阵,不过问题是相当的........................哈哈!楼主要是有兴趣可以共同探讨!!


不好意思,我高中刚毕业,微积分知识很单薄,所以对你说的东西不懂,能不能说稍微明白些呢?


我喜欢创造,一只扑腾着翅膀向天空飞翔的乌鸦
2006-07-26 16:59
ysol
Rank: 1
等 级:新手上路
帖 子:107
专家分:0
注 册:2006-6-11
得分:0 

先问楼主一个问题,什么是拉格朗日中值定理?不然我怎么能说的明白???

第一种方法基于拉格朗日中值定理。
首先解区间的判断要涉及数学分析方面的知识--函数逼近,也就是寻找一个可替代的,更容易计算的函数,来取代原来的函数.一般来说这种函数要没有连续的一阶或高阶导数.这一步是最关键的直接决定解方程得结果。

其次2分插值的就是在确定解区间[a,b]后f(a)>0,f(b)<0.插值c=(a+b)/2后会出现2种情况
1.f(a)>0,f(c)>0,f(b)<0,那么根据定理,区间(c,b)必有解.当然也不能排除(a,c)间有解,
2.f(a)>0,f(c)<0,f(b)<0...................
所以这种方法效率相当低下,最坏情况可能找要找遍(a,b)间所有值(当然是指定精度的)。


第二种方法基于矩阵。也是拉格朗日中值定理的应用(拉格朗日多项式插值公式)。当然更多的是矩阵运算等高代知识。用Toeplitz矩阵解方程原理是

假设有一个n*n的Toeplitz矩阵,那么在求解时有一个规律也就是
求n阶的解可追溯到n-1阶时的解,这是一个递规关系只是递推公式很复杂.

上面只是初步想法,没有实践.楼主如果想研究这个问题的话可以参考<<C++数值算法>>第二版

解高次方程问题本身就要涉及到高数知识,如果没有这方面数学基础谈算法就是一句空话。

个人意见仅供参考.

2006-07-27 02:58
乌鸦丘比特
Rank: 1
等 级:新手上路
威 望:2
帖 子:625
专家分:0
注 册:2004-7-19
得分:0 
我对第二种方法感兴趣
高数我是懂得一点的,只是不多也不熟练罢了
楼上既然说了这么多有没兴趣写一个,我们比比?

[此贴子已经被作者于2006-7-27 8:19:53编辑过]


我喜欢创造,一只扑腾着翅膀向天空飞翔的乌鸦
2006-07-27 08:19
热情依然
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:715
专家分:0
注 册:2005-4-5
得分:0 
严重支持这样的比赛,可惜我数学低下,正在全力补课中

c++/C + 汇编 = 天下无敌
2006-07-27 08:28
ysol
Rank: 1
等 级:新手上路
帖 子:107
专家分:0
注 册:2006-6-11
得分:0 

呵呵,以我目前的c++水平编写这样的程序是相当困难的。特别是矩阵运算方面,最多只能做到矩阵相乘,至于化简、求逆等还办不到。只是跟楼主探讨解题思路而已.另外还有一个最大的困难就是如何把一个n次多项式转换成相应矩阵。楼主既然这么有兴趣不妨试试。我是自愧不如了。

2006-07-27 10:16
yuwg_le
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-7-28
得分:0 
不是说所有解吗??
复数解呢?不要啦?
2006-07-28 05:16
yuwg_le
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-7-28
得分:0 
不要在初中水平谈论数字问题
2006-07-28 05:18
ysol
Rank: 1
等 级:新手上路
帖 子:107
专家分:0
注 册:2006-6-11
得分:0 

那就请楼上的 站在比“初中水平”更高的高度谈谈这个问题怎么解决 !!!!!

[此贴子已经被作者于2006-7-29 6:34:02编辑过]

2006-07-28 22:09
yuwg_le
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-7-28
得分:0 

不要那么激动。
对于N次方程,当然有N个解。
可以定义一个结构体来储存解。
至于解法,必须使用矩阵
可以考虑vandermon行列式
不过计算时需要使用 复数计算方法

2006-07-29 19:56



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-79169-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.353144 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved