用C#最小二乘法擬合圓形,計算圓心和半徑

用C#最小二乘法擬合圓形,計算圓心和半徑

using System;
using System.Collections.Generic;namespace ConsoleApp2
{internal class Program{static void Main(string[] args){List<Tuple<double, double>> points = new List<Tuple<double, double>>();points.Add(Tuple.Create(0.0, 1.0));points.Add(Tuple.Create(1.0, 0.0));points.Add(Tuple.Create(2.0, 1.0));points.Add(Tuple.Create(1.0, 2.0));Operator2D.FitCircle(points,out double centerX,out double centerY, out double radius);}}}class Operator2D
{public static void FitCircle(List<Tuple<double, double>> points, out double centerX, out double centerY, out double radius){double[,] ATA = new double[3, 3];double[] ATB = new double[3];foreach (var pt in points){double x = pt.Item1, y = pt.Item2;double twoX = 2 * x, twoY = 2 * y;double B_i = x * x + y * y;// 構建ATA矩陣ATA[0, 0] += twoX * twoX;ATA[0, 1] += twoX * twoY;ATA[0, 2] += twoX;ATA[1, 0] += twoY * twoX;ATA[1, 1] += twoY * twoY;ATA[1, 2] += twoY;ATA[2, 0] += twoX;ATA[2, 1] += twoY;ATA[2, 2] += 1;// 構建ATB向量ATB[0] += twoX * B_i;ATB[1] += twoY * B_i;ATB[2] += B_i;}// 計算逆矩陣double[,] invATA = Invert3x3Matrix(ATA);// 求解參數double a = invATA[0, 0] * ATB[0] + invATA[0, 1] * ATB[1] + invATA[0, 2] * ATB[2];double b = invATA[1, 0] * ATB[0] + invATA[1, 1] * ATB[1] + invATA[1, 2] * ATB[2];double c = invATA[2, 0] * ATB[0] + invATA[2, 1] * ATB[1] + invATA[2, 2] * ATB[2];// 計算半徑double rSquared = a * a + b * b + c;if (rSquared < 0) throw new ArgumentException("無法擬合有效圓形");radius = Math.Sqrt(rSquared);centerX = a;centerY = b;}// 3x3矩陣求逆static double[,] Invert3x3Matrix(double[,] matrix){double a = matrix[0, 0], b = matrix[0, 1], c = matrix[0, 2];double d = matrix[1, 0], e = matrix[1, 1], f = matrix[1, 2];double g = matrix[2, 0], h = matrix[2, 1], i = matrix[2, 2];double det = a * (e * i - f * h) - b * (d * i - f * g) + c * (d * h - e * g);if (Math.Abs(det) < 1e-12) throw new ArgumentException("矩陣不可逆");double invDet = 1.0 / det;return new double[,]{{ (e * i - f * h) * invDet, (c * h - b * i) * invDet, (b * f - c * e) * invDet },{ (f * g - d * i) * invDet, (a * i - c * g) * invDet, (c * d - a * f) * invDet },{ (d * h - e * g) * invDet, (b * g - a * h) * invDet, (a * e - b * d) * invDet }};}
}

在這里插入圖片描述

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

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

相關文章

四、web安全-行業術語

1. 肉雞 所謂“肉雞”是一種很形象的比喻&#xff0c;比喻那些可以隨意被我們控制的電腦&#xff0c;對方可以是WINDOWS系統&#xff0c;也可以是UNIX/LINUX系統&#xff0c;可以是普通的個人電腦&#xff0c;也可以是大型的服務器&#xff0c;我們可以象操作自己的電腦那樣來…

MYSQL丟失pid處理方式

1、停止服務器 systemctl stop mysqld 2、修改 /data/mysql/etc/my.cnf pid-file /tmp/mysql/mysql.pid 改為 pid-file /data/mysql/mysql.pid 3、創建 touch /data/mysql/mysql.pid ch…

《計算機組成原理》第 2 章 - 計算機的發展及應用?

計算機從誕生至今&#xff0c;經歷了翻天覆地的變化&#xff0c;應用領域也在不斷拓展。本文將結合 Java 代碼實例&#xff0c;帶你深入了解計算機的發展歷程、應用場景及未來展望&#xff0c;讓你在學習理論的同時&#xff0c;還能通過實踐加深理解。? 2.1 計算機的發展史? …

Github 2025-05-26 開源項目周報Top15

根據Github Trendings的統計,本周(2025-05-26統計)共有15個項目上榜。根據開發語言中項目的數量,匯總情況如下: 開發語言項目數量Python項目5TypeScript項目3JavaScript項目3C++項目2Roff項目1Go項目1C#項目1Jupyter Notebook項目1Rust項目1CSS項目1Shell項目1Dockerfile項目…

詳解MYSQL索引失效問題排查

目錄 一、快速定位索引失效的步驟 1. 使用 EXPLAIN 分析執行計劃詳解Mysql的Explain語句 2. 確認索引是否存在 3. 檢查查詢條件是否符合索引規則 二、常見索引失效場景及解決方法 1. 索引列參與計算或函數 2. 隱式類型轉換 3. 使用 LIKE 以通配符開頭 4. 使用 OR 連接…

在 springboot3.x 使用 knife4j 以及常見報錯匯總

目錄 引言&#xff1a; 引入依賴&#xff1a; 配置文件&#xff1a; 過濾靜態資源&#xff1a; 增強模式&#xff1a; 便捷地址訪問&#xff1a; 常見問題&#xff1a; 注解使用實例&#xff1a; &#x1f4c4; ?文檔參考地址?&#xff1a; SpringBoot 3.x 結合 …

【C/C++】環形緩沖區:高效數據流轉核心

文章目錄 1 核心結構與原理1.1 組成1.2 內存布局1.3 關鍵操作 2 實現細節與優化2.1 滿/空狀態的判斷2.2 多線程安全&#xff08;無鎖實現&#xff09;2.3 性能優化 3 典型應用場景4 代碼示例5 優缺點6 對比7 進階 環形緩沖區&#xff08;Ring Buffer&#xff09;&#xff0c;又…

功耗僅4W!迷你服務器黑豹X2(Panther X2)卡刷、線刷刷入Armbian(ubuntu)系統教程

功耗僅4W&#xff01;迷你服務器黑豹X2&#xff08;Panther X2&#xff09;卡刷、線刷刷入Armbian&#xff08;ubuntu&#xff09;系統教程 前言 前段時間逛海鮮市場的時候留意到一個礦渣盒子&#xff0c;黑豹x2&#xff0c;又是一個類似迅雷賺錢寶這樣的挖礦項目已經gg的定制…

【Elasticsearch】更新操作原理

Elasticsearch 的更新操作&#xff08;如 _update 和 _update_by_query&#xff09;在底層實現上有一些復雜的原理&#xff0c;這些原理涉及到 Elasticsearch 的數據存儲機制、索引機制以及事務日志&#xff08;Translog&#xff09;的使用。以下是 Elasticsearch 更新操作的主…

【C++】紅黑樹的實現

目錄 前言 一、紅黑樹的概念 二、紅黑樹的實現 三、紅黑樹的查找 四、紅黑樹的驗證 五、紅黑樹的刪除 總結 前言 本文講解紅黑樹&#xff0c;主要講解插入部分的實現&#xff0c;建議在理解了AVL樹的旋轉后再來學習紅黑樹&#xff0c;因為紅黑樹也涉及旋轉&#xff0c;并…

IPv4地址的主要配置項介紹

1. IPv4 主要配置項 (1) IP 地址&#xff08;IP Address&#xff09; 作用&#xff1a;唯一標識網絡中的設備&#xff08;如 192.168.1.100&#xff09;。分類&#xff1a; 靜態 IP&#xff1a;手動配置&#xff0c;適用于服務器、打印機等固定設備。動態 IP&#xff08;DHCP…

nginx 基于IP和用戶的訪問

nginx的下載 yum install nginx.x86_64 -y 啟動服務 systemctl enable --now nginx.service 查看服務目錄 [rootwebserver ~]# rpm -ql nginx /usr/bin/nginx-upgrade /usr/lib/systemd/system/nginx.service /usr/share/man/man3/nginx.3pm.gz /usr/share/man/man8/nginx…

Debian操作系統全面解析:從起源到應用

Debian 操作系統全面解析:從起源到應用 在開源操作系統的廣袤天地中,Debian 占據著極為重要的地位。它憑借自身諸多突出特性,吸引了全球無數用戶與開發者的目光,從個人桌面應用到大型服務器部署,從普通辦公場景到專業科研領域,Debian 都展現出了強大的適應性與可靠性,為…

【springMVC】springMVC學習系列一:springMVC的組件

系列文章目錄 前言 spring mvc 它解決了什么問題呢&#xff1f; 1.URL映射 2. 表單參數映射 3. 調用目標Control 4. 數據模型映射 5. 視圖解析 6. 異常處理 上述解決在spring mvc 中都體現在如下組件當中 HandlerMapping&#xff1a; url與控制器的映謝 HandlerAdapter&#…

【Vue Vapor Mode :技術突破與性能優化的可能性】

Vue Vapor Mode &#xff1a;技術突破與性能優化的可能性 前言 作為一名有著Vue 2經驗和Vue 3經驗的開發者&#xff0c;你一定深刻體會過Vue從Options API到Composition API的演進&#xff0c;也感受過Vue 3在性能上相比Vue 2的顯著提升。現在&#xff0c;Vue團隊正在開發一個…

MySQL數據庫零基礎入門教程:從安裝配置到數據查詢全掌握【MySQL系列】

第1章&#xff1a;認識MySQL 1.1 什么是MySQL&#xff1f; MySQL是一種開源的關系型數據庫管理系統&#xff08;RDBMS&#xff09;&#xff0c;由瑞典MySQL AB公司開發&#xff0c;現由Oracle公司維護。它使用結構化查詢語言&#xff08;SQL&#xff09;進行數據庫的管理和操…

AXI3、AXI4 和 AXI5 的詳細差異對比

AXI3、AXI4 和 AXI5 的詳細差異對比 摘要&#xff1a;AXI (Advanced eXtensible Interface) 是 ARM 公司提出的高性能片上總線協議&#xff0c;廣泛用于 SoC (System on Chip) 設計中&#xff0c;以實現高效的數據傳輸和系統互連。AXI 協議隨著版本的迭代不斷演進&#xff0c;從…

向量數據庫該如何選擇?Milvus 、ES、OpenSearch 快速對比:向量搜索能力與智能檢索引擎的應用前景

? 1.milvus VS ES Milvus 的亮點 功能性&#xff1a;Milvus 不僅支持基本的向量相似性搜索&#xff0c;還支持稀疏向量、批量向量、過濾搜索和混合搜索功能等高級功能。 靈活性&#xff1a;Milvus 支持多種部署模式和多個 SDK&#xff0c;所有這些都在一個強大的集成生態系…

SQL進階之旅 Day 4:子查詢與臨時表優化

文章標題 【SQL進階之旅 Day 4】子查詢與臨時表優化 文章內容 開篇&#xff1a;SQL進階之旅的第4天 在“SQL進階之旅”系列中&#xff0c;第4天的主題是子查詢與臨時表優化。這是SQL開發中不可或缺的一部分&#xff0c;尤其在處理復雜查詢時&#xff0c;合理使用子查詢和臨…

Python學習(2) ----- Python的類型

在 Python 中&#xff0c;一切皆對象&#xff0c;每個對象都有類型。下面是 Python 中的常見內置類型分類和示例&#xff1a; &#x1f7e1; 1. 數字類型&#xff08;Numeric Types&#xff09; 類型說明示例int整數5, -42float浮點數3.14, -0.5complex復數1 2j a 10 …