当前位置: 首页 > news >正文

C#,数值计算——调适数值积分法(adaptive quadrature)的计算方法与源程序

 

1 文本格式

using System;

namespace Legalsoft.Truffer
{
    /// <summary>
    /// 调适数值积分法
    /// adaptive quadrature
    /// </summary>
    public class Adapt
    {
        private double x1 { get; } = 0.942882415695480;
        private double x2 { get; } = 0.641853342345781;
        private double x3 { get; } = 0.236383199662150;
        private double TOL { get; set; }
        private double toler { get; set; }
        private double alpha { get; set; }
        private double beta { get; set; }
        private double[] x { get; set; }

        public bool terminate { get; set; }
        public bool out_of_tolerance { get; set; }

        public Adapt(double tol)
        {
            alpha = Math.Sqrt(2.0 / 3.0);
            beta = 1.0 / Math.Sqrt(5.0);
            x = new double[] { 0, -x1, -alpha, -x2, -beta, -x3, 0.0, x3, beta, x2, alpha, x1 };

            this.TOL = tol;
            this.terminate = true;
            this.out_of_tolerance = false;
            double EPS = float.Epsilon;
            if (TOL < 10.0 * EPS)
            {
                TOL = 10.0 * EPS;
            }
        }

        public double integrate(UniVarRealValueFun func, double a, double b)
        {
            double[] y = new double[13];

            double m = 0.5 * (a + b);
            double h = 0.5 * (b - a);
            double fa = y[0] = func.funk(a);
            double fb = y[12] = func.funk(b);
            for (int i = 1; i < 12; i++)
            {
                y[i] = func.funk(m + x[i] * h);
            }
            double i2 = (h / 6.0) * (y[0] + y[12] + 5.0 * (y[4] + y[8]));
            double i1 = (h / 1470.0) * (77.0 * (y[0] + y[12]) + 432.0 * (y[2] + y[10]) + 625.0 * (y[4] + y[8]) + 672.0 * y[6]);
            double xs = h * (0.0158271919734802 * (y[0] + y[12]) + 0.0942738402188500 * (y[1] + y[11]) + 0.155071987336585 * (y[2] + y[10]) + 0.188821573960182 * (y[3] + y[9]) + 0.199773405226859 * (y[4] + y[8]) + 0.224926465333340 * (y[5] + y[7]) + 0.242611071901408 * y[6]);
            double erri1 = Math.Abs(i1 - xs);
            double erri2 = Math.Abs(i2 - xs);
            double r = (erri2 != 0.0) ? erri1 / erri2 : 1.0;
            toler = (r > 0.0 && r < 1.0) ? TOL / r : TOL;
            //if (xs == 0.0)
            if (Math.Abs(xs) <= float.Epsilon)
            {
                xs = b - a;
            }
            xs = Math.Abs(xs);
            return adaptlob(func, a, b, fa, fb, xs);
        }

        public double adaptlob(UniVarRealValueFun func, double a, double b, double fa, double fb, double xs)
        {
            double m = 0.5 * (a + b);
            double h = 0.5 * (b - a);
            double mll = m - alpha * h;
            double ml = m - beta * h;
            double mr = m + beta * h;
            double mrr = m + alpha * h;
            double fmll = func.funk(mll);
            double fml = func.funk(ml);
            double fm = func.funk(m);
            double fmr = func.funk(mr);
            double fmrr = func.funk(mrr);
            double i2 = h / 6.0 * (fa + fb + 5.0 * (fml + fmr));
            double i1 = h / 1470.0 * (77.0 * (fa + fb) + 432.0 * (fmll + fmrr) + 625.0 * (fml + fmr) + 672.0 * fm);

            if (Math.Abs(i1 - i2) <= toler * xs || mll <= a || b <= mrr)
            {
                if ((mll <= a || b <= mrr) && terminate)
                {
                    out_of_tolerance = true;
                    terminate = false;
                }
                return i1;
            }
            else
            {
                return adaptlob(func, a, mll, fa, fmll, xs) +
                    adaptlob(func, mll, ml, fmll, fml, xs) +
                    adaptlob(func, ml, m, fml, fm, xs) +
                    adaptlob(func, m, mr, fm, fmr, xs) +
                    adaptlob(func, mr, mrr, fmr, fmrr, xs) +
                    adaptlob(func, mrr, b, fmrr, fb, xs);
            }
        }
    }
}
 

2 代码格式

using System;namespace Legalsoft.Truffer
{/// <summary>/// 调适数值积分法/// adaptive quadrature/// </summary>public class Adapt{private double x1 { get; } = 0.942882415695480;private double x2 { get; } = 0.641853342345781;private double x3 { get; } = 0.236383199662150;private double TOL { get; set; }private double toler { get; set; }private double alpha { get; set; }private double beta { get; set; }private double[] x { get; set; }public bool terminate { get; set; }public bool out_of_tolerance { get; set; }public Adapt(double tol){alpha = Math.Sqrt(2.0 / 3.0);beta = 1.0 / Math.Sqrt(5.0);x = new double[] { 0, -x1, -alpha, -x2, -beta, -x3, 0.0, x3, beta, x2, alpha, x1 };this.TOL = tol;this.terminate = true;this.out_of_tolerance = false;double EPS = float.Epsilon;if (TOL < 10.0 * EPS){TOL = 10.0 * EPS;}}public double integrate(UniVarRealValueFun func, double a, double b){double[] y = new double[13];double m = 0.5 * (a + b);double h = 0.5 * (b - a);double fa = y[0] = func.funk(a);double fb = y[12] = func.funk(b);for (int i = 1; i < 12; i++){y[i] = func.funk(m + x[i] * h);}double i2 = (h / 6.0) * (y[0] + y[12] + 5.0 * (y[4] + y[8]));double i1 = (h / 1470.0) * (77.0 * (y[0] + y[12]) + 432.0 * (y[2] + y[10]) + 625.0 * (y[4] + y[8]) + 672.0 * y[6]);double xs = h * (0.0158271919734802 * (y[0] + y[12]) + 0.0942738402188500 * (y[1] + y[11]) + 0.155071987336585 * (y[2] + y[10]) + 0.188821573960182 * (y[3] + y[9]) + 0.199773405226859 * (y[4] + y[8]) + 0.224926465333340 * (y[5] + y[7]) + 0.242611071901408 * y[6]);double erri1 = Math.Abs(i1 - xs);double erri2 = Math.Abs(i2 - xs);double r = (erri2 != 0.0) ? erri1 / erri2 : 1.0;toler = (r > 0.0 && r < 1.0) ? TOL / r : TOL;//if (xs == 0.0)if (Math.Abs(xs) <= float.Epsilon){xs = b - a;}xs = Math.Abs(xs);return adaptlob(func, a, b, fa, fb, xs);}public double adaptlob(UniVarRealValueFun func, double a, double b, double fa, double fb, double xs){double m = 0.5 * (a + b);double h = 0.5 * (b - a);double mll = m - alpha * h;double ml = m - beta * h;double mr = m + beta * h;double mrr = m + alpha * h;double fmll = func.funk(mll);double fml = func.funk(ml);double fm = func.funk(m);double fmr = func.funk(mr);double fmrr = func.funk(mrr);double i2 = h / 6.0 * (fa + fb + 5.0 * (fml + fmr));double i1 = h / 1470.0 * (77.0 * (fa + fb) + 432.0 * (fmll + fmrr) + 625.0 * (fml + fmr) + 672.0 * fm);if (Math.Abs(i1 - i2) <= toler * xs || mll <= a || b <= mrr){if ((mll <= a || b <= mrr) && terminate){out_of_tolerance = true;terminate = false;}return i1;}else{return adaptlob(func, a, mll, fa, fmll, xs) +adaptlob(func, mll, ml, fmll, fml, xs) +adaptlob(func, ml, m, fml, fm, xs) +adaptlob(func, m, mr, fm, fmr, xs) +adaptlob(func, mr, mrr, fmr, fmrr, xs) +adaptlob(func, mrr, b, fmrr, fb, xs);}}}
}

相关文章:

C#,数值计算——调适数值积分法(adaptive quadrature)的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { /// <summary> /// 调适数值积分法 /// adaptive quadrature /// </summary> public class Adapt { private double x1 { get; } 0.942882415695480; private …...

微信小程序发布迭代版本后如何提示用户强制更新新版本

在点击小程序发布的时候选择&#xff0c;升级选项 之前用户使用过的再打开小程序页面就会弹出升级弹窗modal...

星际争霸之小霸王之小蜜蜂(七)--消失的子弹

目录 前言 一、删除子弹 二、限制子弹数量 三、继续重构代码 总结 前言 昨天我们已经让子弹飞了起来&#xff0c;但是会面临一个和之前小蜜蜂一样的问题&#xff0c;小蜜蜂的行动应该限制在窗口内&#xff0c;那么子弹也是有相同之处&#xff0c;也需要限制一个移动范围&…...

Hadoop入门机安装hadoop

0目录 1.Hadoop入门 2.linux安装hadoop 1.Hadoop入门 定义 Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下&#xff0c;开发分布式程序。充分利用集群的威力进行高速运算和存储。 优势 高可靠性&#xff1a;Hadoop底层维护多…...

cookie技术介绍

title: cookie技术 date: 2023-08-27 21:34:19 tags: [cookie, 网络, http] categories: 网络 我们经常说的cookie缓存数据&#xff0c;允许cookie是什么意思? Cookie也被称作Cookies&#xff0c;它是一种让网站的服务器端可以把少量数据存储在客户端的硬盘或内存中&#x…...

网络摄像头:SparkoCam Crack

SparkoCam 网络摄像头软件 SparkoCam 是一款网络摄像头和视频效果软件&#xff0c;用于广播实时网络摄像头效果并将其应用到视频聊天和录音中。 使用佳能/尼康数码单反相机作为常规网络摄像头通过向实时视频聊天和视频录制添加酷炫的网络摄像头效果和图形来增强 USB 网络摄像…...

【缓存设计】记一种不错的缓存设计思路

文章目录 前言场景设计思路小结 前言 之前与同事讨论接口性能问题时听他介绍了一种缓存设计思路&#xff0c;觉得不错&#xff0c;做个记录供以后参考。 场景 假设有个以下格式的接口&#xff1a; GET /api?keys{key1,key2,key3,...}&types{1,2,3,...}其中 keys 是业务…...

微信小程序大学校园二手教材与书籍拍卖系统设计与实现

摘 要 随着应用技术的发展以及电子商务平台的崛起&#xff0c;利用线上平台实现的二手交易为传统的二手交易市场注入了新的生机&#xff0c;大学校园内的新生和应届毕业生的相互交替产生了巨大的二手交易空间&#xff0c;同时考虑到环保和资源再利用&#xff0c;大学校园的书籍…...

涛然自得周刊(第06期):韩版苏东坡的突围

作者&#xff1a;何一涛 日期&#xff1a;2023 年 8 月 27 日 涛然自得周刊主要精选作者阅读过的书影音内容&#xff0c;不定期发布。历史周刊内容可以看这里。 电影 兹山鱼谱 讲述丁若铨因政治事件被贬黜到了遥远的黑山岛。来到岛上后&#xff0c;丁被大自然环境疗愈&#…...

DOCKER 部署 webman项目

# 设置基础镜像 FROM php:8.2-fpm# 安装必要的软件包和依赖项 RUN apt-get update && apt-get install -y \nginx \libzip-dev \libpng-dev \libjpeg-dev \libfreetype6-dev \&& rm -rf /var/lib/apt/lists/*# 安装 PHP 扩展 RUN docker-php-ext-configure gd …...

LLMs:LangChain-Chatchat(一款可实现本地知识库问答应用)的简介、安装、使用方法之详细攻略

LLMs&#xff1a;LangChain-Chatchat(一款可实现本地知识库问答应用)的简介、安装、使用方法之详细攻略 目录 LangChain-Chatchat的简介 1、原理图解 2、文档处理实现流程 1、模型支持 (1)、LLM 模型支持 (2)、Embedding 模型支持 LangChain-Chatchat的安装 1、镜像部署…...

Qt 解析XML文件 QXmlStreamReader

如何使用QXmlStreamReader来解析格式良好的XML&#xff0c;Qt的文档中指出&#xff0c;它是一种更快、更方便的Qt自己的SAX解析器&#xff08;QXmlSimpleReader&#xff09;的替代&#xff0c;它也较快&#xff0c;在某种情况下&#xff0c;比DOM&#xff08;QDomDocument&…...

图像线段检测几种方法

1、方法一 当我将OpenCV提升到4.1.0时&#xff0c;LineSegmentDetector&#xff08;LSD&#xff09;消失了。 OpenCV-contrib有一个名为FastLineDetector的东西&#xff0c;如果它被用作LSD的替代品似乎很好。如果你有点感动&#xff0c;你会得到与LSD几乎相同的结果。 2、方…...

【Vue2.0源码学习】生命周期篇-初始化阶段(initEvents)

文章目录 1. 前言2. 解析事件3. initEvents函数分析4. 总结 1. 前言 本篇文章介绍生命周期初始化阶段所调用的第二个初始化函数——initEvents。从函数名字上来看&#xff0c;这个初始化函数是初始化实例的事件系统。我们知道&#xff0c;在Vue中&#xff0c;当我们在父组件中…...

SQL高级知识点

MySQL基础 1、安装 1)设置编码 2)设置密码 2、配置文件&#xff1a;my.ini、my.cnf 1)设置端口号 port3306 2)设置编码 default-character-setutf8character-set-serverutf8 3)存储引擎 default-storage-engineINNODB 4)最大连接数 max_connections100 注意&…...

【安全】原型链污染 - Code-Breaking 2018 Thejs

目录 准备工作 环境搭建 加载项目 复现 代码审计 payload 总结 准备工作 环境搭建 Nodejs BurpSuite 加载项目 项目链接 ① 下载好了cmd切进去 ② 安装这个项目 可以检查一下 ③运行并监听 可以看到已经在3000端口启动了 复现 代码审计 const fs require(fs) cons…...

【架构】探索计算机处理器的世界:ARM和x86架构解析及指令集

目录 导语ARM架构x86架构AMD公司对比与应用不同架构处理器的指令集结语 导语 计算机处理器是数字化时代的核心引擎&#xff0c;而在众多处理器架构中&#xff0c;ARM和x86是备受关注的三个。本文将带您深入探索这三个架构&#xff0c;介绍它们的特点、公司背景以及应用领域。让…...

SpringBoot权限认证

SpringBoot的安全 常用框架&#xff1a;Shrio,SpringSecurity 两个功能&#xff1a; Authentication 认证Authorization 授权 权限&#xff1a; 功能权限访问权限菜单权限 原来用拦截器、过滤器来做&#xff0c;代码较多。现在用框架。 SpringSecurity 只要引入就可以使…...

OpenGL-入门-BMP像素图glReadPixels

glReadPixels函数用于从帧缓冲区中读取像素数据。它可以用来获取屏幕上特定位置的像素颜色值或者获取一块区域内的像素数据。下面是该函数的基本语法&#xff1a; void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *da…...

同源策略以及SpringBoot的常见跨域配置

先说明一个坑。在跨域的情况下&#xff0c;浏览器针对复杂请求&#xff0c;会发起预检OPTIONS请求。如果服务端对OPTIONS进行拦截&#xff0c;并返回非200的http状态码。浏览器一律提示为cors error。 一、了解跨域 1.1 同源策略 浏览器的同源策略&#xff08;Same-Origin Po…...

基于jeecg-boot的flowable流程跳转功能实现

更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a; https://gitee.com/nbacheng/nbcio-boot 前端代码&#xff1a;https://gitee.com/nbacheng/nbcio-vue.git 在线演示&#xff08;包括H5&#xff09; &#xff1a; http://122.227.135.243:9888 今天我…...

react图片预加载

道阻且长&#xff0c;行而不辍&#xff0c;未来可期 图片预加载的原理&#xff1a;new一个image对象&#xff0c;用这个对象加载图片&#xff0c;等这个对象将这个图片请求完后&#xff0c;再将这个图片放入原本应该放置的位置 代码如下&#xff1a; import React, { useEffe…...

数据库管理

SQL语言分类&#xff1a; DDL&#xff1a;数据定义语言&#xff0c;用于创建数据库对象&#xff0c;如库、表、索引等 DML&#xff1a;数据操纵语言&#xff0c;用于对表中的数据进行管理 DQL&#xff1a;数据查询语言&#xff0c;用于从数据表中查找符合条件的数据记录 DCL&am…...

【2023年11月第四版教材】《第8章-整合管理》(第3部分)

《第8章-整合管理》&#xff08;第3部分&#xff09; 9 监控项目工作9.1 监控项目工作★★★9.2 数据分析9.4 决策9.5 工作绩效报告 10 实施整体变更控制10.1 实施整体变更控制★★★ &#xff08;18上36&#xff09;10.2 变更请求★★★10.3变更控制工具★★★10.4 数据分析10…...

初阶数据结构(三)链表

&#x1f493;博主csdn个人主页&#xff1a;小小unicorn&#x1f493; ⏩专栏分类&#xff1a;c &#x1f69a;代码仓库&#xff1a;小小unicorn的学习足迹&#x1f69a; &#x1f339;&#x1f339;&#x1f339;关注我带你学习编程知识 前面我们讲的线性表的顺序存储结构。它…...

Python小知识 - 八大排序算法

八大排序算法 排序算法是计算机科学中非常重要的一个研究领域。排序算法可以分为内部排序和外部排序&#xff0c;内部排序是数据记录在计算机内部&#xff0c;而外部排序是数据记录在计算机外部&#xff0c;这里我们主要讨论内部排序。 内部排序中的算法大致可以归纳为四类&…...

安卓动态申请权限

我们在使用一些官方app时&#xff0c;刚下载进去之后经常会弹出各种各样的权限获取请求&#xff0c;今天简单学习了下&#xff0c;希望不会误人子弟哈哈哈哈。 一、将需要用到的权限添加到Manifest清单里 <uses-permission android:name"android.permission.WRITE_EXT…...

关于亚马逊云科技云技能孵化营学习心得

1、活动介绍 本活动主要是面向想要全面了解亚马逊云科技 (Amazon Web Services) 云的个人&#xff0c;而不受特定技术角色的限制。内容包括亚马逊云科技云概念、亚马逊云科技服务、安全性、架构、定价和支持等等&#xff0c;此外还可以参加亚马逊的认证考试。 2、学习过程 该…...

计算机安全学习笔记(III):强制访问控制 - MAC

基本概念 强制访问控制是一种高级访问控制机制&#xff0c;旨在通过强制执行事先定义的安全策略&#xff0c;实现资源和信息的严格保护。与自主访问控制&#xff08;Discretionary Access Control&#xff0c;DAC&#xff09;不同&#xff0c;MAC 的控制权不由用户自身决定&am…...

java判断ip是否为指定网段

具体网络知识原理请看这个博文 /**** param address servletRequest.getRemoteAddr();* param host servletRequest.getRemoteHost();* return* Description 检验IP是否符合安全限定*/private boolean ipIsInNet(String address, String host){Set<String> iPset allow…...

百度销售是做什么/搜索引擎优化策略包括

UGUI怎么显示一张图片&#xff1f;从原理上来说&#xff0c;显示图片和其他渲染一样&#xff0c;需要的也是mesh和material。所以我们要看的就是怎么把mesh和material传给引擎。UI的渲染可以分三部分来看CanvasUpdateRegistry负责驱动&#xff0c;也就是通知需要渲染的UI组件&a…...

河间哪里有做网站的/广州最新疫情通报

1 问题 给定一个二叉树&#xff0c;判断它是否是高度平衡的二叉树。 本题中&#xff0c;一棵高度平衡二叉树定义为&#xff1a;一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。 示例 1: 给定二叉树 [3,9,20,null,null,15,7] 返回 true 。 示例 2: 给定二叉树…...

1000学习做网站贵吗/观看b站的广告网站平台

2019独角兽企业重金招聘Python工程师标准>>> binSort.cpp /** 这里是主函数的执行文件 * binSort.cpp */ #include<iostream> #include"studentrecord1.h" #include"chainwithiterator.h" #include"myexceptions.h"void…...

厦门房地产网站建设/小红书关键词热度查询

K8s已经成为一线大厂分布式平台的标配技术。你是不是还在惆怅怎么掌握它&#xff1f;来这里&#xff0c;大型互联网公司一线工程师亲授&#xff0c;不来虚的&#xff0c;直接上手实战&#xff0c;3天时间带你搭建K8s平台&#xff0c;快速学会K8s&#xff0c;点击下方图片可了解…...

建设银行客户端官方网站/正规seo排名外包

计算科学导论论文摘要&#xff1a;在计算科学与导论这门课程中&#xff0c;我们了解到了计算机科学是研制并且利用计算机完成数据处理任务的理论、方法和技术的学科。计算机的根本功能是数据处理。现代计算机体系在冯诺依曼模式上建立&#xff0c;包括硬件系统和软件系统两大部…...

网站备案关闭/新手怎么做网络销售

“没有缘创派&#xff0c;可能我如今还在迷茫的找职业定位。”事隔七八年。当我昨天中午再次见到老朋友冉红宇的时候&#xff0c;他第一句话是这样说的。冉红宇&#xff0c;丰羽创业孵化器的合伙人。这个位于最知名的北京创业一条街上的孵化器&#xff0c;正在孵化三个项目。当…...