計算機的錯誤計算(十八)

摘要? 計算機的錯誤計算(四)指出一元二次方程的計算精度問題。本節給出其一種解決方案。

? ? ? ?計算機的錯誤計算(四)與(十七)分別指出一元二次方程的求解是具有挑戰性的難題,其出錯原因是因為相減相消而導致損失了精度。

? ? ? ?下面我們仔細分析。

? ? ? ?一元二次方程???ax^2+bx+c=0\, (a\neq0)? ?的求根公式為

x_{1,2}=\frac{-b\pm\sqrt{b^2-4ac}}{2a}.

? ? ? ?當??b^2>>|4ac|?時,|-b|?與?\sqrt{b^2-4ac}?會很接近,這樣,-b\pm\sqrt{b^2-4ac}??中一個運算就會發生相減相消。

? ? ? ?比如,若?b>0, 則??-b+\sqrt{b^2-4ac}?有相減相消發生;相反,若??b<0, 則?-b-\sqrt{b^2-4ac}? 會發生相減相消。 相減相消的根源在于“相減”,那么如何去掉這個“相減”呢?若您中學數學學得好,不難想到,用公式??(x-y)(x+y)=x^2-y^2.? 即分子分母同乘以??-b\textcolor{red}{\mp}\sqrt{b^2-4ac}?(這時是同號的兩數相加),讓“分子有理化”?:?

x_{1,2}=\frac{-b\textcolor{blue}{\pm}\sqrt{b^2-4ac}}{2a}=\frac{(-b\textcolor{blue}{\pm}\sqrt{b^2-4ac})(-b\textcolor{red}{\mp}\sqrt{b^2-4ac})}{2a(-b\textcolor{red}{\mp}\sqrt{b^2-4ac})}=\frac{2c}{-b\textcolor{red}{\mp}\sqrt{b^2-4ac}}.

? ? ? ?上式就是一種很好的解決方案。它沒有增加計算量或復雜度。

例1.? (續計算機的錯誤計算(四)的例1)已知?a=10^{-17}, b=-10^{17}, c=10^{17},計算其較小的根。

? ? ? ?顯然,由于

?\left\{\begin{matrix} b^2&>>&|4ac|,\\ b&<&0, \end{matrix}\right.

因此較小的根??\frac{-b-\sqrt{b^2-4ac}}{2a}?會發生相減相消。

? ? ? ?現在,利用新的公式??{\frac{2c}{-b+\sqrt{b^2-4ac}}}?編程如下:

double\,\, a=1e-17;\\ double\,\, b=-1e17;\\ double\,\, c=1e17;\\ printf("\%lf",\textcolor{red}{(2*c)/(-b+sqrt(b*b-4*a*c))});

在?Visual Studio 2010 中運行它,則輸出為正確結果1。

? ? ? ?最后,問一句:任給一個可能發生相減相消的算式,若找不到對應的替代公式怎么辦?去不掉相減相消該怎么辦?

? ? ? ?答案是:采用高精度計算。那么問題又來了,高到多少?很簡單:損失多少,增加多少。

? ? ? ?若遇到了,不知結果對不對,不妨先在這里試試(這個是萬能的,任何算術表達式都能得出正確結果。后面有機會再介紹):ISReal 計算器, 可信計算icon-default.png?t=N7T8http://www.isrealsoft.cn/

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/37921.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/37921.shtml
英文地址,請注明出處:http://en.pswp.cn/web/37921.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

YOLOv10(7):YOLOv10訓練(以訓練VOC數據集為例)

YOLOv10&#xff08;1&#xff09;&#xff1a;初探&#xff0c;訓練自己的數據_yolov10 訓練-CSDN博客 YOLOv10&#xff08;2&#xff09;&#xff1a;網絡結構及其檢測模型代碼部分閱讀_yolov10網絡結構圖-CSDN博客 YOLOv10&#xff08;4&#xff09;&#xff1a;損失&…

汽車之家論壇評論全面采集實戰指南:Python爬蟲篇

聚焦汽車之家&#xff0c;解鎖評論寶藏 在這個數據為王的時代&#xff0c;每一個角落的信息都可能成為寶貴的洞察來源。汽車之家&#xff0c;作為汽車行業內的權威論壇&#xff0c;其海量的用戶評論不僅是消費者購車的重要參考&#xff0c;也是汽車品牌與市場研究者不可忽視的…

【Android面試八股文】在你之前的Android項目中,你是如何進行性能優化的?

在之前的Android項目中,優化和提升性能是一個重要且常見的任務。 以下是一些常用的性能優化方法和策略: 分析和測量: 使用Android Studio中的Profiling工具(如Profiler、Trace等)進行性能分析,識別CPU、內存和網絡使用情況。使用第三方工具(如Systrace)來分析系統層面…

iOS 練習項目 Landmarks (四):添加 AutoLayout 約束

iOS 練習項目 Landmarks &#xff08;四&#xff09;&#xff1a;添加 AutoLayout 約束 iOS 練習項目 Landmarks &#xff08;四&#xff09;&#xff1a;添加 AutoLayout 約束新增 topLabel圖片視圖圓形裁切陰影使用 AutoLayout 為詳情頁的組件添加約束DetailViewControllerDe…

如何在 Logback 和 Log4j 中獲取日志:一個開發者指南

日志記錄是軟件開發中的關鍵實踐&#xff0c;它幫助我們監控應用程序的行為&#xff0c;定位問題并優化性能。在 Java 生態系統中&#xff0c;Logback 和 Log4j 是兩個廣泛使用的日志框架&#xff0c;它們都基于 SLF4J API 提供日志服務。本文將指導你如何在這兩個框架中獲取日…

7-490 將字符串“software“賦給一個字符指針,并從第一個字母開始間隔地輸出該串(簡單字符串)

編程將字符串"software"賦給一個字符指針 然后從第一個字母開始間隔地輸出該串 請用指針法完成。 輸入樣例: 在這里給出一組輸入。例如&#xff1a; 無輸入輸出樣例: 在這里給出相應的輸出。例如&#xff1a; sfwr #include <stdio.h> #include <stri…

Linux環境下快速部署Spring Boot應用:高效命令組合實踐

概要&#xff1a; 本文旨在介紹一種高效的Linux命令組合&#xff0c;用于簡化Spring Boot項目的部署與管理流程。通過結合使用nohup、java -jar、輸出重定向以及進程管理命令&#xff0c;我們能夠實現Spring Boot應用的快速后臺啟動及便捷的進程控制&#xff0c;尤其適合于自動…

什么是 JVM( Java 虛擬機),它在 Java 程序執行中扮演什么角色?

JVM&#xff0c;全稱Java Virtual Machine&#xff0c;中文譯作“Java虛擬機”&#xff0c;它是運行Java程序的軟件環境&#xff0c;也是Java語言的核心部分之一。 想象一下&#xff0c;如果你是一位環球旅行家&#xff0c;每到一個新的國家&#xff0c;都需要學習當地的語言才…

【Linux】初識操作系統

一、馮?諾依曼體系結構 在學習操作系統之前&#xff0c;我們先來認識一下馮?諾依曼體系結構&#xff0c;我們常見的計算機&#xff0c;如筆記本。我們不常見的計算機&#xff0c;如服務器&#xff0c;大部分都遵守馮諾依曼體系。 截至目前&#xff0c;我們所認識的計算機&am…

神經網絡訓練(一):基于殘差連接的圖片分類網絡(ResNet18)

目錄 一、簡介:二、圖片分類網絡1.記載訓練數據(torch自帶的cifa10數據集)2.數據增強3.模型構建4.模型訓練三、完整源碼及文檔一、簡介: 基于殘差連接的圖片分類網絡,本網絡使用ResNet18作為基礎模塊,根據cifa10的特點進行改進網絡,使用交叉熵損失函數和SGD優化器。本網…

使用pyqt5編寫一個七彩時鐘

使用pyqt5編寫一個七彩時鐘 效果代碼解析定義 RainbowClockWindow 類初始化用戶界面顯示時間方法 完整代碼 在這篇博客中&#xff0c;我們將使用 PyQt5 創建一個簡單的七彩數字時鐘。 效果 代碼解析 定義 RainbowClockWindow 類 class RainbowClockWindow(QMainWindow):def _…

【TB作品】溫濕度監控系統設計,ATMEGA16單片機,Proteus仿真

題2:溫濕度監控系統設計 功能要求: 1)開機顯示時間(小時、分)、時分可修改; 2)用兩個滑動變阻器分別模擬溫度傳感器(測量范 圍0-100度)與濕度傳感器(0-100%),通過按鍵 可以在數碼管切換顯示當前溫度值、濕度值; 3)當溫度低于20度時,紅燈長亮; 4)當濕度高于70%時,黃燈長亮; 5)當…

安卓實現微信聊天氣泡

一搜沒一個能用的&#xff0c;我來&#xff1a; 布局文件&#xff1a; <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android"http://schemas.android.com/apk/res/android"xml…

Tech Talk:智能電視eMMC存儲的五問五答

智能電視作為搭載操作系統的綜合影音載體&#xff0c;以穩步擴大的市場規模走入越來越多的家庭&#xff0c;成為人們生活娛樂的重要組成部分。存儲部件是智能電視不可或缺的組成部分&#xff0c;用于保存操作系統、應用程序、多媒體文件和用戶數據等信息。智能電視使用eMMC作為…

vue3中使用Antv G6渲染樹形結構并支持節點增刪改

寫在前面 在一些管理系統中&#xff0c;會對組織架構、級聯數據等做一些管理&#xff0c;你會怎么實現呢&#xff1f;在經過調研很多插件之后決定使用 Antv G6 實現&#xff0c;文檔也比較清晰&#xff0c;看看怎么實現吧&#xff0c;先來看看效果圖。點擊在線體驗 實現的功能…

服務端開發過程中常見的安全性問題

身份驗證與授權 密碼加密 加密傳輸 Https DDoS SQL注入 SQL注入的本質:數據和代碼未分離&#xff0c;即數據當做了代碼來執行。 解決辦法 檢查輸入的數據是否符合預期&#xff0c;不能直接放入數據庫中進行查詢字符串長度驗證mybatis具有防sql注入的方式 使用#{}代替${…

深入探討光刻技術:半導體制造的關鍵工藝

前言 光刻&#xff08;Photolithography&#xff09;是現代半導體制造過程中不可或缺的一環&#xff0c;它的精度和能力直接決定了芯片的性能和密度。本文將詳細介紹光刻技術的基本原理、過程、關鍵技術及其在半導體制造中的重要性。 光刻技術的基本原理 光刻是一種利用光化…

受限玻爾茲曼機淺析

受限玻爾茲曼機&#xff08;Restricted Boltzmann Machine&#xff0c;簡稱RBM&#xff09;是一種特殊的隨機生成神經網絡&#xff0c;能夠學習并發現數據的復雜規則分布。以下是關于受限玻爾茲曼機算法的詳細介紹&#xff1a; ?? 定義與起源 定義&#xff1a; 受限玻爾茲…

深入剖析Tomcat(十四) Server、Service 組件:如何啟停Tomcat服務?

通過前面文章的學習&#xff0c;我們已經了解了連接器&#xff0c;四大容器是如何配合工作的&#xff0c;在源碼中提供的示例也都是“一個連接器”“一個頂層容器”的結構。并且啟動方式是分別啟動連接器和容器&#xff0c;類似下面代碼 connector.setContainer(engine); try …

主流分布式消息中間件RabbitMQ、RocketMQ

分布式消息中間件在現代分布式系統中起著至關重要的作用。以下是一些主流的分布式消息中間件&#xff1a; 1. Apache Kafka - 特點&#xff1a;高吞吐量、低延遲、持久化、水平可擴展、分布式日志系統。 - 使用場景&#xff1a;日志收集與處理、實時流處理、事件驅動架構、大數…