C#,数值计算——用于积分函数与方法的Stiel类的计算方法与源程序

1 文本格式
using System;
namespace Legalsoft.Truffer
{
public class Stiel
{
public class pp : UniVarRealValueFun, RealValueFun
{
public Stiel st { get; set; } = null;
public pp()
{
}
public double funk(double[] x)
{
double pval = st.p(x[0]);
return pval * st.wt1(x[0], x[0]) * pval;
}
public double funk(double t)
{
double x = st.fx(t);
double pval = st.p(x);
return pval * st.wt2(x) * st.fdxdt(t) * pval;
}
}
public class ppx : UniVarRealValueFun, RealValueFun
{
public Stiel st { get; set; } = null;
public ppx()
{
}
public double funk(double[] x)
{
return st.ppfunc.funk(new double[] { x[0], x[1] }) * x[0];
}
public double funk(double t)
{
return st.ppfunc.funk(t) * st.fx(t);
}
}
public pp ppfunc { get; set; } = new pp();
public ppx ppxfunc { get; set; } = new ppx();
public int j { get; set; }
public int n { get; set; }
public double aa { get; set; }
public double bb { get; set; }
public double hmax { get; set; }
public double[] a { get; set; }
public double[] b;
public Quadrature s1 { get; set; }
public Quadrature s2 { get; set; }
public double p(double x)
{
double pval = 0.0;
double pj;
double pjm1;
if (j == 0)
{
return 1.0;
}
else
{
pjm1 = 0.0;
pj = 1.0;
for (int i = 0; i < j; i++)
{
pval = (x - a[i]) * pj - b[i] * pjm1;
pjm1 = pj;
pj = pval;
}
}
return pval;
}
public Stiel(int nn, double aaa, double bbb, double hmaxx)
{
this.n = nn;
this.aa = aaa;
this.bb = bbb;
this.hmax = hmaxx;
this.a = new double[nn];
this.b = new double[nn];
s1 = new DErule(ppfunc, aa, bb, hmax);
s2 = new DErule(ppxfunc, aa, bb, hmax);
}
public Stiel(int nn, double aaa, double bbb)
{
this.n = nn;
this.aa = aaa;
this.bb = bbb;
this.a = new double[nn];
this.b = new double[nn];
s1 = new Trapzd(ppfunc, aa, bb);
s2 = new Trapzd(ppxfunc, aa, bb);
}
public double quad(Quadrature s)
{
const double EPS = 3.0e-11;
double MACHEPS = float.Epsilon;
const int NMAX = 11;
double olds = 0.0;
double sum;
s.n = 0;
for (int i = 1; i <= NMAX; i++)
{
sum = s.next();
if (i > 3)
{
if (Math.Abs(sum - olds) <= EPS * Math.Abs(olds))
{
return sum;
}
}
if (i == NMAX)
{
if (Math.Abs(sum) <= MACHEPS && Math.Abs(olds) <= MACHEPS)
{
return 0.0;
}
}
olds = sum;
}
throw new Exception("no convergence in quad");
}
public void get_weights(double[] x, double[] w)
{
double amu0;
double c;
double oldc = 1.0;
if (n != x.Length)
{
throw new Exception("bad array size in Stiel");
}
for (int i = 0; i < n; i++)
{
j = i;
c = quad(s1);
b[i] = c / oldc;
a[i] = quad(s2) / c;
oldc = c;
}
amu0 = b[0];
GaussianWeights.gaucof(a, b, amu0, x, w);
}
public double wt1(double x, double del) { return -9999; }
public double wt2(double x) { return -9999; }
public double fx(double t) { return -9999; }
public double fdxdt(double t) { return -9999; }
}
}
2 代码格式
using System;namespace Legalsoft.Truffer
{public class Stiel{public class pp : UniVarRealValueFun, RealValueFun{public Stiel st { get; set; } = null;public pp(){}public double funk(double[] x){double pval = st.p(x[0]);return pval * st.wt1(x[0], x[0]) * pval;}public double funk(double t){double x = st.fx(t);double pval = st.p(x);return pval * st.wt2(x) * st.fdxdt(t) * pval;}}public class ppx : UniVarRealValueFun, RealValueFun{public Stiel st { get; set; } = null;public ppx(){}public double funk(double[] x){return st.ppfunc.funk(new double[] { x[0], x[1] }) * x[0];}public double funk(double t){return st.ppfunc.funk(t) * st.fx(t);}}public pp ppfunc { get; set; } = new pp();public ppx ppxfunc { get; set; } = new ppx();public int j { get; set; }public int n { get; set; }public double aa { get; set; }public double bb { get; set; }public double hmax { get; set; }public double[] a { get; set; }public double[] b;public Quadrature s1 { get; set; }public Quadrature s2 { get; set; }public double p(double x){double pval = 0.0;double pj;double pjm1;if (j == 0){return 1.0;}else{pjm1 = 0.0;pj = 1.0;for (int i = 0; i < j; i++){pval = (x - a[i]) * pj - b[i] * pjm1;pjm1 = pj;pj = pval;}}return pval;}public Stiel(int nn, double aaa, double bbb, double hmaxx){this.n = nn;this.aa = aaa;this.bb = bbb;this.hmax = hmaxx;this.a = new double[nn];this.b = new double[nn];s1 = new DErule(ppfunc, aa, bb, hmax);s2 = new DErule(ppxfunc, aa, bb, hmax);}public Stiel(int nn, double aaa, double bbb){this.n = nn;this.aa = aaa;this.bb = bbb;this.a = new double[nn];this.b = new double[nn];s1 = new Trapzd(ppfunc, aa, bb);s2 = new Trapzd(ppxfunc, aa, bb);}public double quad(Quadrature s){const double EPS = 3.0e-11;double MACHEPS = float.Epsilon;const int NMAX = 11;double olds = 0.0;double sum;s.n = 0;for (int i = 1; i <= NMAX; i++){sum = s.next();if (i > 3){if (Math.Abs(sum - olds) <= EPS * Math.Abs(olds)){return sum;}}if (i == NMAX){if (Math.Abs(sum) <= MACHEPS && Math.Abs(olds) <= MACHEPS){return 0.0;}}olds = sum;}throw new Exception("no convergence in quad");}public void get_weights(double[] x, double[] w){double amu0;double c;double oldc = 1.0;if (n != x.Length){throw new Exception("bad array size in Stiel");}for (int i = 0; i < n; i++){j = i;c = quad(s1);b[i] = c / oldc;a[i] = quad(s2) / c;oldc = c;}amu0 = b[0];GaussianWeights.gaucof(a, b, amu0, x, w);}public double wt1(double x, double del) { return -9999; }public double wt2(double x) { return -9999; }public double fx(double t) { return -9999; }public double fdxdt(double t) { return -9999; }}
}
相关文章:
C#,数值计算——用于积分函数与方法的Stiel类的计算方法与源程序
1 文本格式 using System; namespace Legalsoft.Truffer { public class Stiel { public class pp : UniVarRealValueFun, RealValueFun { public Stiel st { get; set; } null; public pp() { } public doubl…...
报错:为什么数组明明有内容但打印的length是0
文章目录 一、问题二、分析三、解决1.将异步改为同步2.设置延迟 一、问题 在日常开发中,for 循环遍历调用接口,并将接口返回的值进行拼接,即push到一个新的数组中,但是在for循环内部是可以拿到这个新的数组,而for循环…...
go gin gorm连接postgres postgis输出geojson
go gin gorm连接postgres postgis输出geojson 1. 技术环境 go-gin-gorm postgres-postgis go vscode环境安装-智能提示配置 2. 简单实现代码 思路就是:采用原生sql实现查询、更新等,采用gorm的raw来执行sql语句 package mainimport ("fmt"&q…...
4. Java 的线程安全机制之`volatile`
前言:在多线程编程过程中,线程安全是一个非常重要的概念,它有助于保证多线程程序的正确性和健壮性。其中,volatile是实现线程安全的一种方式,保证内存的立马可见,下面将会详细介绍。 文章目录 是什么为什么…...
Vue + Element UI前端篇(二):Vue + Element 案例
Vue Element UI 实现权限管理系统 前端篇(二):Vue Element 案例 导入项目 打开 Visual Studio Code,File --> add Folder to Workspace,导入我们的项目。 安装 Element 安装依赖 Element 是国内饿了么公司提…...
Qt5中connect信号槽无效问题 C++
在写QT的组件信号槽时遇到一个问题,我的QspinBox组件用connect连接函数总是无效,解决办法是: 在QT5中推荐使用如下形式连接槽函数: QObject::connect(ui->spinBox,QOverload<int>::of(&QSpinBox::valueChanged),th…...
服务端 TCP 连接的 TIME_WAIT 过多问题的分析与解决
https://blog.csdn.net/zxlyx/article/details/120397006 本文给出一个 TIME_WAIT 状态的 TCP 连接过多的问题的解决思路,非常典型,大家可以好好看看,以后遇到这个问题就不会束手无策了。 问题描述 模拟高并发的场景,会出现批量…...
【Unity3D赛车游戏优化篇】【十】汽车粒子特效和引擎咆哮打造极速漂移
👨💻个人主页:元宇宙-秩沅 👨💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨💻 本文由 秩沅 原创 👨💻 收录于专栏:Uni…...
肖sir__设计测试用例方法之编写测试用例12
编写测试用例 一、用例模板 案例1: 案例2: 案例3: 二、测试工作重点: 编写测试用例、 执行用例 (依据测试用例) 三、测试流程(h模型) 1、拿到需求 2、编写测试计划(…...
Android 11.0 ota升级之Systemui下拉状态栏quick_settings_tiles_default值减少时更新的功能实现
1.前言 在11.0的系统rom定制化开发中,在定制功能需求中,在进行systemui的下拉状态栏定制以后,当需要ota升级的时候,发现在systemui下拉状态栏的快捷功能键部分去掉的 一些快捷功能并没有减少,这是因为systemui有缓存造成的只有清理缓存或者恢复出厂设置后才正常,所以今天…...
Android Studio中创建java项目
1.创建普通的android工程 2.创建一个module 3.module类型选择java library 4.填写libary和class的名字 5.生成的工程如图所示 6.然后点击Run --- Edit Configurations... 选择Application选项 设置所需要的参数 选中myjavalib后点击OK。然后打开刚创建的lib的gradle 编辑gradl…...
冠达管理:“旺季”来临,煤炭板块走高,云煤能源、陕西黑猫涨停
煤炭板块1日盘中发力走高,截至发稿,云煤动力、陕西黑猫涨停,兖矿动力涨超7%,晋控煤业、华阳股份涨超6%,山西焦煤、平煤股份涨超5%。 组织表明,动力大通胀背景下,未来3-5年煤炭供需偏紧的格局仍…...
【EI检索】第四届公共卫生与数据科学国际学术研讨会(ICPHDS 2023)
第四届公共卫生与数据科学国际学术研讨会(ICPHDS 2023) 2023 4th International Conference on Public Health and Data Science(ICPHDS 2023) 第四届公共卫生与数据科学国际学术研讨会(ICPHDS 2023)将于…...
对时序数据进行分类与聚类
我在最近的工作中遇到了一个问题,问题是我需要根据银行账户在一定时间内的使用信息对该账户在未来的一段时间是否会被销户进行预测。这是一个双元值的分类问题,只有两种可能,即会被销户和不会被销户。针对这个问题一般来说有两种解决策略。 …...
Win10如何找回图片查看器
近期有小伙伴反映在将Win10升级之后发现电脑自带的图片查看器没有了,这是怎么回事,该怎么找回呢,下面小编就给大家详细介绍一下Win10找回图片查看器的方法,有需要的小伙伴快来和小编一起阅读看看吧。 win10找回windows照片查看器…...
【脑机接口】基于运动想象的康复指导在脑卒中偏瘫患者中的应用
【摘要】 目的 探讨运动想象康复指导对脑卒中偏瘫患者的康复效果及意义。 方法 将 60例脑卒中偏瘫患者随机分为观察组(n31)和对照组(n29),对照组的康复训练指导采用讲解示范法,观察组采用运动想象法 。比较两组 患者 的运 动功能 、日常生活 活动能力及 …...
vue-cli中vuex下$store”未在实例上定义
这里写目录标题 一、版本的问题二、vuex中的代码 一、版本的问题 vuex版本不对,获取不到store,vue默认vue3版本,vuex默认vuex4版本,vuex4只能在vue3中使用,在vue2中能使用vuex3,那么不能默认下载最新的版本 npm instal…...
AutoSAR配置与实践(实践篇)12.1 BSW WatchDog功能的配置和实现
AutoSAR配置与实践(实践篇)12.1 BSW WatchDog功能的配置和实现 BSW WatchDog功能的配置和实现一、Wdg监控需求二、WdgM状态管理原理2.1 WdgM状态管理中的配置项和层次关系2.2 SE 本地状态(Local Status)管理2.3 全局状态(Global Status)管理三、Alive/ Deadline/ Program Flo…...
【UI自动化测试】Jenkins配置
前一段时间帮助团队搭建了UI自动化环境,这里将Jenkins环境的一些配置分享给大家。 背景: 团队下半年的目标之一是实现自动化测试,这里要吐槽一下,之前开发的测试平台了,最初的目的是用来做接口自动化测试和性能测试&…...
C#使用DataTable的Select方法来选择特定的字段
在C#中,可以使用DataTable的Select方法来选择特定的字段。要选择特定的字段,可以使用Select方法的参数来指定要返回的列的名称,然后将结果存储在一个新的DataTable中。以下是一个示例: using System; using System.Data; class …...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...
【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
中医有效性探讨
文章目录 西医是如何发展到以生物化学为药理基础的现代医学?传统医学奠基期(远古 - 17 世纪)近代医学转型期(17 世纪 - 19 世纪末)现代医学成熟期(20世纪至今) 中医的源远流长和一脉相承远古至…...
VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...
STM32HAL库USART源代码解析及应用
STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...
