如果引用或轉貼,麻煩註明出處與本網誌連結,否則視為侵權。

2014年7月6日

Visual Basic解數學之三 : 使用克拉馬規則(Cramer's Rule)解二元一次方程式

作者: Fred Wang (FW知識瑣記) 日期:2014/7/6

適用版本 : VB 2010~2013
 



功能
1. 二元一次方程式 aX + bY = c, dX + eY = f, 輸入a, b, c, d, e, f求X,Y的值
2. 以克拉馬規則(Cramer's Rule)
    X = ( c * e - b * f ) / ( a * e - b * d )
    Y = ( a * f - c * d ) / ( a * e - b * d ) 
3. 但是  a * e - b * d = 0 時, a * f  - c * d = 0 時無限多解, a * f  - c * d <> 0 時無解



Public Class Form1

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
        TextBoxA.Focus()
    End Sub

    Private Sub ButtonExit_Click(sender As Object, e As EventArgs) Handles ButtonExit.Click
        End
    End Sub

    Private Sub ButtonClear_Click(sender As Object, e As EventArgs) Handles ButtonClear.Click
        TextBoxA.Text = ""
        TextBoxB.Text = ""
        TextBoxC.Text = ""
        TextBoxD.Text = ""
        TextBoxE.Text = ""
        TextBoxF.Text = ""
        TextBoxA.Focus()
    End Sub

    Private Sub ButtonRun_Click(sender As Object, e As EventArgs) Handles ButtonRun.Click
        Dim vA, vB, vC, vD, vE, vF, vX, vY As Integer
        If IsNumeric(TextBoxA.Text) And IsNumeric(TextBoxB.Text) And IsNumeric(TextBoxC.Text) And IsNumeric(TextBoxD.Text) And IsNumeric(TextBoxE.Text) And IsNumeric(TextBoxF.Text) Then
            vA = Val(TextBoxA.Text)
            vB = Val(TextBoxB.Text)
            vC = Val(TextBoxC.Text)
            vD = Val(TextBoxD.Text)
            vE = Val(TextBoxE.Text)
            vF = Val(TextBoxF.Text)
            If vA * vE - vB * vD = 0 Then
                If vA * vF - vC * vD = 0 Then
                    TextBoxResult.Text = "無限多解"
                Else
                    TextBoxResult.Text = "無解"
                End If
            Else
                vX = (vC * vE - vB * vF) / (vA * vE - vB * vD)
                vY = (vA * vF - vC * vD) / (vA * vE - vB * vD)
                TextBoxResult.Text = "X = " & CStr(vX) & ", Y = " & CStr(vY)
            End If

        Else
            MsgBox("只能輸入數字", vbOKOnly)
        End If

    End Sub
End Class



上一篇 - Visual Basic解數學之二 : 使用牛頓拉夫森法(Newton-Raphson Method)求平方根近似值

Visual Basic解數學之二 : 使用牛頓拉夫森法(Newton-Raphson Method)求平方根近似值

作者: Fred Wang (FW知識瑣記) 日期: 2014/7/6

適用版本 : VB 2010~2013


牛頓拉夫森法(Newton-Raphson Method)又稱牛頓逼近法
功能
1. 輸入N值, 然後使用牛頓拉夫森法(Newton-Raphson Method)計算平方根近似值
2. Xn值為前一次Xn-1值與 N 除Xn-1值的平均
3. 如果Xn與前一次Xn-1值小數第三位以前相同時,則停止計算
4. 將過程的Xn值顯示出來(四捨五入到小數第三位)


Public Class Form1

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim Xn As Long
        Dim X0 As Long
        Dim N As Long
        Dim i As Integer
        If Not IsNumeric(TextBoxN.Text) Then
            MsgBox("請輸入數字", vbOKOnly)
        ElseIf Val(TextBoxN.Text) < 0 Or Val(TextBoxN.Text) = 0 Then
            MsgBox("值不可以為零或負值", vbOKOnly)
        Else
            N = Val(TextBoxN.Text)
            Xn = N / 3
            i = 0
            Do While True
                Me.DataGridView1.Rows.Add(CStr(i), Xn)
                i = i + 1
                X0 = Xn
                Xn = (X0 + N / X0) / 2
                If Int(Xn * 1000) / 1000 = Int(X0 * 1000) / 1000 Then Exit Do
            Loop

            Xn = Xn + 0.005
            Xn = Int(Xn * 100) / 100
            TextBoxResult.Text = CStr(Xn)

        End If
    End Sub
End Class


上一篇 - Visual Basic解數學之一 : 華式溫度與攝氏溫度的互換 下一篇 - Visual Basic解數學之三 : 使用克拉碼規則(Cramer's Rule)解二元一次方程式

Visual Basic解數學之一 : 華式溫度與攝氏溫度的互換

作者: Fred Wang (FW知識瑣記) 日期: 20140706

適用版本: VB2010~2013

功能
1. 選擇不同功能(轉換方式), Form的標題與 Label1, Label2的文字會跟著改變
    例如選擇"攝氏轉華氏"標題會變成"攝氏溫度轉華氏溫度", Label1的文字會變成
"攝氏溫度", Label2的文字會變成"華氏溫度"
2.按"執行"按鈕(ButtonRun)後,會檢查Textbox1是否輸入的是數值, 並執行計算,在Textbox2中顯示結果
3.按"離開"按鈕(ButtonQuit)後,會結束程式 

程式碼參考如下

Public Class Form1

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
        TextBox1.Focus()
    End Sub

    Private Sub RadioButton2_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButton2.CheckedChanged
        Me.Text = "攝氏溫度轉華氏溫度"
        Label1.Text = "攝氏溫度"
        Label2.Text = "華氏溫度"
    End Sub

    Private Sub RadioButton1_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButton1.CheckedChanged
        Me.Text = "華氏溫度轉攝氏溫度"
        Label1.Text = "華氏溫度"
        Label2.Text = "攝氏溫度"
    End Sub

    Private Sub ButtonQuit_Click(sender As Object, e As EventArgs) Handles ButtonQuit.Click
        End
    End Sub

    Private Sub ButtonRun_Click(sender As Object, e As EventArgs) Handles ButtonRun.Click
        If Not IsNumeric(TextBox1.Text) Then
            MsgBox("請輸入數字", MsgBoxStyle.OkOnly)
        Else
            If RadioButton1.Checked Then
                TextBox2.Text = CStr((5 / 9) * (Val(TextBox1.Text) - 32))
            Else
                TextBox2.Text = CStr((9 / 5) * Val(TextBox1.Text) + 32)
            End If
        End If
    End Sub
End Class


下一篇 - Visual Basic解數學之二 : 使用牛頓拉夫森法(Newton-Raphson Method)求平方根近似值

2014年4月29日

[冷門問題] Drupal網站搬家後無法登入,簡潔網址失敗,如何處理?

作者: Fred Wang (FW知識瑣記) 日期:2014/4/29

Drupal平台由Windows移轉到Linux後, 居然無法登入,研究半天發現,原來是Liunx平台中Apache的Rewrite模組沒有正常啟用,而且搬家前的網站已經啟用"簡潔網址"功能。怎麼辦呢?

第一,如果新平台的Apache Server可以變更的話,就請系統管理員,做下面的設定

 1.1 httpd.conf 中確認 這行 LoadModule rewrite_module modules/mod_rewrite.so 有啟用
 1.2 httpd.conf 中, 將 ReWrite engine 模式打開,預設是關閉的,例如

    Order allow,deny
    Allow from all
    Options FollowSymLinks
    # 將 ReWrite engine 模式打開,預設是 off 的
    RewriteEngine On
    RewriteRule ^postshow_([0-9]+)\.html$ /postshow.php?PoId=$1 [L,QSA]
    .....


1.3 httpd.conf 中, 『AllowOverride None』設定改成『AllowOverride All』

第二 ,如果新平台的Apache Server不能變更的話 (或是找不到系統管理員做變更等原因)
       只好手動關閉 "簡潔網址"功能,可是這時候,輸入http://<網址 >/user/login 無法進入登入網頁,首頁上登入的連結都已經是"簡潔網址",根本無法登入。
        第一步,先輸入http://<網址 >/?q=user 就可以用網站管理者帳號登入網頁,此時看到Admin選單,不要高興得太早,因為所有功能連結依然是無效的"簡潔網址"。這時候需要
        第二步,輸入http://<網址 >/?q=admin/config/search/clean-urls,就可以進入簡潔網址設定頁了,將簡潔網址設定的勾勾拿掉,儲存,然後所有網址都變會複雜網址,也就都可以正常使用了。




如何保護您的瀏覽器不被流氓軟體綁架-瀏覽器設定保護工具

作者: Fred Wang (FW知識瑣記) 日期: 2014/3/11 更新 : 2014/4/29

筆者在2013/6/7曾發表"如何移除流氓軟體 - 移除工具的嘗試",雖然,可以用工具移除流氓軟體,但是,經常試用各種軟體的人,常常發生瀏覽器被綁架,需要進行移除的情況,因此,最好是將瀏覽器的設定檔整個上鎖保護,讓預設首頁與搜尋引擎等不被存取更改。下面介紹幾個工具可能對您有幫助

1. IOBit 首頁防護工具 : 保護您所有安裝瀏覽器的首頁與預設的搜尋引擎

IOBit 首頁防護工具是IOBit Advanced SystemCare(ASC)的其中一個工具,要先安裝ASC才可以使用。ASC有免費版,它提供一些有用的免費的工具,包含首頁防護工具,強力解除安裝(uninstaller)工具,驅動程式更新工具(Driver Booster),智慧磁碟重組工具(SmartDefrag),惡意軟體協防工具(Malware Fighter),資料夾加鎖工具(Protected Folder) 等。不過,安裝過程要注意要選Custom Install,將其他預設安裝選項拿掉,只安裝ASC本身,避免安裝了他附加的Spigot Search與Toolbar,反而增加困擾。

2. ChromePW - Chrome Profile(設定) 保護

     這是Chrome的一個Apps(Add-ons)可以將Chrome上鎖保護,避免設定值被任意更動,這個Apps可以進入Chrome線上應用程式商店尋找,輸入ChromePW就可以找到並在Google Chrome進行安裝。

3. Firefox ProfilePassword - Firefox Profile (設定) 保護

     這是Firefox的一個附加元件(Add-ons)可以將Firefox上鎖保護,避免設定值被任意更動,這個附加元件可以到這個Nic Nac Project網站下載 存到電腦後,進入Firefox的附加元件管理員,安裝方式"從檔案安裝附加元件"就可以安裝起來。


至於MS IE可以直接設定InPrivate等安全模式,強化它的安全性,至於密碼保護,可以考慮使用WinPatrol, Ad-Adware, SpyHunter, 不過這些軟體與ASC一樣並非插件(Add-ons),裝太多這類保護的軟體,可能會影響電腦或網頁瀏覽的效能。

2014/4/29日補充
最近又找到一個不錯的瀏覽器保護程式http://www.browserprotect.org/ 的 Browser Hijack Protection for free,這個軟體可以偵測與掃描對瀏覽器設定的更動行為,可能是瀏覽器綁架也可能是附加元件造成的,可以顯示出來,由您自己決定哪些要阻擋,哪些要放行。