C#,数值计算——数据建模Fitab的计算方法与源程序

news2025/1/10 16:25:30

1 文本格式

using System;

namespace Legalsoft.Truffer
{
    /// <summary>
    /// Fitting Data to a Straight Line
    /// </summary>
    public class Fitab
    {
        private int ndata { get; set; }
        private double a { get; set; }
        public double b { get; set; }
        private double siga { get; set; }
        private double sigb { get; set; }
        private double chi2 { get; set; }
        private double q { get; set; }
        private double sigdat { get; set; }
        private double[] x { get; set; }
        private double[] y { get; set; }
        private double[] sig { get; set; }

        public Fitab(double[] xx, double[] yy, double[] ssig)
        {
            this.ndata = xx.Length;
            this.x = xx;
            this.y = yy;
            this.sig = ssig;
            this.chi2 = 0.0;
            this.q = 1.0;
            this.sigdat = 0.0;
            Gamma gam = new Gamma();

            double ss = 0.0;
            double sx = 0.0;
            double sy = 0.0;
            double st2 = 0.0;
            b = 0.0;
            for (int i = 0; i < ndata; i++)
            {
                double wt = 1.0 / Globals.SQR(sig[i]);
                ss += wt;
                sx += x[i] * wt;
                sy += y[i] * wt;
            }
            double sxoss = sx / ss;
            for (int i = 0; i < ndata; i++)
            {
                double t = (x[i] - sxoss) / sig[i];
                st2 += t * t;
                b += t * y[i] / sig[i];
            }
            b /= st2;
            a = (sy - sx * b) / ss;
            siga = Math.Sqrt((1.0 + sx * sx / (ss * st2)) / ss);
            sigb = Math.Sqrt(1.0 / st2);
            for (int i = 0; i < ndata; i++)
            {
                chi2 += Globals.SQR((y[i] - a - b * x[i]) / sig[i]);
            }
            if (ndata > 2)
            {
                q = gam.gammq(0.5 * (ndata - 2), 0.5 * chi2);
            }
        }

        public Fitab(double[] xx, double[] yy)
        {
            this.ndata = xx.Length;
            this.x = xx;
            this.y = yy;
            this.sig = xx;
            this.chi2 = 0.0;
            this.q = 1.0;
            this.sigdat = 0.0;

            double sx = 0.0;
            double sy = 0.0;
            double st2 = 0.0;
            b = 0.0;
            for (int i = 0; i < ndata; i++)
            {
                sx += x[i];
                sy += y[i];
            }
            double ss = ndata;
            double sxoss = sx / ss;
            for (int i = 0; i < ndata; i++)
            {
                double t = x[i] - sxoss;
                st2 += t * t;
                b += t * y[i];
            }
            b /= st2;
            a = (sy - sx * b) / ss;
            siga = Math.Sqrt((1.0 + sx * sx / (ss * st2)) / ss);
            sigb = Math.Sqrt(1.0 / st2);
            for (int i = 0; i < ndata; i++)
            {
                chi2 += Globals.SQR(y[i] - a - b * x[i]);
            }
            if (ndata > 2)
            {
                sigdat = Math.Sqrt(chi2 / (ndata - 2));
            }
            siga *= sigdat;
            sigb *= sigdat;
        }
    }
}
 

2 代码格式

using System;

namespace Legalsoft.Truffer
{
    /// <summary>
    /// Fitting Data to a Straight Line
    /// </summary>
    public class Fitab
    {
        private int ndata { get; set; }
        private double a { get; set; }
        public double b { get; set; }
        private double siga { get; set; }
        private double sigb { get; set; }
        private double chi2 { get; set; }
        private double q { get; set; }
        private double sigdat { get; set; }
        private double[] x { get; set; }
        private double[] y { get; set; }
        private double[] sig { get; set; }

        public Fitab(double[] xx, double[] yy, double[] ssig)
        {
            this.ndata = xx.Length;
            this.x = xx;
            this.y = yy;
            this.sig = ssig;
            this.chi2 = 0.0;
            this.q = 1.0;
            this.sigdat = 0.0;
            Gamma gam = new Gamma();

            double ss = 0.0;
            double sx = 0.0;
            double sy = 0.0;
            double st2 = 0.0;
            b = 0.0;
            for (int i = 0; i < ndata; i++)
            {
                double wt = 1.0 / Globals.SQR(sig[i]);
                ss += wt;
                sx += x[i] * wt;
                sy += y[i] * wt;
            }
            double sxoss = sx / ss;
            for (int i = 0; i < ndata; i++)
            {
                double t = (x[i] - sxoss) / sig[i];
                st2 += t * t;
                b += t * y[i] / sig[i];
            }
            b /= st2;
            a = (sy - sx * b) / ss;
            siga = Math.Sqrt((1.0 + sx * sx / (ss * st2)) / ss);
            sigb = Math.Sqrt(1.0 / st2);
            for (int i = 0; i < ndata; i++)
            {
                chi2 += Globals.SQR((y[i] - a - b * x[i]) / sig[i]);
            }
            if (ndata > 2)
            {
                q = gam.gammq(0.5 * (ndata - 2), 0.5 * chi2);
            }
        }

        public Fitab(double[] xx, double[] yy)
        {
            this.ndata = xx.Length;
            this.x = xx;
            this.y = yy;
            this.sig = xx;
            this.chi2 = 0.0;
            this.q = 1.0;
            this.sigdat = 0.0;

            double sx = 0.0;
            double sy = 0.0;
            double st2 = 0.0;
            b = 0.0;
            for (int i = 0; i < ndata; i++)
            {
                sx += x[i];
                sy += y[i];
            }
            double ss = ndata;
            double sxoss = sx / ss;
            for (int i = 0; i < ndata; i++)
            {
                double t = x[i] - sxoss;
                st2 += t * t;
                b += t * y[i];
            }
            b /= st2;
            a = (sy - sx * b) / ss;
            siga = Math.Sqrt((1.0 + sx * sx / (ss * st2)) / ss);
            sigb = Math.Sqrt(1.0 / st2);
            for (int i = 0; i < ndata; i++)
            {
                chi2 += Globals.SQR(y[i] - a - b * x[i]);
            }
            if (ndata > 2)
            {
                sigdat = Math.Sqrt(chi2 / (ndata - 2));
            }
            siga *= sigdat;
            sigb *= sigdat;
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1068196.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RabbitMQ之Fanout(扇形) Exchange解读

目录 基本介绍 适用场景 springboot代码演示 演示架构 工程概述 RabbitConfig配置类&#xff1a;创建队列及交换机并进行绑定 MessageService业务类&#xff1a;发送消息及接收消息 主启动类RabbitMq01Application&#xff1a;实现ApplicationRunner接口 基本介绍 Fa…

跨域请求方案整理实践

项目场景&#xff1a; 调用接口进行手机验证提示,项目需要调用其它域名的接口,导致前端提示跨域问题 问题描述 前端调用其他域名接口时报错提示: index.html#/StatisticalAnalysisOfVacancy:1 Access to XMLHttpRequest at http://xxxxx/CustomerService/template/examineMes…

openGauss学习笔记-92 openGauss 数据库管理-内存优化表MOT管理-内存表特性-使用MOT-MOT使用MOT SQL覆盖和限制

文章目录 openGauss学习笔记-92 openGauss 数据库管理-内存优化表MOT管理-内存表特性-使用MOT-MOT使用MOT SQL覆盖和限制92.1 不支持的特性92.2 MOT限制92.3 不支持的DDL操作92.4 不支持的数据类型92.5 不支持的索引DDL和索引92.6 不支持的DML92.7 不支持的JIT功能&#xff08;…

ThingsBoard如何自定义tcp-transport

1、概述 很久没有更新了,一直忙于其他的事情,最近去搞了一个在ThingsBoard中自定义一个tcp-transport,用于连接使用tcp长连接的设备,目前使用tcp和mqtt协议连接服务端的设备还是很多,ThingsBoard的PE版提供了Integration是可以实现tcp的接入,但是CE版是没有提供接入tcp长…

前端性能优化之防抖节流

前端性能优化之防抖&节流 1.什么是防抖和节流2.代码实现2.1 实现防抖2.2 实现节流 3.应用场景3.1 防抖的应用3.2 节流的应用 1.什么是防抖和节流 防抖和节流是前端开发中常用的两种性能优化技术。 为什么需要防抖和节流呢&#xff1f; 两者目的都是为了防止某个时间段内…

配置文件生成器-秒杀SSM的xml整合

配置文件生成器-秒杀SSM的xml整合 思路&#xff1a; 通过简单的配置&#xff0c;直接生成对应配置文件。 maven坐标 <dependencies><!-- 配置文件生成 --><dependency><groupId>org.freemarker</groupId><artifactId>freemarker<…

MyBatis中的ResultMap有什么作用

MyBatis是一款广泛使用的Java持久层框架&#xff0c;它简化了数据库访问和数据映射的工作。在MyBatis中&#xff0c;ResultMap是一个强大的工具&#xff0c;用于将数据库查询结果映射到Java对象上。本文将深入探讨MyBatis中的ResultMap&#xff0c;解释它的作用以及如何使用它来…

Java-Exception

目录 异常概念ErrorException 体系图常见运行时异常NullPointerExceptionArithmeticExceptionArrayIndexOutOfBoundExceptionClassCastExceptionNumberFormatException 常见的编译异常异常处理机制自定义异常throw和throws对比 异常是Java编程中的常见问题&#xff0c;了解如何…

Java中栈实现怎么选?Stack、Deque、ArrayDeque、LinkedList(含常用Api积累)

目录 Java中的Stack类 不用Stack有以下两点原因 1、从性能上来说应该使用Deque代替Stack。 2、Stack从Vector继承是个历史遗留问题&#xff0c;JDK官方已建议优先使用Deque的实现类来代替Stack。 该用ArrayDeque还是LinkedList&#xff1f; ArrayDeque与LinkList区别&#xff1…

互联网Java工程师面试题·MySQL 篇·第一弹

目录 1、MySQL 中有哪几种锁&#xff1f; 2、MySQL 中有哪些不同的表格&#xff1f; 3、简述在 MySQL 数据库中 MyISAM 和 InnoDB 的区别 4、MySQL 中 InnoDB 支持的四种事务隔离级别名称&#xff0c;以及逐级之间的区别&#xff1f; 5、CHAR 和 VARCHAR 的区别&#xff1…

吃鸡技能全终极攻略!分享顶级干货,助您稳坐吃鸡王者宝座!

在绝地求生的游戏世界里&#xff0c;只有真正的高手才能立于不败之地。今天&#xff0c;我作为专业吃鸡行家&#xff0c;将为大家揭秘一些提高游戏战斗力的秘诀&#xff0c;并分享顶级游戏作战干货&#xff0c;让你成为绝地求生的大神&#xff01; 首先&#xff0c;让我们了解一…

【AntDesign】多环境配置和启动

环境分类&#xff0c;可以分为 本地环境、测试环境、生产环境等&#xff0c;通过对不同环境配置内容&#xff0c;来实现对不同环境做不同的事情。 AntDesign 项目&#xff0c;通过 config.xxx.ts 添加不同的后缀来区分配置文件&#xff0c;启动时候通过后缀启动即可。 config…

Spring Cloud Gateway2之路由详解

Spring Cloud Gateway路由 文章目录 1. 前言2. Gateway路由的基本概念3. 三种路由1. 静态路由2. 动态路由1. 利用外部存储2. API动态路由 3. 服务发现路由(自动路由)3.1. 配置方式3.2 自动路由&#xff08;服务发现&#xff09;原理核心源码GatewayDiscoveryClientAutoConfigur…

【轻松玩转MacOS】系统设置篇

引言 作为一个MacOS新用户&#xff0c;你是否对系统设置感到迷茫&#xff1f;是否想要定制出一个完全属于自己的MacBook&#xff1f;别担心&#xff0c;本文将带你一步步走进系统设置的世界&#xff0c;让你轻松定制出一个独一无二的MacBook。让我们开始吧&#xff01;今天&am…

开发做前端好还是后端好?这是个问题!

前言 随着互联网的快速发展&#xff0c;越来越多的人选择从事Web开发行业&#xff0c;而Web开发涉及到前端和后端两个方面&#xff0c;相信许多人都曾经对这两个方面进行过探究。而且编程世界就像一座大城市&#xff0c;前端开发和后端开发就像城市的两个不同街区。作为初学者&…

【C语言初阶】分支语句和循环语句

目录 一、什么是语句 二、分支语句 2.1 if 语句 2.1.1 悬空else 2.1.2 if 书写形式的对比 2.2 switch语句 2.2.1 在switch语句中的 break 2.2.2 default子句 2.2.3 练习 三、循环语句 3.1 while循环 3.1.1 while语句中的break 3.1.2 while语句中的continue 3.2 fo…

AndroidStudio添加一个虚拟设备

虚拟设备管理器 这个是AndroidStudio的启动界面 虚拟设备管理界面 点击加号&#xff0c;新增 选择手机型号 选择系统版本 虚拟设备名 完成

应用安全系列之三十九:JWT 相关安全问题以及最佳实践

JWT 简介 JWT是JSON Web Token 的简称,根据https://www.rfc-editor.org/rfc/rfc7519的定义如下: A string representing a set of claims as a JSON object that is encoded in a JWS or JWE, enabling the claims to be digitally signed or MACed and/or encrypted. 翻译…

滴滴发布十一大数据:延边出行需求上涨280% 西部省份成旅游热点

今年十一假期适逢中秋佳节&#xff0c;在亲友团聚和长假出游的多重期盼下&#xff0c;超级黄金周展现强劲内需&#xff0c;带动多样化的消费趋势&#xff0c;出行热情也随之高涨。滴滴出行数据显示&#xff0c;打车需求相比去年同期上涨80%&#xff0c;高峰时段每分钟呼叫突破1…