C#,数值计算——插值和外推,二维三次样条插值(Spline2D_interp)的计算方法与源程序

2023-12-05

1 文本格式

using System;

namespace Legalsoft.Truffer
{
/// <summary>
/// 二维三次样条插值
/// Object for two-dimensional cubic spline interpolation on a matrix.Construct
/// with a vector of x1 values, a vector of x2 values, and a matrix of tabulated
/// function values yij.Then call interp for interpolated values.
/// </summary>
public class Spline2D_interp
{
private int[,] bcucof_wt = new int[,] {
{  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 0 },
{  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0,  0 },
{ -3,  0,  0,  3,  0,  0,  0,  0, -2,  0,  0, -1,  0,  0,  0,  0 },
{  2,  0,  0, -2,  0,  0,  0,  0,  1,  0,  0,  1,  0,  0,  0,  0 },
{  0,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
{  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0 },
{  0,  0,  0,  0, -3,  0,  0,  3,  0,  0,  0,  0, -2,  0,  0, -1 },
{  0,  0,  0,  0,  2,  0,  0, -2,  0,  0,  0,  0,  1,  0,  0,  1 },
{ -3,  3,  0,  0, -2, -1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
{  0,  0,  0,  0,  0,  0,  0,  0, -3,  3,  0,  0, -2, -1,  0,  0 },
{  9, -9,  9, -9,  6,  3, -3, -6,  6, -6, -3,  3,  4,  2,  1,  2 },
{ -6,  6, -6,  6, -4, -2,  2,  4, -3,  3,  3, -3, -2, -1, -1, -2 },
{  2, -2,  0,  0,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
{  0,  0,  0,  0,  0,  0,  0,  0,  2, -2,  0,  0,  1,  1,  0,  0 },
{ -6,  6, -6,  6, -3, -3,  3,  3, -4,  4,  2, -2, -2, -2, -1, -1 },
{  4, -4,  4, -4,  2,  2, -2, -2,  2, -2, -2,  2,  1,  1,  1,  1 }
};

private int m { get; set; }
private int n { get; set; }
private double[,] y { get; set; }
private double[] x1 { get; set; }
private double[] yv { get; set; }
private Spline_interp[] srp { get; set; }

public Spline2D_interp(double[] x1v, double[] x2v, double[,] ym)
{
this.m = x1v.Length;
this.n = x2v.Length;
this.y = ym;
this.yv = new double[m];
this.x1 = x1v;
this.srp = new Spline_interp[m];
for (int i = 0; i < m; i++)
{
srp[i] = new Spline_interp(x2v, y[i, 0]);
}
}

public double interp(double x1p, double x2p)
{
for (int i = 0; i < m; i++)
{
yv[i] = (srp[i]).interp(x2p);
}
Spline_interp scol = new Spline_interp(x1, yv);
return scol.interp(x1p);
}

/// <summary>
/// Given arrays y[0..3], y1[0..3], y2[0..3], and y12[0..3], containing the
/// function, gradients, and cross-derivative at the four grid points of a
/// rectangular grid cell(numbered counterclockwise from the lower left), and
/// given d1 and d2, the length of the grid cell in the 1 and 2 directions,
/// this routine returns the table c[0..3][0..3] that is used by routine bcuint
/// for bicubic interpolation.
/// </summary>
/// <param name="y"></param>
/// <param name="y1"></param>
/// <param name="y2"></param>
/// <param name="y12"></param>
/// <param name="d1"></param>
/// <param name="d2"></param>
/// <param name="c"></param>
private void bcucof(double[] y, double[] y1, double[] y2, double[] y12, double d1, double d2, double[,] c)
{
//int[,] bcucof_wt = new int[16, 16]{ bcucof_wt_d };
double d1d2 = d1 * d2;
double[] cl = new double[16];
double[] x = new double[16];

for (int i = 0; i < 4; i++)
{
x[i] = y[i];
x[i + 4] = y1[i] * d1;
x[i + 8] = y2[i] * d2;
x[i + 12] = y12[i] * d1d2;
}
for (int i = 0; i < 16; i++)
{
double xx = 0.0;
for (int k = 0; k < 16; k++)
{
xx += bcucof_wt[i, k] * x[k];
}
cl[i] = xx;
}
int l = 0;
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
c[i, j] = cl[l++];
}
}
}

/// <summary>
/// Bicubic interpolation within a grid square.Input quantities are
/// y, y1, y2, y12 (as described in bcucof); x1l and x1u, the lower and upper
/// coordinates of the grid square in the 1 direction; x2l and x2u likewise for
/// the 2 direction; and x1, x2, the coordinates of the desired point for the
/// interpolation.The interpolated function value is returned as ansy, and the
/// interpolated gradient values as ansy1 and ansy2.This routine calls bcucof.
/// </summary>
/// <param name="y"></param>
/// <param name="y1"></param>
/// <param name="y2"></param>
/// <param name="y12"></param>
/// <param name="x1l"></param>
/// <param name="x1u"></param>
/// <param name="x2l"></param>
/// <param name="x2u"></param>
/// <param name="x1"></param>
/// <param name="x2"></param>
/// <param name="ansy"></param>
/// <param name="ansy1"></param>
/// <param name="ansy2"></param>
/// <exception cref="Exception"></exception>
public void bcuint(double[] y, double[] y1, double[] y2, double[] y12, double x1l, double x1u, double x2l, double x2u, double x1, double x2, ref double ansy, ref double ansy1, ref double ansy2)
{
double d1 = x1u - x1l;
double d2 = x2u - x2l;
double[,] c = new double[4, 4];
bcucof(y, y1, y2, y12, d1, d2, c);
//if (x1u == x1l || x2u == x2l)
if (Math.Abs(x1u - x1l) <= float.Epsilon || Math.Abs(x2u - x2l) <= float.Epsilon)
{
throw new Exception("Bad input in routine bcuint");
}
double t = (x1 - x1l) / d1;
double u = (x2 - x2l) / d2;
ansy = ansy2 = ansy1 = 0.0;
for (int i = 3; i >= 0; i--)
{
ansy = t * ansy + ((c[i, 3] * u + c[i, 2]) * u + c[i, 1]) * u + c[i, 0];
ansy2 = t * ansy2 + (3.0 * c[i, 3] * u + 2.0 * c[i, 2]) * u + c[i, 1];
ansy1 = u * ansy1 + (3.0 * c[3, i] * t + 2.0 * c[2, i]) * t + c[1, i];
}
ansy1 /= d1;
ansy2 /= d2;
}

}
}

2 代码格式

using System;

namespace Legalsoft.Truffer
{
    /// <summary>
    /// 二维三次样条插值
    /// Object for two-dimensional cubic spline interpolation on a matrix.Construct
    /// with a vector of x1 values, a vector of x2 values, and a matrix of tabulated
    /// function values yij.Then call interp for interpolated values.
    /// </summary>
    public class Spline2D_interp
    {
        private int[,] bcucof_wt = new int[,] {
            {  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 0 },
            {  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0,  0 },
            { -3,  0,  0,  3,  0,  0,  0,  0, -2,  0,  0, -1,  0,  0,  0,  0 },
            {  2,  0,  0, -2,  0,  0,  0,  0,  1,  0,  0,  1,  0,  0,  0,  0 },
            {  0,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
            {  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0 },
            {  0,  0,  0,  0, -3,  0,  0,  3,  0,  0,  0,  0, -2,  0,  0, -1 },
            {  0,  0,  0,  0,  2,  0,  0, -2,  0,  0,  0,  0,  1,  0,  0,  1 },
            { -3,  3,  0,  0, -2, -1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
            {  0,  0,  0,  0,  0,  0,  0,  0, -3,  3,  0,  0, -2, -1,  0,  0 },
            {  9, -9,  9, -9,  6,  3, -3, -6,  6, -6, -3,  3,  4,  2,  1,  2 },
            { -6,  6, -6,  6, -4, -2,  2,  4, -3,  3,  3, -3, -2, -1, -1, -2 },
            {  2, -2,  0,  0,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
            {  0,  0,  0,  0,  0,  0,  0,  0,  2, -2,  0,  0,  1,  1,  0,  0 },
            { -6,  6, -6,  6, -3, -3,  3,  3, -4,  4,  2, -2, -2, -2, -1, -1 },
            {  4, -4,  4, -4,  2,  2, -2, -2,  2, -2, -2,  2,  1,  1,  1,  1 }
        };

        private int m { get; set; }
        private int n { get; set; }
        private double[,] y { get; set; }
        private double[] x1 { get; set; }
        private double[] yv { get; set; }
        private Spline_interp[] srp { get; set; }

        public Spline2D_interp(double[] x1v, double[] x2v, double[,] ym)
        {
            this.m = x1v.Length;
            this.n = x2v.Length;
            this.y = ym;
            this.yv = new double[m];
            this.x1 = x1v;
            this.srp = new Spline_interp[m];
            for (int i = 0; i < m; i++)
            {
                srp[i] = new Spline_interp(x2v, y[i, 0]);
            }
        }

        public double interp(double x1p, double x2p)
        {
            for (int i = 0; i < m; i++)
            {
                yv[i] = (srp[i]).interp(x2p);
            }
            Spline_interp scol = new Spline_interp(x1, yv);
            return scol.interp(x1p);
        }

        /// <summary>
        /// Given arrays y[0..3], y1[0..3], y2[0..3], and y12[0..3], containing the
        /// function, gradients, and cross-derivative at the four grid points of a
        /// rectangular grid cell(numbered counterclockwise from the lower left), and
        /// given d1 and d2, the length of the grid cell in the 1 and 2 directions,
        /// this routine returns the table c[0..3][0..3] that is used by routine bcuint
        /// for bicubic interpolation.
        /// </summary>
        /// <param name="y"></param>
        /// <param name="y1"></param>
        /// <param name="y2"></param>
        /// <param name="y12"></param>
        /// <param name="d1"></param>
        /// <param name="d2"></param>
        /// <param name="c"></param>
        private void bcucof(double[] y, double[] y1, double[] y2, double[] y12, double d1, double d2, double[,] c)
        { 
            //int[,] bcucof_wt = new int[16, 16]{ bcucof_wt_d };
            double d1d2 = d1 * d2;
            double[] cl = new double[16];
            double[] x = new double[16];

            for (int i = 0; i < 4; i++)
            {
                x[i] = y[i];
                x[i + 4] = y1[i] * d1;
                x[i + 8] = y2[i] * d2;
                x[i + 12] = y12[i] * d1d2;
            }
            for (int i = 0; i < 16; i++)
            {
                double xx = 0.0;
                for (int k = 0; k < 16; k++)
                {
                    xx += bcucof_wt[i, k] * x[k];
                }
                cl[i] = xx;
            }
            int l = 0;
            for (int i = 0; i < 4; i++)
            {
                for (int j = 0; j < 4; j++)
                {
                    c[i, j] = cl[l++];
                }
            }
        }

        /// <summary>
        /// Bicubic interpolation within a grid square.Input quantities are
        /// y, y1, y2, y12 (as described in bcucof); x1l and x1u, the lower and upper
        /// coordinates of the grid square in the 1 direction; x2l and x2u likewise for
        /// the 2 direction; and x1, x2, the coordinates of the desired point for the
        /// interpolation.The interpolated function value is returned as ansy, and the
        /// interpolated gradient values as ansy1 and ansy2.This routine calls bcucof.
        /// </summary>
        /// <param name="y"></param>
        /// <param name="y1"></param>
        /// <param name="y2"></param>
        /// <param name="y12"></param>
        /// <param name="x1l"></param>
        /// <param name="x1u"></param>
        /// <param name="x2l"></param>
        /// <param name="x2u"></param>
        /// <param name="x1"></param>
        /// <param name="x2"></param>
        /// <param name="ansy"></param>
        /// <param name="ansy1"></param>
        /// <param name="ansy2"></param>
        /// <exception cref="Exception"></exception>
        public void bcuint(double[] y, double[] y1, double[] y2, double[] y12, double x1l, double x1u, double x2l, double x2u, double x1, double x2, ref double ansy, ref double ansy1, ref double ansy2)
        {
            double d1 = x1u - x1l;
            double d2 = x2u - x2l;
            double[,] c = new double[4, 4];
            bcucof(y, y1, y2, y12, d1, d2, c);
            //if (x1u == x1l || x2u == x2l)
            if (Math.Abs(x1u - x1l) <= float.Epsilon || Math.Abs(x2u - x2l) <= float.Epsilon)
            {
                throw new Exception("Bad input in routine bcuint");
            }
            double t = (x1 - x1l) / d1;
            double u = (x2 - x2l) / d2;
            ansy = ansy2 = ansy1 = 0.0;
            for (int i = 3; i >= 0; i--)
            {
                ansy = t * ansy + ((c[i, 3] * u + c[i, 2]) * u + c[i, 1]) * u + c[i, 0];
                ansy2 = t * ansy2 + (3.0 * c[i, 3] * u + 2.0 * c[i, 2]) * u + c[i, 1];
                ansy1 = u * ansy1 + (3.0 * c[3, i] * t + 2.0 * c[2, i]) * t + c[1, i];
            }
            ansy1 /= d1;
            ansy2 /= d2;
        }

    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C#,数值计算——插值和外推,二维三次样条插值(Spline2D_interp)的计算方法与源程序 的相关文章

  • C# 中的协变和逆变

    首先我要说的是 我是一名正在学习 C 编程的 Java 开发人员 因此 我会将我所知道的与我正在学习的进行比较 我已经使用 C 泛型几个小时了 我已经能够在 C 中重现我在 Java 中知道的相同内容 除了几个使用协变和逆变的示例 我正在读
  • Android NDK C++“wstring”支持

    我有用 C 编写的源代码 lib 现在我想在 Android NDK 项目 NDK 6 中编译并使用相同的源代码 lib 我能够编译大多数 C 文件 除了基于 std wstring 的功能 在 Application mk 中 当我指定时
  • 在运行时设置 DataGridView 上的 DataFormatString?

    是否可以在运行时设置 ASP NET DataGridView 中的列或单元格的 DataFormatString 属性 这应该有效 BoundField priceField grid Columns 0 as BoundField pr
  • C# 中附加/分离事件处理程序的不同方式有什么区别

    我的问题有两个部分 首先 我们可以通过以下两种方式附加事件处理程序 myObject MyEvent new EventHandler MyHandler myObject MyEvent MyHandler 据我了解 这两者是等价的 在第
  • 如何将字节块读入结构体

    我有一个需要处理的资源文件 它包含一组文件 首先 资源文件列出了其中包含的所有文件 以及一些其他数据 例如在此结构中 struct FileEntry byte Value1 char Filename 12 byte Value2 byt
  • F10键没被抓住

    I have a Windows Form and there overriden ProcessCmdKey However this works with all of the F Keys except for F10 I am tr
  • 使用反射获取基类的受保护属性值

    I would like to know if it is possible to access the value of the ConfigurationId property which is located in the base
  • 导出到 CSV 时 Gridview 出现空行

    这个问题是由进一步讨论引发的这个问题 https stackoverflow com questions 6674555 export gridview data into csv file 6674589 noredirect 1 com
  • 使用scanf()时如何区分整数和字符

    我只是使用该功能scanf 代码如下 scanf d a printf d a 当我输入1时 它会像我想要的那样打印1 但即使我输入 1a 它也会像以前一样打印 1 当用户输入非整数时 例如 2 3 12ab 1 a 我想向用户显示 输入整
  • 为什么重载方法在 ref 仅符合 CLS 方面有所不同

    公共语言规范对方法重载非常严格 仅允许根据其参数的数量和类型来重载方法 如果是泛型方法 则根据其泛型参数的数量进行重载 根据 csc 为什么此代码符合 CLS 无 CS3006 警告 using System assembly CLSCom
  • c# 如何生成锦标赛括号 HTML 表

    所以我已经被这个问题困扰了三个星期 但我一生都无法弄清楚 我想做的是使用表格获得这种输出 演示 http www esl world net masters season6 hanover sc2 playoffs rankings htt
  • C# 中处理 SQL 死锁的模式?

    我正在用 C 编写一个访问 SQL Server 2005 数据库的应用程序 该应用程序是数据库密集型的 即使我尝试优化所有访问 设置适当的索引等 我预计迟早会遇到死锁 我知道为什么会发生数据库死锁 但我怀疑我能否在某个时候发布不发生死锁的
  • 是什么原因导致 Linq 错误:此方法无法转换为存储表达式?

    我有一堆具有相同 select 语句的 Linq to Entity 方法 所以我想我会很聪明 并将其分离到它自己的方法中以减少冗余 但是当我尝试运行代码时 我得到了以下内容错误 该方法不能转化为 商店表达式 这是我创建的方法 public
  • 微软语音识别速度

    我正在使用微软的语音识别器开发一个小型练习应用程序 对于我正在做的事情来说 我似乎无法让它足够快地识别单个单词 我希望能够正常说话 系统将从我所说的内容中抓取 关键字 并生成一个字符串 目前我正在使用 5 个单词的自定义语法 红 蓝 黄 绿
  • 在 SQL Server 上执行分页的最佳方式是什么?

    我有一个数据库超过200万记录 我需要执行分页以在我的 Web 应用程序上显示 该应用程序每页必须有 10 条记录DataGrid 我已经尝试使用ROW NUMBER 但是这种方式会选择所有 200 万条记录 然后只得到 10 条记录 我也
  • 如何将 CSV 文件读入 .NET 数据表

    如何将 CSV 文件加载到System Data DataTable 根据CSV文件创建数据表 常规 ADO net 功能是否允许这样做 我一直在使用OleDb提供者 但是 如果您正在读取具有数值的行 但希望将它们视为文本 则会出现问题 但
  • 是否有任何不使用公共虚拟方法的正当理由? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 是否有任何不使用公共虚拟方法的正当理由 我在某处读到我们应该避免使用公共虚拟方法 但我想向专家确认这是否是有效的声明 对于良好且稳定的 API
  • 为什么 C# 接口名称前面加上“I”

    这种命名约定背后的基本原理是什么 我没有看到任何好处 额外的前缀只会污染 API 我的想法与康拉德一致response https stackoverflow com a 222502 9898与此相关的question https sta
  • 如何强制执行特定的 UserControl 设计

    我正在编写一个基本用户控件 它将由一堆其他用户控件继承 我需要对所有这些后代控件强制执行某种设计 例如 顶部必须有几个按钮以及一个或两个标签 后代用户控件区域的其余部分可以自由放置任何内容 最初 我认为我可以将一个面板放到 Base Use
  • 将文本从文本文件添加到 PDF 文件[重复]

    这个问题在这里已经有答案了 这是我的代码 using FileStream msReport new FileStream pdfPath FileMode Create step 1 using Document pdfDoc new D

随机推荐

  • uniapp打包的h5项目多了接口调用https://api.next.bspapp.com/client

    产生跨域问题 这个实际上是因为该项目在manifest json文件中勾选了 uni统计配置 导致的 取消勾选就可以了 如果是小程序项目 在小程序开发者工具中添加可信任域名就可以了 可以看看下面这个链接内容 uni app H5跨域问题解决
  • 【go语言开发】编写单元测试

    本文主要介绍使用go语言编写单元测试用例 首先介绍如何编写单元测试 然后介绍基本命令的使用 最后给出demo示例 文章目录 前言 命令 示例 前言 在go语言中编写单元测试时 使用说明 测试文件命名 在 Go 语言中 测试文件的命名应与被测
  • RestTemplate

    一 RestTemplate是什么 RestTemplate是spring提供的Http协议实现类 也就是说导入spring boot starter web的项目可以直接使用RestTemplate类 就是基于模板方法设计模式的 封装了所
  • 租用高防服务器得必要

    租用高防服务器得必要 一 高防服务器的防御性 在网络恶意暴增的情况下 如何避免DDOS和CC 可以说是企业最为关注的问题 而防御因网络出现不整出运转等问题 最后就是选择高防服务器 高防服务器对于维护独立服务器的稳定性和拓展流量都有很大的帮助
  • 8-1运用指针比较三个数的大小

    include
  • springboot——helloworld入门

    springboot 简化spring开发 约定大于配置 提供完成restful的框架 注解 配置等完成 restful restful就是提供一堆标准的方法 例如get put等完成http的网站操作 helloworld入门 注解 Sp
  • windows下bitsandbytes安装报错解决

    RuntimeError CUDA Setup failed despite GPU being available Please run the following command to get more information pyth
  • c++ 构造

    include
  • ssh的实验室预约系统Python项目PHP程序Java安卓APP设计asp.net微信小程序

    文末获取联系方式 我们的毕设辅导团队由一群经验丰富 专业素质过硬的导师组成 他们来自于各个领域的专业人士 具备丰富的实践经验和深厚的学术背景 无论你的毕设是关于Python Java 小程序 asp net PHP nodejs还是其他领域
  • Matlab 生成license

    参考下面两个帖子 https ww2 mathworks cn matlabcentral answers 389888 matlab https www mathworks com matlabcentral answers 131749
  • 机器学习笔记 - 什么是模型量化压缩技术?

    一 简述 我们都知道现实世界是连续的状态 而计算机世界是离散的状态 这是什么意思呢 我们看一下下图 最右边的马力欧 高清 的状态 可以想象现实世界是连续的状态 而电脑世界在图像上呈现的是一格一格子的状态 左图 是离散的状态 所以在计算机世界
  • unordered_set unordered_multiset

    unordered set 名字 描述 insert 插入一个新元素 begin end 返回一个迭代器 指向第一个元素 最后一个元素后的理论元素 count 计算在无序集合容器中特定元素的出现次数 find 搜索元素 clear
  • 线程安全的问题以及解决方案

    线程安全 线程安全的定义 线程安全 某个代码无论是在单线程上运行还是在多线程上运行 都不会产生bug 线程不安全 单线程上运行正常 多线程上运行会产生bug 观察线程不安全 看看下面的代码 public class ThreadTest1
  • Android10.0 系统关于安兔兔显示信息的修改

    1 前言 在10 0的系统定制化开发中 在一些产品开发中 对于安兔兔等第三方检测工具 检测不出某些版本的内核信息等 显示0GB等问题的相关修改 由于不知道安兔兔的检测方式 所以就需要来修改 关于文本上的一些信息了 2 系统关于安兔兔显示信息
  • 打开游戏提示缺少(或找不到)XINPUT1_3.DLL怎么解决

    在电脑使用过程中 我们可能会遇到一些错误提示 其中之一就是xinput1 3 dll丢失 那么 xinput1 3 dll是什么文件 它对电脑有什么影响 本文将详细介绍xinput1 3 dll丢失的原因以及五个详细的解决方法 帮助大家解决
  • GPU深度学习性能的三驾马车:Tensor Core、内存带宽与内存层次结构

    编者按 近年来 深度学习应用日益广泛 其需求也在快速增长 那么 我们该如何选择合适的 GPU 来获得最优的训练和推理性能呢 今天 我们为大家带来的这篇文章 作者的核心观点是 Tensor Core 内存带宽和内存层次结构是影响 GPU 深度
  • 【华为OD机考 统一考试机试C卷】素数之积/RSA加密算法(C++ Java JavaScript Python)

    华为OD机考 统一考试 C卷 D卷 B卷 A卷 2023年11月份 华为官方已经将 华为OD机考 OD统一考试 A卷 B卷 切换到 OD统一考试 C卷 和 OD统一考试 D卷 根据考友反馈 目前抽到的试卷为B卷或C卷 D卷 其中C卷居多 按
  • Gson 自动生成适配器插件

    在json解析方面 我们常见有下面几方面困扰 1 moshi code gen能自动生成适配器 序列化效率比gson快 但是自定义程度不如gson 能java kotlin共存 且解决了默认值的问题 2 gson api 强大自由 但是 第
  • java swing mysql实现的在线考试系统Python项目PHP程序Java安卓APP设计asp.net微信小程序

    文末获取联系方式 我们的毕设辅导团队由一群经验丰富 专业素质过硬的导师组成 他们来自于各个领域的专业人士 具备丰富的实践经验和深厚的学术背景 无论你的毕设是关于Python Java 小程序 asp net PHP nodejs还是其他领域
  • C#,数值计算——插值和外推,二维三次样条插值(Spline2D_interp)的计算方法与源程序

    1 文本格式 using System namespace Legalsoft Truffer