java fast math,Java FastMath.signum方法代碼示例

import org.apache.commons.math3.util.FastMath; //導入方法依賴的package包/類

/**

* {@inheritDoc}

*/

@Override

protected double doSolve()

throws TooManyEvaluationsException,

NoBracketingException {

double min = getMin();

double max = getMax();

// [x1, x2] is the bracketing interval in each iteration

// x3 is the midpoint of [x1, x2]

// x is the new root approximation and an endpoint of the new interval

double x1 = min;

double y1 = computeObjectiveValue(x1);

double x2 = max;

double y2 = computeObjectiveValue(x2);

// check for zeros before verifying bracketing

if (y1 == 0) {

return min;

}

if (y2 == 0) {

return max;

}

verifyBracketing(min, max);

final double absoluteAccuracy = getAbsoluteAccuracy();

final double functionValueAccuracy = getFunctionValueAccuracy();

final double relativeAccuracy = getRelativeAccuracy();

double oldx = Double.POSITIVE_INFINITY;

while (true) {

// calculate the new root approximation

final double x3 = 0.5 * (x1 + x2);

final double y3 = computeObjectiveValue(x3);

if (FastMath.abs(y3) <= functionValueAccuracy) {

return x3;

}

final double delta = 1 - (y1 * y2) / (y3 * y3); // delta > 1 due to bracketing

final double correction = (FastMath.signum(y2) * FastMath.signum(y3)) *

(x3 - x1) / FastMath.sqrt(delta);

final double x = x3 - correction; // correction != 0

final double y = computeObjectiveValue(x);

// check for convergence

final double tolerance = FastMath.max(relativeAccuracy * FastMath.abs(x), absoluteAccuracy);

if (FastMath.abs(x - oldx) <= tolerance) {

return x;

}

if (FastMath.abs(y) <= functionValueAccuracy) {

return x;

}

// prepare the new interval for next iteration

// Ridders' method guarantees x1 < x < x2

if (correction > 0.0) { // x1 < x < x3

if (FastMath.signum(y1) + FastMath.signum(y) == 0.0) {

x2 = x;

y2 = y;

} else {

x1 = x;

x2 = x3;

y1 = y;

y2 = y3;

}

} else { // x3 < x < x2

if (FastMath.signum(y2) + FastMath.signum(y) == 0.0) {

x1 = x;

y1 = y;

} else {

x1 = x3;

x2 = x;

y1 = y3;

y2 = y;

}

}

oldx = x;

}

}

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

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

相關文章

什么是可行性研究

1.并非任何問題都有簡單明顯的解決辦法&#xff0c;事實上&#xff0c;許多問題不可能在預定的系統規模或時間期限之內解決。2.如果問題沒有可行的解&#xff0c;那么花費在這項工程上的任何時間、人力、軟硬件資源和經費&#xff0c;都是無謂的浪費。3.可行性研究的目的&#…

FTP服務的簡介和配置詳解

FTP服務的簡介和配置詳解注意&#xff1a;配置FTP服務時&#xff0c;最好關閉防火墻和selinux1、FTP服務簡介FTP 是File Transfer Protocol&#xff08;文件傳輸協議&#xff09;的英文簡稱&#xff0c;而中文簡稱為“文件傳輸協議”。用于Internet上的控制文件的雙向傳輸。同時…

Python協程--生成器(通過異常來判斷生成器已經結束)

以實現斐波那契數列為例&#xff1a; def create_num(all_num):a, b 0, 1current_num 0while current_num < all_num:yield a # 如果一個函數中有yield語句&#xff0c;那么這個就不在是函數&#xff0c;而是一個生成器的模板a, b b, abcurrent_num 1return "ok.…

四種類型轉換 cast

1.static_cast 2.dynamic_cast 3.const_cast 4. reinterpret_cast 例子1&#xff1a; float x; cout<<static_cast<int>(x); ... f(static_cast<string>("hello")); 例子2&#xff1a; class Car; class Cabriolet:pbulic Car { …

java獲取不重復訂單號,Java 生成永不重復的訂單號

package com.taiping.test;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Random;public class Test12 {/*** 生成永不重復的訂單號* param startLetter 訂單號開頭字符串* param size 訂單號中隨機的大寫字母個數* return*/public static String…

CSS中position屬性(abusolute | relative | static | fixed)區別

關于css3中position屬性的定義&#xff1a; 轉載于:https://www.cnblogs.com/tangjiao/p/9025934.html

什么是系統流程圖

系統流程圖是概括地描繪物理系統的傳統工具。它的基本思想是用圖形符號以黑盒子的形式描繪組成系統的每個部件&#xff08;程序&#xff0c;文檔&#xff0c;數據庫&#xff0c;人工過程等&#xff09;。系統流程圖表達的是數據在系統各部件之間流動的情況&#xff0c;而不是對…

Python協程--生成器(實現多任務)

0.生成器 1.使用yield完成多任務 import timedef task_1():while True:print("---1----")time.sleep(0.1)yielddef task_2():while True:print("---2----")time.sleep(0.1)yielddef main():t1 task_1()t2 task_2()# 先讓t1運行一會&#xff0c;當t1中遇…

技術分享連載(六十一)

資源管理 Q1&#xff1a;Unity5.4.1中&#xff0c;我將需要的Shader打到一個AssetBundle包中&#xff08;包含一個關聯了所有Shader的Shader Variants&#xff09;&#xff0c;分別用Shader.WarmupAllShaders和ShaderVariantCollection.WarmUp兩種方式進行預加載&#xff0c;后…

RabbitMQ(三) 集群配置

RabbitMQ——集群配置 之前不管是搞Redis、SQL、Mongo還是其他的東西&#xff0c;一律都沒說過集群要怎么搞&#xff0c;電腦實在是帶不動、說透徹點就是懶&#xff0c;懶得搭也懶得寫&#xff0c;今日深刻意識到錯誤&#xff0c;做學問是不能懶的&#xff0c;會被人噴的&#…

mysql update實質,UPDATE注射(mysql+php)的兩個模式

UPDATE注射(mysqlphp)的兩個模式2021-01-23 7:48:35424UPDATE注射(mysqlphp)的兩個模式文/安全天使SuperHei2005.8.11一.測試環境&#xff1a;OS:Windowsxpsp2php:php4.3.10(mysql4.1.9apache1.3.33二.測試數據庫結構&#xff1a;-----start-----數據庫:test------------------…

數據庫系統的特點

數據結構化數據的共享性高&#xff0c;冗余度低且易擴充數據獨立性高數據由數據庫管理系統統一管理和控制

SNF軟件開發機器人-子系統-導出-導入功能-多人合作時這個功能經常用到

導出 導出可以將資源表和子系統導出并形成一個json文件。 1.效果展示&#xff1a; 2.使用說明&#xff1a; 點擊導出按鈕后會彈出一個導出頁面。頁面的左側可以選擇功能&#xff0c;右側可以選擇資源表&#xff0c;選擇功能的同時右側中功能所需的資源表也會被選擇。當功能之間…

基于物理的渲染-用真實的環境光照亮物體

目前&#xff0c;在游戲引擎中用于照亮物體的光源非常豐富。其中&#xff0c;比較常用的有&#xff1a;平行方向光、點光源、聚光燈以及體積光等&#xff0c;但它們都是對真實光源的近似&#xff0c;并不能很好地模擬真實世界中的復雜光照情況。為了增加光照效果的真實感&#…

php中取出數組中指定的值,PHP除開數組中指定的值

PHP去除數組中指定的值//一維數組簡單的做法 unset($arr[array_search($value,$arr)])$arr array("a","b","c","d");function isHave($var){if($var!"b")return true;}$arr_filter array_values(array_filter($arr,"…

實體以及實體型和實體集

實體&#xff08;Entity&#xff09; 客觀存在并可相互區別的事物稱為實體。 可以是具體的人、事、物或抽象的概念。 屬性&#xff08;Attribute&#xff09; 實體所具有的某一特性稱為屬性。 一個實體可以由若干個屬性來刻畫。 實體型&#xff08;Entity Type&#xf…

mysql中locat函數,MySQL中的LOCATE和POSITION函數使用方法 | 很文博客

不常用&#xff1a;MySQL中的LOCATE和POSITION函數LOCATE(substr,str)POSITION(substr IN str)返回子串 substr 在字符串 str 中第一次出現的位置。如果子串 substr 在 str 中不存在&#xff0c;返回值為 0&#xff1a;mysql> SELECT LOCATE(bar, ‘foobarbar);-> 4mysql…

什么是數據的完整性約束

為了防止不符合規范的數據進入數據庫&#xff0c;在用戶對數據進行插入、修改、刪除等操作時&#xff0c;DBMS自動按照一定的約束條件對數據進行監測&#xff0c;使不符合規范的數據不能進入數據庫&#xff0c;以確保數據庫中存儲的數據正確、有效、相容。

Python--協程(gevent模塊)

一&#xff1a;前言 協程又稱為微線程&#xff0c;纖程。英文名Coroutine:協程是一種用戶態的輕量級線程 協程擁有自己的寄存器上下文和棧。協程調度切換時&#xff0c;將寄存器上下文和棧保存到其他地方&#xff0c;在切回來的時候&#xff0c;恢復之前保存的寄存器上下文和…