| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 937 人关注过本帖
标题:非线性方程求根 看不懂题啊
只看楼主 加入收藏
都不懂啊
Rank: 1
等 级:新手上路
帖 子:2
专家分:1
注 册:2012-2-3
结帖率:0
收藏
已结贴  问题点数:2 回复次数:8 
非线性方程求根 看不懂题啊
时间限制: 1000 毫秒内存限制: 32768 K字节
判题规则:严格比较
问题描述
已知F(X) = COS(X) - X,X的初始值为3.14159/4,用牛顿法求解方程F(X)=0的近似解,也就是求X的值,结果保留小数点6位。

要求精确到10^(-6)。也就是,假设用x1表示前面求出来的解,用x2表示后面求出来的解,那么|x1-x2|<0.000001。

F(X)的牛顿法公式如图。
                 
图片附件: 游客没有浏览图片的权限,请 登录注册

                        
                                     图 1:     
                    
输入
(无)
输出
方程的解输入样列
(无)
输出样例
(无)
搜索更多相关主题的帖子: 方程 内存 小数点 
2012-02-03 16:17
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:1 
沒學過牛頓法是吧。

修改:先前看錯了,圖的公式是運算過的,直接給出答案,那個x[n+1]就是根值。

[ 本帖最后由 TonyDeng 于 2012-2-3 17:32 编辑 ]

授人以渔,不授人以鱼。
2012-02-03 17:15
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
這個求根法的步驟如下:
1.從給出的x[n]=π/4開始,按公式算出近似根x[n+1]
2.把前面算出的x[n+1]當作x[n]代入公式,重複第1步的運算,不斷逼近
3.在作第2步運算時,都要計算f(x[n+1])的值,與f(x[n])對比,看是不是符號相反,若是,則終止循環,表明根在x[n]和x[n+1]之間
4.在第3步要看x[n+1]和x[n]之差的絕對值是否落在指定的誤差範圍之內


[ 本帖最后由 TonyDeng 于 2012-2-4 00:47 编辑 ]

授人以渔,不授人以鱼。
2012-02-03 17:46
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:1 
就这道题来讲,第3步不用判断,循环着算应该就行了。
第4步是看 x[n+1] 和 x[n] 之差的绝对值,不是 f(x[n])。
2012-02-04 00:41
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
回复 4楼 pangding
哦,對,上面是我寫錯了。

授人以渔,不授人以鱼。
2012-02-04 00:46
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
至於第3步,還是做足功夫的好,畢竟寫牛頓法求根的代碼不是針對特定函數的,牛頓法本身就是為了求任何形式的函數而設。寫好代碼,以後改編函數(用參數傳遞)就可以了,不用改算法。

授人以渔,不授人以鱼。
2012-02-04 01:08
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
反正要保证牛顿迭代法全局收敛是要一些条件的(主要是测试一二阶导数的值)。如果希望是这样,应该先测试条件。
如果可以保证局部收敛,那就要求选择合适的初始值(也是测试导数)。我一直觉得应该在施用之前测试一下相关的条件是否满足再调用,不行还得想办法换初值。
如果是想写通用一点函数,那很麻烦,如果它算出不收敛的情况,它返回什么值呢?c 也没什么异常处理的方法。

反正一般 OJ,我比较喜欢就题论题。不过考虑通常情况确实是好习惯。
2012-02-04 10:37
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:1 
貌似在讨论高等代数

梅尚程荀
马谭杨奚







                                                       
2012-02-04 10:39
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
應該是確認有解和大概範圍後才調用函數,那可以通過圖像法定性判斷再做,函數只用於求數值根,儘量簡化需要人工干預的東西。對求導來說,計算機算法不必用公式也可以算出一階和二階導數(只用定義即可),因此,這樣的算法程序是不需要多少高數知識的,只要理解定義,初中生都能寫出來。

授人以渔,不授人以鱼。
2012-02-05 02:29
快速回复:非线性方程求根 看不懂题啊
数据加载中...
 
   



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

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