HiNC-2025-win-desktop-Deploy/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Solvers.BinarySolverUtil.html
2025-10-13 00:24:11 +08:00

573 lines
29 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class BinarySolverUtil | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class BinarySolverUtil | HiAPI-C# 2025 ">
<meta name="description" content="Utility class providing binary solving methods for one-dimensional functions.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
<meta name="docfx:navrel" content="../toc.html">
<meta name="docfx:tocrel" content="toc.html">
<meta name="docfx:rel" content="../">
<meta name="loc:inThisArticle" content="In this article">
<meta name="loc:searchResultsCount" content="{count} results for &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<meta name="loc:tocFilter" content="Filter by title">
<meta name="loc:nextArticle" content="Next">
<meta name="loc:prevArticle" content="Previous">
<meta name="loc:themeLight" content="Light">
<meta name="loc:themeDark" content="Dark">
<meta name="loc:themeAuto" content="Auto">
<meta name="loc:changeTheme" content="Change theme">
<meta name="loc:copy" content="Copy">
<meta name="loc:downloadPdf" content="Download PDF">
<script type="module" src="./../public/docfx.min.js"></script>
<script>
const theme = localStorage.getItem('theme') || 'auto'
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
</script>
</head>
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="ManagedReference">
<header class="bg-body border-bottom">
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
<div class="container-xxl flex-nowrap">
<a class="navbar-brand" href="../index.html">
<img id="logo" class="svg" src="../img/HiAPI.logo.png" alt="">
</a>
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
<i class="bi bi-three-dots"></i>
</button>
<div class="collapse navbar-collapse" id="navpanel">
<div id="navbar">
<form class="search" role="search" id="search">
<i class="bi bi-search"></i>
<input class="form-control" id="search-query" type="search" disabled placeholder="Search" autocomplete="off" aria-label="Search">
</form>
</div>
</div>
</div>
</nav>
</header>
<main class="container-xxl">
<div class="toc-offcanvas">
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<nav class="toc" id="toc"></nav>
</div>
</div>
</div>
<div class="content">
<div class="actionbar">
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
<i class="bi bi-list"></i>
</button>
<nav id="breadcrumb"></nav>
</div>
<article data-uid="Hi.Geom.Solvers.BinarySolverUtil">
<h1 id="Hi_Geom_Solvers_BinarySolverUtil" data-uid="Hi.Geom.Solvers.BinarySolverUtil" class="text-break">
Class BinarySolverUtil
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="Hi.html">Hi</a>.<a class="xref" href="Hi.Geom.html">Geom</a>.<a class="xref" href="Hi.Geom.Solvers.html">Solvers</a></dd></dl>
<dl><dt>Assembly</dt><dd>HiGeom.dll</dd></dl>
</div>
<div class="markdown summary"><p>Utility class providing binary solving methods for one-dimensional functions.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static class BinarySolverUtil</code></pre>
</div>
<dl class="typelist inheritance">
<dt>Inheritance</dt>
<dd>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></div>
<div><span class="xref">BinarySolverUtil</span></div>
</dd>
</dl>
<dl class="typelist inheritedMembers">
<dt>Inherited Members</dt>
<dd>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)">object.Equals(object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)">object.Equals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gethashcode">object.GetHashCode()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gettype">object.GetType()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone">object.MemberwiseClone()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.referenceequals">object.ReferenceEquals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.tostring">object.ToString()</a>
</div>
</dd></dl>
<h2 class="section" id="methods">Methods
</h2>
<a id="Hi_Geom_Solvers_BinarySolverUtil_CenterSplitionSolve_" data-uid="Hi.Geom.Solvers.BinarySolverUtil.CenterSplitionSolve*"></a>
<h3 id="Hi_Geom_Solvers_BinarySolverUtil_CenterSplitionSolve_System_Func_System_Double_System_Double__Hi_Common_Range_System_Double__Hi_Geom_Vec2d_System_Double_System_Double_System_Func_System_Double_System_Boolean__System_Int32_" data-uid="Hi.Geom.Solvers.BinarySolverUtil.CenterSplitionSolve(System.Func{System.Double,System.Double},Hi.Common.Range{System.Double},Hi.Geom.Vec2d,System.Double,System.Double,System.Func{System.Double,System.Boolean},System.Int32)">
CenterSplitionSolve(Func&lt;double, double&gt;, Range&lt;double&gt;, Vec2d, double, double, Func&lt;double, bool&gt;, int)
</h3>
<div class="markdown level1 summary"><p>Efficient center splitting solve that uses an initial point (x0, y0) within the boundary to save one function evaluation.
The algorithm intelligently chooses the optimal boundary points based on the initial point position.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static IEnumerable&lt;BinarySolvingStatus&gt; CenterSplitionSolve(Func&lt;double, double&gt; func, Range&lt;double&gt; xBoundary, Vec2d x0y0, double yTarget, double convergenceLimit, Func&lt;double, bool&gt; isYAcceptableFunc, int maxIteration = 12)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>func</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.func-2">Func</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a>, <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a>&gt;</dt>
<dd><p>The function to solve</p>
</dd>
<dt><code>xBoundary</code> <a class="xref" href="Hi.Common.Range-1.html">Range</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a>&gt;</dt>
<dd><p>boundary of the search interval. The order of Min and Max is not mattered, i.e. they can be reversed.</p>
</dd>
<dt><code>x0y0</code> <a class="xref" href="Hi.Geom.Vec2d.html">Vec2d</a></dt>
<dd><p>Initial x,y value (x0,func(x0))</p>
</dd>
<dt><code>yTarget</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>Target y value to solve for</p>
</dd>
<dt><code>convergenceLimit</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>Convergence limit (acceptable error)</p>
</dd>
<dt><code>isYAcceptableFunc</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.func-2">Func</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a>, <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a>&gt;</dt>
<dd><p>Function to determine if a y value is acceptable</p>
</dd>
<dt><code>maxIteration</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd><p>Maximum number of iterations</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.ienumerable-1">IEnumerable</a>&lt;<a class="xref" href="Hi.Geom.Solvers.BinarySolvingStatus.html">BinarySolvingStatus</a>&gt;</dt>
<dd><p>A sequence of solving status objects showing the progress of the solution</p>
</dd>
</dl>
<a id="Hi_Geom_Solvers_BinarySolverUtil_CenterSplitionSolve_" data-uid="Hi.Geom.Solvers.BinarySolverUtil.CenterSplitionSolve*"></a>
<h3 id="Hi_Geom_Solvers_BinarySolverUtil_CenterSplitionSolve_System_Func_System_Double_System_Double__Hi_Common_Range_System_Double__System_Double_System_Double_System_Double_System_Func_System_Double_System_Boolean__System_Int32_" data-uid="Hi.Geom.Solvers.BinarySolverUtil.CenterSplitionSolve(System.Func{System.Double,System.Double},Hi.Common.Range{System.Double},System.Double,System.Double,System.Double,System.Func{System.Double,System.Boolean},System.Int32)">
CenterSplitionSolve(Func&lt;double, double&gt;, Range&lt;double&gt;, double, double, double, Func&lt;double, bool&gt;, int)
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static IEnumerable&lt;BinarySolvingStatus&gt; CenterSplitionSolve(Func&lt;double, double&gt; func, Range&lt;double&gt; xBoundary, double x0, double yTarget, double convergenceLimit, Func&lt;double, bool&gt; isYAcceptableFunc, int maxIteration = 12)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>func</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.func-2">Func</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a>, <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a>&gt;</dt>
<dd></dd>
<dt><code>xBoundary</code> <a class="xref" href="Hi.Common.Range-1.html">Range</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a>&gt;</dt>
<dd></dd>
<dt><code>x0</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd></dd>
<dt><code>yTarget</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd></dd>
<dt><code>convergenceLimit</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd></dd>
<dt><code>isYAcceptableFunc</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.func-2">Func</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a>, <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a>&gt;</dt>
<dd></dd>
<dt><code>maxIteration</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.ienumerable-1">IEnumerable</a>&lt;<a class="xref" href="Hi.Geom.Solvers.BinarySolvingStatus.html">BinarySolvingStatus</a>&gt;</dt>
<dd></dd>
</dl>
<a id="Hi_Geom_Solvers_BinarySolverUtil_CenterSplitionSolve_" data-uid="Hi.Geom.Solvers.BinarySolverUtil.CenterSplitionSolve*"></a>
<h3 id="Hi_Geom_Solvers_BinarySolverUtil_CenterSplitionSolve_System_Func_System_Double_System_Double__Hi_Common_Range_System_Double__System_Double_System_Double_System_Func_System_Double_System_Boolean__System_Int32_" data-uid="Hi.Geom.Solvers.BinarySolverUtil.CenterSplitionSolve(System.Func{System.Double,System.Double},Hi.Common.Range{System.Double},System.Double,System.Double,System.Func{System.Double,System.Boolean},System.Int32)">
CenterSplitionSolve(Func&lt;double, double&gt;, Range&lt;double&gt;, double, double, Func&lt;double, bool&gt;, int)
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static IEnumerable&lt;BinarySolvingStatus&gt; CenterSplitionSolve(Func&lt;double, double&gt; func, Range&lt;double&gt; xBoundary, double yTarget, double convergenceLimit, Func&lt;double, bool&gt; isYAcceptableFunc, int maxIteration = 12)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>func</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.func-2">Func</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a>, <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a>&gt;</dt>
<dd></dd>
<dt><code>xBoundary</code> <a class="xref" href="Hi.Common.Range-1.html">Range</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a>&gt;</dt>
<dd></dd>
<dt><code>yTarget</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd></dd>
<dt><code>convergenceLimit</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd></dd>
<dt><code>isYAcceptableFunc</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.func-2">Func</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a>, <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a>&gt;</dt>
<dd></dd>
<dt><code>maxIteration</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.ienumerable-1">IEnumerable</a>&lt;<a class="xref" href="Hi.Geom.Solvers.BinarySolvingStatus.html">BinarySolvingStatus</a>&gt;</dt>
<dd></dd>
</dl>
<a id="Hi_Geom_Solvers_BinarySolverUtil_CenterSplitionSolve_" data-uid="Hi.Geom.Solvers.BinarySolverUtil.CenterSplitionSolve*"></a>
<h3 id="Hi_Geom_Solvers_BinarySolverUtil_CenterSplitionSolve_System_Func_System_Double_System_Double__System_Double_System_Double_System_Double_System_Double_System_Double_System_Func_System_Double_System_Boolean__System_Int32_" data-uid="Hi.Geom.Solvers.BinarySolverUtil.CenterSplitionSolve(System.Func{System.Double,System.Double},System.Double,System.Double,System.Double,System.Double,System.Double,System.Func{System.Double,System.Boolean},System.Int32)">
CenterSplitionSolve(Func&lt;double, double&gt;, double, double, double, double, double, Func&lt;double, bool&gt;, int)
</h3>
<div class="markdown level1 summary"><p>Solves for a target y-value using the center splitting method.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static IEnumerable&lt;BinarySolvingStatus&gt; CenterSplitionSolve(Func&lt;double, double&gt; func, double x0, double y0, double xBoundary, double yTarget, double convergenceLimit, Func&lt;double, bool&gt; isYAcceptableFunc, int maxIteration = 12)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>func</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.func-2">Func</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a>, <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a>&gt;</dt>
<dd><p>The function to solve</p>
</dd>
<dt><code>x0</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>Initial x value</p>
</dd>
<dt><code>y0</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>Initial y value (func(x0))</p>
</dd>
<dt><code>xBoundary</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>extended side boundary</p>
</dd>
<dt><code>yTarget</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>Target y value to solve for</p>
</dd>
<dt><code>convergenceLimit</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>Convergence limit (acceptable error)</p>
</dd>
<dt><code>isYAcceptableFunc</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.func-2">Func</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a>, <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a>&gt;</dt>
<dd><p>Function to determine if a y value is acceptable</p>
</dd>
<dt><code>maxIteration</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd><p>Maximum number of iterations</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.ienumerable-1">IEnumerable</a>&lt;<a class="xref" href="Hi.Geom.Solvers.BinarySolvingStatus.html">BinarySolvingStatus</a>&gt;</dt>
<dd><p>A sequence of solving status objects showing the progress of the solution</p>
</dd>
</dl>
<a id="Hi_Geom_Solvers_BinarySolverUtil_CenterSplitionSolveWithY1_" data-uid="Hi.Geom.Solvers.BinarySolverUtil.CenterSplitionSolveWithY1*"></a>
<h3 id="Hi_Geom_Solvers_BinarySolverUtil_CenterSplitionSolveWithY1_System_Func_System_Double_System_Double__System_Double_System_Double_System_Double_System_Double_System_Double_System_Double_System_Func_System_Double_System_Boolean__System_Int32_" data-uid="Hi.Geom.Solvers.BinarySolverUtil.CenterSplitionSolveWithY1(System.Func{System.Double,System.Double},System.Double,System.Double,System.Double,System.Double,System.Double,System.Double,System.Func{System.Double,System.Boolean},System.Int32)">
CenterSplitionSolveWithY1(Func&lt;double, double&gt;, double, double, double, double, double, double, Func&lt;double, bool&gt;, int)
</h3>
<div class="markdown level1 summary"><p>Solves for a target y-value using the center splitting method with a pre-calculated y1 value.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static IEnumerable&lt;BinarySolvingStatus&gt; CenterSplitionSolveWithY1(Func&lt;double, double&gt; func, double x0, double y0, double x1, double y1, double yTarget, double convergenceLimit, Func&lt;double, bool&gt; isYAcceptableFunc, int maxIteration = 12)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>func</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.func-2">Func</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a>, <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a>&gt;</dt>
<dd><p>The function to solve</p>
</dd>
<dt><code>x0</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>Initial x value</p>
</dd>
<dt><code>y0</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>Initial y value (func(x0))</p>
</dd>
<dt><code>x1</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>Second x value</p>
</dd>
<dt><code>y1</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>Second y value (func(x1))</p>
</dd>
<dt><code>yTarget</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>Target y value to solve for</p>
</dd>
<dt><code>convergenceLimit</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>Convergence limit (acceptable error)</p>
</dd>
<dt><code>isYAcceptableFunc</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.func-2">Func</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a>, <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a>&gt;</dt>
<dd><p>Function to determine if a y value is acceptable</p>
</dd>
<dt><code>maxIteration</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd><p>Maximum number of iterations</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.ienumerable-1">IEnumerable</a>&lt;<a class="xref" href="Hi.Geom.Solvers.BinarySolvingStatus.html">BinarySolvingStatus</a>&gt;</dt>
<dd><p>A sequence of solving status objects showing the progress of the solution</p>
</dd>
</dl>
<a id="Hi_Geom_Solvers_BinarySolverUtil_SlopeSolve_" data-uid="Hi.Geom.Solvers.BinarySolverUtil.SlopeSolve*"></a>
<h3 id="Hi_Geom_Solvers_BinarySolverUtil_SlopeSolve_System_Func_System_Double_System_Double__System_Double_System_Double_System_Double_System_Double_System_Double_System_Int32_" data-uid="Hi.Geom.Solvers.BinarySolverUtil.SlopeSolve(System.Func{System.Double,System.Double},System.Double,System.Double,System.Double,System.Double,System.Double,System.Int32)">
SlopeSolve(Func&lt;double, double&gt;, double, double, double, double, double, int)
</h3>
<div class="markdown level1 summary"><p>Solves for a target y-value using the slope method.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static IEnumerable&lt;BinarySolvingStatus&gt; SlopeSolve(Func&lt;double, double&gt; func, double x0, double y0, double x1, double yTarget, double convergenceLimit, int maxIteration = 12)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>func</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.func-2">Func</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a>, <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a>&gt;</dt>
<dd><p>The function to solve</p>
</dd>
<dt><code>x0</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>Initial x value</p>
</dd>
<dt><code>y0</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>Initial y value (func(x0))</p>
</dd>
<dt><code>x1</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>Second x value</p>
</dd>
<dt><code>yTarget</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>Target y value to solve for</p>
</dd>
<dt><code>convergenceLimit</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>Convergence limit (acceptable error)</p>
</dd>
<dt><code>maxIteration</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd><p>Maximum number of iterations</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.ienumerable-1">IEnumerable</a>&lt;<a class="xref" href="Hi.Geom.Solvers.BinarySolvingStatus.html">BinarySolvingStatus</a>&gt;</dt>
<dd><p>A sequence of solving status objects showing the progress of the solution</p>
</dd>
</dl>
<a id="Hi_Geom_Solvers_BinarySolverUtil_SlopeSolveWithY1_" data-uid="Hi.Geom.Solvers.BinarySolverUtil.SlopeSolveWithY1*"></a>
<h3 id="Hi_Geom_Solvers_BinarySolverUtil_SlopeSolveWithY1_System_Func_System_Double_System_Double__System_Double_System_Double_System_Double_System_Double_System_Double_System_Double_System_Int32_" data-uid="Hi.Geom.Solvers.BinarySolverUtil.SlopeSolveWithY1(System.Func{System.Double,System.Double},System.Double,System.Double,System.Double,System.Double,System.Double,System.Double,System.Int32)">
SlopeSolveWithY1(Func&lt;double, double&gt;, double, double, double, double, double, double, int)
</h3>
<div class="markdown level1 summary"><p>Solves for a target y-value using the slope method with a pre-calculated y1 value.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static IEnumerable&lt;BinarySolvingStatus&gt; SlopeSolveWithY1(Func&lt;double, double&gt; func, double x0, double y0, double x1, double y1, double yTarget, double convergenceLimit, int maxIteration = 12)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>func</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.func-2">Func</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a>, <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a>&gt;</dt>
<dd><p>The function to solve</p>
</dd>
<dt><code>x0</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>Initial x value</p>
</dd>
<dt><code>y0</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>Initial y value (func(x0))</p>
</dd>
<dt><code>x1</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>Second x value</p>
</dd>
<dt><code>y1</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>Second y value (func(x1))</p>
</dd>
<dt><code>yTarget</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>Target y value to solve for</p>
</dd>
<dt><code>convergenceLimit</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>Convergence limit (acceptable error)</p>
</dd>
<dt><code>maxIteration</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd><p>Maximum number of iterations</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.ienumerable-1">IEnumerable</a>&lt;<a class="xref" href="Hi.Geom.Solvers.BinarySolvingStatus.html">BinarySolvingStatus</a>&gt;</dt>
<dd><p>A sequence of solving status objects showing the progress of the solution</p>
</dd>
</dl>
</article>
<div class="contribution d-print-none">
</div>
</div>
<div class="affix">
<nav id="affix"></nav>
</div>
</main>
<div class="container-xxl search-results" id="search-results"></div>
<footer class="border-top text-secondary">
<div class="container-xxl">
<div class="flex-fill">
<span> Copyright © 2025 <a href='https://superhightech.com.tw'>Tech Coordinate</a>. All rights reserved. <a href='https://superhightech.com.tw'>超級高科技股份有限公司</a> © 2025 版權所有 </span>
</div>
</div>
</footer>
</body>
</html>