基于小波哈尔法(WHM)的一维非线性IVP测试问题的求解(Matlab代码实现)

news2024/11/26 16:33:41

💥1 概述

小波哈尔法(WHM)是一种求解一维非线性初值问题(IVP)的数值方法。它基于小波分析的思想,通过将原始问题转化为小波空间中的线性问题,然后进行求解。以下是一维非线性IVP测试问题的求解步骤:

1. 确定目标问题:首先,确定你要解决的一维非线性IVP测试问题。这可能涉及到一个非线性的微分方程和一些边界条件。

2. 小波基函数选择:选择适当的小波基函数来表示问题中的解。小波基函数应该具有良好的局部特性和适应性,以便更好地表示原始问题。常见的小波基函数包括Haar小波、Daubechies小波和Symlet小波等。

3. 建立小波变换:通过将问题转化为小波空间中的线性问题来建立小波变换。这可以通过将解函数和微分方程表示为小波基函数的线性组合来实现。

4. 线性方程求解:将小波变换应用于原始问题后,将其转化为一组线性方程。通过求解这组线性方程来获得小波系数,从而得到原始问题的近似解。

5. 逆小波变换:将得到的小波系数和小波基函数的逆变换应用于小波空间,将解转换回原始空间。这将给出原始问题的近似解。

6. 结果评估:评估求解结果的准确性和收敛性。可以比较近似解与真实解之间的差异,并检查所采用的小波基函数的适用性。

需要注意的是,小波哈尔法(WHM)是一个高级的数值方法,需要掌握小波分析和线性代数的基础知识。在实施过程中,还需进行适当的数值技巧,如数值积分和线性方程求解等。

📚2 运行结果

 

部分代码:

% step 1
% collocation points
J = 3;                              % level of decomposition
N = 2^(J + 1); % N = 2M             % number of basis functions
j = 1:N;                            % index of grid points
x = (j - 0.5) ./ N;                 % grid points

% step 2
% initial values
alpha1 = 0;                         % initial value of a function
beta1  = - 1;                       % initial value of the first derivative
a1     = beta1 - alpha1;

% step 3
% Newton solver
W = zeros(N,N);
f = zeros([N 1]);
a = zeros([N 1]);

epsilon = 1e-4;
r = ones([N 1]);

iter_ind = 0;
tic
while max(r) > epsilon   
    for j = 1:N
        % f(x) computation 
        % H, P1, P2 computation
        H = 0;               
        P1 = 0;
        P2 = 0;
        for i = 1:N
            H  = H  + a(i) * haar(x(j), i, J);
            P1 = P1 + a(i) * p1(x(j), i, J);
            P2 = P2 + a(i) * p2(x(j), i, J);            
        end;
        
        f(j) = 2 * (alpha1 + beta1 * x(j) + P2) * ...
            (beta1 + P1) + H;  
        
        
        % W(x) matrix computation        
        for k = 1:N
            W(j,k) = 2 * p2(x(j),k,J) * (beta1 + P1) + ...
                2 * (alpha1 + beta1 * x(j) + P2) * p1(x(j),k,J) + haar(x(j),k,J);            
        end; % for k
    end; % for j
    
    a_new = W \ (W*a - f);      % linear system solution
    r = abs(a_new - a);         % residual 
    disp(['iteration: ' num2str(iter_ind) ' error Newton: ' num2str(max(r))])   
    
    % Update variables
    a = a_new;
    iter_ind = iter_ind + 1;
end; % while
toc

% Reconstruct approximate solution
y = zeros(N,1);
for j = 1:N    
    S = 0;
    for i = 1:N
        S = S + a(i) * p2(x(j),i,J);
    end
    y(j) = alpha1 + x(j) * beta1 + S;
end; % for

%% Exact solution
yexact = - tan(x);
% critical point pi/2 ~= 1.5708
x_zero1 = 0.5 * pi; 

%% Runge - Kutta method
[x, y1] = ode113('model0', x, [alpha1 beta1]);

%% Plot graphics
set(0,'defaulttextinterpreter','latex')
set(0,'defaultaxesfontname','times')
set(0,'defaultaxesfontsize',12)

oft = 0.01;

% fig:01
figure('color','w')
plot(x,yexact,'g',x,y,'rs',x,y1(:,1),'b.')
xlabel('$x$'); ylabel('$y$');
title(['J = ' num2str(J) ', ' '2M = ' num2str(N)])
legend('Exact','WHM', 'RGK')
axis([-oft 1+oft min(yexact)-oft max(yexact)+oft])

% Absolute errors
rRGK = abs(y1(:,1) - yexact');
rWHM = abs(y - yexact');
rRW = abs(y - y1(:,1));

% fig:02
figure('color','w')
plot(x,rRGK,'b.-',x,rWHM,'r.-',x,rRW,'ms-')
xlabel('$x$'); ylabel('Absolute Error');
title('Absolute Error: $\max|y_{numeric} - y_{analytic}|$')
legend('RGK','WHM','Between RGK and WHM',...
    'Location','northoutside','Orientation','horizontal')
axis([-oft 1+oft min([rRGK; rWHM; rRW])-oft max([rRGK; rWHM; rRW])+oft])

%% Disp Errors
disp(['error RGK: ' num2str(max(rRGK)) ' error WHM: ' num2str(max(rWHM)) ...
    ' error RW: ' num2str(max(rRW))])

%% Save data
if flag == 1    
    cd 'dat'
    
    table0 = [x yexact' y y1(:,1)];
    fid = fopen('table0.txt','w');
    fprintf(fid, '%6.2f %6.2f %6.2f %6.2f\n', table0');
    
    fclose(fid);
    disp('Saved.')
 

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1] Siraj-ul-Islam, Imran Aziz, Bozidar Sarler, "The numerical solution 
      of second-order boundary-value problems by collocation method with 
      the Haar wavelets,"Mathematical and Computer Modelling, Vol. 52, 
      No. 9-10, 1577-1590, 2012.

[2] Sahoo, Bishnupriya, "A study on solution of differential equations 
      using Haar wavelet collocation method, MSc thesis, 2012.
 

🌈4 Matlab代码实现

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

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

相关文章

2023年郑州/杭州/深圳CSPM-3中级国标项目管理认证招生

CSPM-3中级项目管理专业人员认证,是中国标准化协会(全国项目管理标准化技术委员会秘书处),面向社会开展项目管理专业人员能力的等级证书。旨在构建多层次从业人员培养培训体系,建立健全人才职业能力评价和激励机制的要…

基于时空RBF神经网络的混沌时间序列预测(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

TCP的三次握手过程

TCP 是面向连接的协议,所以使用 TCP 前必须先建立连接,而建立连接是通过三次握手来进行的。三次握手的过程如下图: 刚开始客户端处于 closed 的状态,服务端处于 listen 状态。 第一次握手:客户端给服务端发一个 SYN 报…

python_day10_复写,类型注解

复写:重写父类属性 class Phone:IMEI Noneproducer "XM"def call_by_5g(self):print("5g网络")# 复写 class myPhone(Phone):producer "HUAWEI"def call_by_5g(self):print("复写")# 调用父类成员:方式1# print(f"…

Notepad++ 安装 compare 插件比较文本

1、打卡Notepad软件,找到插件选项,若是英文版的,则对应选择Plugins->Plugins admin: 2、搜索compare插件,点击安装: 3、此时会弹出一个下载插件页面: 4、很可惜,我网络原因&#…

[游戏开发][Unity] TPS射击游戏相机实现

技术难点:由于是第三人称射击游戏,角色和相机之间有夹角,所以枪口点和准星是有误差的,下面是和平精英手游截图,我用AK射击zhuzi using System.Collections; using System.Collections.Generic; using UnityEngine;publ…

MyBatis 系列2 -- 增加、删除、修改操作

1. 前言 上一系列介绍了MyBatis的背景,以及为什么我们使用MyBatis进行操作数据库,还实现了使用MyBatis进行查询数据库的,接下来我们继续将使用MyBatis操作数据库的其他三种基本操作进行总结. 目录 1. 前言 2. 增加用户操作 3. 修改用户操作 4. 删除用户操作 5. 多表查询操…

unity背景缓动动效

这算是一个很常见的小功能,比如我们在玩横版游戏的时候,背景动画会以一定的频率运动,其实现方式也有很多种。 比如,使用UGUI的imageanimtion动画的方式,自己k桢实现。 还可以使用材质球本身的功能来实现,关…

datatables.editor 2.2 for PHP/JS/NodeJS Crack

使用数据表编辑器在几分钟内创建自定义、完全可编辑的表 编辑器添加了三种编辑模式,以适应任何类型的应用程序 新增功能 编辑 删除 搜索: 名字位置办公室开始日期工资名字位置办公室开始日期工资佐藤爱里会计东京2008-11-28$162,700安吉莉卡拉…

linux服务器中安装java JDK1.8版本

我们远程连接自己的linux服务器 然后 我们先执行 sudo yum update更新一下软件包 然后 有个需要选择的地方 按y 然后 我们可以直接用 yum 来安装Java 1.8版本 执行 sudo yum install java-1.8.0-openjdk然后 问你是否选择按 y即可 搞完之后 我们检查一下 输入 java -vers…

Elasticsearch:什么是矢量搜索以及它如何改进搜索结果

释放矢量搜索的力量:提高搜索结果效率 想象一下这样一个世界:搜索引擎不仅能理解你输入的单词,还能理解它们背后的上下文和含义。 这就是矢量搜索发挥作用的地方,它彻底改变了我们查找信息的方式并改善了用户的搜索体验。 在本文…

Erdas专题图制作

1.导入需要做图的数据 2.在新建一个地图view 3.绘制图框 出现以下对话框,在已打开的Viewer中图象上任意位置点一下 框选需要绘制的区域 框选完成后,回到窗口,再次确定输出地图所包含的实际区域,点击ok即可完成框选 得到如下图像框…

【Python】数据可视化利器PyCharts在测试工作中的应用

点击跳转原文:【Python】数据可视化利器PyCharts在测试工作中的应用 实际应用:常态化性能压测数据统计 import random from pyecharts.charts import Line, Bar, Grid, Pie, Page from pyecharts import options as opts # 查询过去 8 次数据 time_rang…

序列模型学习

1、序列模型的应用场景(RNN) (1)、在进行语音识别时,给定了一个输入音频片段 𝑥,并要求输出对应的文字记录 𝑦。这个 例子里输入和输出数据都是序列模型,因为 &#x1…

动态规划——买卖股票的最佳时机含手续费

题目链接 leetcode在线oj题——买卖股票的最佳时机含手续费 题目描述 给定一个整数数组 prices,其中 prices[i]表示第 i 天的股票价格 ;整数 fee 代表了交易股票的手续费用。 你可以无限次地完成交易,但是你每笔交易都需要付手续费。如果…

美的代工厂雪祺电气过会:拟募资6亿元,产能利用率下滑仍要扩产

撰稿|行星 来源|贝多财经 近日,深圳证券交易所主板披露的信息显示,合肥雪祺电气股份有限公司(以下简称“雪祺电气”)获得上市委会议通过。据贝多财经了解,雪祺电气的上市申请材料于2023年2月28日获得受理。 天眼查信…

Ceph 块存储系统 RBD 接口

-创建 Ceph 块存储系统 RBD 接口- 1、创建一个名为 rbd-demo 的专门用于 RBD 的存储池 ceph osd pool create rbd-demo 64 642、将存储池转换为 RBD 模式 ceph osd pool application enable rbd-demo rbd3、初始化存储池 rbd pool init -p rbd-demo # -p 等同于 --pool4、…

前端多行文本省略号

.title {height: 4rem;line-height: 2rem;// 多行文本省略号overflow: hidden;font-size: 1.4rem;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 2;}

Rancher 系列文章-Rancher 升级

概述 之前在 天翼云上用 4 台机器安装了一个 1 master(及 etcd) 3 node 的 K3S 集群,并在其上使用 Helm 安装了 Rancher 2.6.3 版本。 前几天发现 Rancher 官方推荐的最新版为:v2.6.4 所以决定先后对 Rancher 和 K3S 集群进行升级。 根据…

迁移到强化学习的 6 个理由

胡巴雷拉 从 https://en.wikipedia.org/wiki/Reinforcement_learning 一、说明 强化学习(RL)是机器学习的一个领域,涉及智能体应该如何在环境中采取行动,以最大化累积奖励的概念。强化学习是三种基本的机器学习范式之一&#xff…