采用不高于3次的勒让德多项式拟合原函数

2024-08-24 21:28

本文主要是介绍采用不高于3次的勒让德多项式拟合原函数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

利用勒让德多项式进行拟合的区域是[-1,1],如果不是这个区域,比如是[a,b],利用x=\frac{a+b}{2}+\frac{b-a}{2}t转化到[-1,1]。

参考以下例题计算系数

C语言代码如下

//用三阶的勒让德多项式进行拟合
#include<math.h>
#include<stdio.h>
#include "main.c"
double f(double x);
double fl1(double x);
double fl2(double x);
double fl3(double x);
int main(){double a=-1.0,b=1.0;int n=600;double c0=integrate(f,a,b,n)*0.5;double c1=integrate(fl1,a,b,n)*1.5;double c2=integrate(fl2,a,b,n)*2.5;double c3=integrate(fl3,a,b,n)*3.5;double x=1;printf("%lf %lf %lf %lf",c0,c1,c2,c3);
}
//要拟合的函数
double f(double x){return exp(x);
}
//拟合之后的结果
double f1(double x,double c0,double c1,double c2,double c3){return c0-0.5*c2+x*(c1-1.5*c3)+x*x*1.5*c2+pow(x,3)*2.5*c3;
}
//1到3阶要积分的函数
double fl1(double x){return x*f(x);
}
double fl2(double x){return (1.5*x*x-0.5)*f(x);
}
double fl3(double x){return (2.5*pow(x,3)-1.5*x)*f(x);
}

integrate为求积分的函数,见下

//梯形公式计算数值积分,a下限,b上限,n分的区间个数
double integrate(double (*f)(double), double a, double b, int n) {double h = (b - a) / n; // 区间宽度double sum = 0.5 * (f(a) + f(b)); // 初始值int i;for (i = 1; i < n; i++) {sum += f(a + i * h);}return h * sum;
}

如果用MATLAB,则可以使用函数句柄

fun=@(x) exp(x);
f1=@(x) x.*fun(x);
f2=@(x) (1.5.*x.*x-0.5).*fun(x);
f3=@(x) (2.5.*x.^3-1.5.*x).*fun(x);
a=-1;
b=1;
c0=0.5*integral(fun,a,b);
c1=1.5*integral(f1,a,b);
c2=2.5*integral(f2,a,b);
c3=3.5*integral(f3,a,b);
fun1=@(x) c0-0.5*c2+(c1-1.5*c3)*x+1.5*c2*x.^2+2.5*c3*x.^3;
fun1(1)

这篇关于采用不高于3次的勒让德多项式拟合原函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1103645

相关文章

OpenCV结构分析与形状描述符(11)椭圆拟合函数fitEllipse()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C++11 算法描述 围绕一组2D点拟合一个椭圆。 该函数计算出一个椭圆,该椭圆在最小二乘意义上最好地拟合一组2D点。它返回一个内切椭圆的旋转矩形。使用了由[90]描述的第一个算法。开发者应该注意,由于数据点靠近包含的 Mat 元素的边界,返回的椭圆/旋转矩形数据

SigLIP——采用sigmoid损失的图文预训练方式

SigLIP——采用sigmoid损失的图文预训练方式 FesianXu 20240825 at Wechat Search Team 前言 CLIP中的infoNCE损失是一种对比性损失,在SigLIP这个工作中,作者提出采用非对比性的sigmoid损失,能够更高效地进行图文预训练,本文进行介绍。如有谬误请见谅并联系指出,本文遵守CC 4.0 BY-SA版权协议,转载请联系作者并注

sqlite不支持中文排序,采用java排序

方式一 不支持含有重复字段进行排序 /*** sqlite不支持中文排序,改用java排序* 根据指定的对象属性字段,排序对象集合,顺序* @param list* @param field* @return*/public static List sortListByField(List<?> list,String field){List temp = new ArrayList(

处理List采用并行流处理时,通过ForkJoinPool来控制并行度失控的问题

在使用parallelStream进行处理list时,如不指定线程池,默认的并行度采用cpu核数进行并行,这里采用ForJoinPool来控制,但循环中使用了redis获取key时,出现失控。具体上代码。 @RunWith(SpringRunner.class)@SpringBootTest(classes = Application.class)@Slf4jpublic class Fo

6. 深度学习中的正则化技术:防止过拟合

引言 过拟合是深度学习模型在训练过程中常遇到的挑战。过拟合会导致模型在训练数据上表现良好,但在新数据上表现不佳。为了防止过拟合,研究者们提出了多种正则化技术,如L1/L2正则化、Dropout、数据增强等。这些技术通过约束模型的复杂度或增加数据的多样性,有效提高了模型的泛化能力。本篇博文将深入探讨这些正则化技术的原理、应用及其在实际深度学习任务中的效果。 1. 过拟合的原因与影响 过拟合通常

Banana Pi BPI-SM9 AI 计算模组采用算能科技BM1688芯片方案设计

产品概述 香蕉派 Banana Pi BPI-SM9 16-ENC-A3 深度学习计算模组搭载算能科技高集成度处理器 BM1688,功耗低、算力强、接口丰富、兼容性好。支持INT4/INT8/FP16/BF16/FP32混合精度计算,可支持 16 路高清视频实时分析,灵活应对图像、语音、自然语言等场景,可集成于智算服务器、边缘智算盒、工控机、无人机、AIOT等多种类型产品。 Banana

活动系统开发之采用设计模式与非设计模式的区别-非设计模式

1、父类Base.php <?php/*** 初始化控制器* User: Administrator* Date: 2022/9/26* Time: 18:00*/declare (strict_types = 1);namespace app\controller;use app\model\common\Token;use app\BaseController;use app\B

828华为云征文|采用华为云Flexus云服务器X实例部署YOLOv3算法完成目标检测

文章目录 一、前言1.1 开发需求1.2 Flexus云服务器介绍1.3 YOLOv3目标检测算法1.4 客户端开发思路1.5 客户端运行效果 二、服务器选购2.1 登录官网2.2 选购服务器2.3 选择服务器区域2.4 选择服务器规格2.5 选择系统镜像2.6 选择存储盘2.7 配置密码2.8 配置云备份2.9 确认配置2.10 立即购买2.10 后台控制台 三、服务器登录3.1 查看服务

算法笔记02--归纳法之多项式求值(Horner规则)

多项式求值 假设有n+2个实数a0,a1,...,an和x的序列,求多项式 p_nx = a_nx^n + a_n-1x^n-1 + ...+ a_1x + a_0; 则需要乘法:n+n-1 + ...+2+1 = n(n+1)/2 需要加法:n 可见算法效率为O(n^2) 而p_nx = ((...((((a_n)x + a_n-1)x + a_n-2)x + a_n-3)....)

沐风老师3DMax地形拟合插件使用方法详解

3DMax地形拟合插件使用教程                       3DMax地形拟合插件,只需单击几下鼠标,即可将地形表面与道路对齐。它很容易使用。 (注意:如果不仔细阅读,会误认为是这是一个道路拟合(投影)到地形的插件,实际上恰恰相反,这是一个地面拟合到道路的插件。)            【适用版本】 3dMax2010及更高版本            【安