久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2206|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

牛頓法解方程

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:127437 發(fā)表于 2016-6-20 22:28 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
    數(shù)值法解方程廣泛應(yīng)用于各種工程科學(xué)領(lǐng)域,它可以求出解的近似值,而對(duì)于高次方程沒(méi)有求根公式,而且對(duì)于各種困難的方程,數(shù)值法就顯得尤為重要。

    我們的老師向我們介紹了“二分法”,這種方法雖也是數(shù)值解法,但是使用起來(lái)不僅繁瑣,計(jì)算復(fù)雜,而且效率低下。相比之下,使用牛頓法就顯得更好。


    下面簡(jiǎn)要的介紹一下牛頓法:





(圖片繪制的不太好,看得懂就行。。)



    對(duì)于方程一元f(x)=0,設(shè)其中一個(gè)解為x0,尋找x0就是我們的任務(wù)。我們首先找一個(gè)在x0附近的解的估計(jì)值x1。

    牛頓法的核心思想就是利用曲線f(x)在 x1 點(diǎn)的切線(即導(dǎo)數(shù))來(lái)近似的替代方程左邊復(fù)雜的f(x),由于直線與x軸的交點(diǎn)十分容易求得,所以很容易可以找出一個(gè)近似的原方程的解,然后將這個(gè)解作為新的x1,重復(fù)上述過(guò)程,得出的解就會(huì)越來(lái)越接近于真實(shí)情況。而且,在多數(shù)情況下,只要初始值不是給的相差太遠(yuǎn),牛頓法的逼近速度是很快的,遠(yuǎn)遠(yuǎn)快于二分法。


    根據(jù)這個(gè)方法,不難寫(xiě)出牛頓法的程序,下面給出這個(gè)程序:



效果:















程序如下:
(使用方法:將下代碼寫(xiě)入記事本,另存為 .vbs 文件,文件名可以隨意,若360誤報(bào)屬360技術(shù)問(wèn)題。)





Dim x0, x1, x2, x3, m_expr, i, x, Res, der, s_expr

Function Limit (expr, point)   '取極限的近似值
Dim dif, i, nk, difk, ndifk, k, x
dif = 1
ndifk = 1000
x = point + dif
nk = Eval(expr)
For i = 1 To 3
dif = dif / 100
x = point + dif
k = Eval(expr)
difk = Abs(nk - k)
nk = k
'If difk < ndifk Then
'ndifk = difk
'Else
'Limit = "F"
'End If
Next
If Limit <> "F" Then Limit = k
End Function

Function Derivative (expr, point)   '取導(dǎo)數(shù)的近似值
Dim Delta_x
Delta_x = 0.000001
Derivative = (Limit(expr, point + Delta_x) - Limit(expr, point))/Delta_x
End Function

s_expr = Inputbox("請(qǐng)輸入關(guān)于x的一元方程" & vbCrLf & "注:指數(shù)是“^”,如 x^2 就是 x平方;乘號(hào)是“*”,不支持形如2x的寫(xiě)法,必須寫(xiě)成2*x")
m_expr = Mid(s_expr,1,InStr(s_expr,"=")-1) & "-(" & Mid(s_expr,InStr(s_expr,"=")+1,Len(s_expr)-InStr(s_expr,"=")) & ")"
x0 = 1
Do
x0 = Inputbox("請(qǐng)給出一個(gè)解的估計(jì)值 x0 ,輸入exit退出", "初始值", x0)
If LCase(x0) = "exit" Then Exit Do
x = x0
Res = ""
For i = 1 To 1000
x = x0
der = Derivative(m_expr, x)
If der = 0 Then Msgbox "無(wú)法找到解!請(qǐng)嘗試更換一個(gè)估計(jì)值!":Exit For
x1 = (Eval(m_expr)/der)
x0 = x0 - x1
If x1 = 0 Then
Exit For
End If
Next
If abs(x1) > 0.001 Then
Msgbox "解發(fā)散,無(wú)法求解!請(qǐng)嘗試更換一個(gè)估計(jì)值!"
End If
If Abs(x0) < 1 Then x0 = "0" & x0
Msgbox s_expr & vbCrLf & vbCrLf & "x = " & x0 & vbCrLf & vbCrLf & "共計(jì)算" & i & "次"
Loop




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久久久av | 一级黄色毛片子 | 国产95在线| 亚洲成av| 久久伊人青青草 | 日韩视频国产 | 亚洲欧美视频一区二区 | 免费国产一区 | 久久夜视频 | 你懂的国产 | 超碰伊人久久 | 在线观看中文字幕dvd播放 | 亚洲日本免费 | 一级毛片成人免费看a | 久久久久久91 | 亚洲1区| 国产一区三区在线 | japanhd美女动 | 精品99在线 | 黄色成人av | 久久午夜精品福利一区二区 | a级片在线| 欧美在线国产精品 | 精品欧美一区二区在线观看欧美熟 | 成人免费毛片片v | 婷婷久久精品一区二区 | 日韩国产免费观看 | 成人一区二区视频 | 亚洲精品毛片av | 成人在线免费观看av | 久久精品一区二区 | 亚洲免费网站 | 成人在线视频免费播放 | 欧美一级在线观看 | 亚洲日韩中文字幕一区 | 日韩欧美在线精品 | 福利视频网 | 精品亚洲一区二区三区四区五区高 | 亚洲免费一区 | 一级黄色绿像片 | 久久精彩视频 |