Matlab有限差分法求解狄利克雷(Dirichlet)边界的泊松(Poisson)问题,边界值为任意值

参考l链接:

  1. 有限差分法简介
  2. 有限差分法-二维泊松方程及其Matlab程序实现
  3. 弹性力学方程 有限差分法matlab,泊松方程的有限差分法的MATLAB实现
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%          Matrix method for Poisson Equation         %%%%
%%%   -[u_{xx}+u_{yy}]=f(x,y), xl < x < xr, yb < y < yt  %%%%
%%%         u(x,y) = gl(xl,y) on left boundary,          %%%%  
%%%         u(x,y) = gr(xr,y) on left boundary,          %%%%  
%%%         u(x,y) = gb(x,yb) on left boundary,          %%%%  
%%%         u(x,y) = gt(x,yt) on left boundary,          %%%%  
%%%   Exact soln: u(x,y) = exp(pi*x)*sin(pi*y)           %%%%
%%%         Here f(x,y) = (pi^2-1)*exp(x)*sin(pi*y);     %%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear all; 
clc;
close all;fside = @(x, y) (pi^2-1)*exp(x).*sin(pi*y);
utrue = @(x, y) exp(x).*sin(pi*y);
uleft = @(x, y) exp(x).*sin(pi*y);
uright = @(x, y) exp(x).*sin(pi*y);
ubottom = @(x, y) exp(x).*sin(pi*y);
utop = @(x, y) exp(x).*sin(pi*y);% 求解范围
xleft = 0.0;
xright = 2.0;
ybottom = 0.0;
ytop = 10;%生成网格上的坐标
h=0.01; 
x=[xleft:h:xright]'; 
y=[ybottom:h:ytop]';
N=length(x)-1; 
M=length(y)-1;
[meshX,meshY]=meshgrid(x,y);%解析解
u_analytical=exp(meshX).*sin(pi*meshY);% 网格内部点(不包括边界)
meshX_in=meshX(2:M,2:N); 
meshY_in=meshY(2:M,2:N);%在内部点上生成右端项f(x,y)
f=fside(meshX_in,meshY_in); % 左边界和右边界上的右端项
f(:,1)=f(:,1)+uleft(xleft,y(2:M))/h^2;
f(:,end)=f(:,end)+uright(xright,y(2:M))/h^2;% 下边界和上边界上的右端项
temp2ub = ubottom(x(2:N), ybottom)/h^2;
temp2ut = utop(x(2:N),ytop)/h^2;
f(1,:)=f(1,:)+temp2ub';
f(end,:)=f(end,:)+temp2ut';%构造矩阵D、C、A
I_element=ones(N-1,1);
C=1/h^2*spdiags([-I_element 4*I_element -I_element],[-1 0 1],N-1,N-1);
D=-1/h^2*eye(N-1);
I_mat=ones(M-1,1);
A=kron(eye(M-1),C)+kron(spdiags([I_mat I_mat],[-1 1],M-1,M-1),D);%左除求解
f=f'; 
u=zeros(M+1,N+1);
u(2:M,2:N)=reshape(A\f(:),N-1,M-1)';  % 网格内部点上的解
u(:,1)=uleft(xleft,y);                % 左边界
u(:,end)=uleft(xright,y);             % 右边界u(1,:)=ubottom(x,ybottom)';           % 左边界
u(end,:)=utop(x,ytop)';               % 右边界%画图
figure('name','Exact')
mesh(x,y,u)
hold on
colorbar;
title('Exact solution')
hold onfigure('name', 'abs err')
mesh(x,y, abs(u-u_analytical))
hold on
colorbar;
title('Absolute error')
hold on

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

基于python+vue的OA公文发文管理系统flask-django-php-nodejs

系统根据现有的管理模块进行开发和扩展&#xff0c;采用面向对象的开发的思想和结构化的开发方法对OA公文发文管理的现状进行系统调查。采用结构化的分析设计&#xff0c;该方法要求结合一定的图表&#xff0c;在模块化的基础上进行系统的开发工作。在设计中采用“自下而上”的…

使用 Amazon SageMaker 微调 Llama 2 模型

本篇文章主要介绍如何使用 Amazon SageMaker 进行 Llama 2 模型微调的示例。 这个示例主要包括: Llama 2 总体介绍Llama 2 微调介绍Llama 2 环境设置Llama 2 微调训练 前言 随着生成式 AI 的热度逐渐升高&#xff0c;国内外各种基座大语言竞相出炉&#xff0c;在其基础上衍生出…

部署es集群

我们会在单机上利用docker容器运行多个es实例来模拟es集群。不过生产环境推荐大家每一台服务节点仅部署一个es的实例。 部署es集群可以直接使用docker-compose来完成,但这要求你的Linux虚拟机至少有4G的内存空间 创建es集群 首先编写一个docker-compose文件,内容如下: v…

nginx有哪些功能

Nginx拥有丰富且强大的功能&#xff0c;主要包括但不限于以下几点&#xff1a; Web服务器&#xff1a; 提供HTTP服务&#xff0c;能够高效地分发静态内容&#xff0c;如HTML、CSS、JavaScript、图片、视频等。支持HTTP/2、WebSocket等多种协议。可以设置防盗链、缓存控制、重写…

掌握ChatGPT:如何用AI撰写高质量论文

ChatGPT无限次数:点击直达 掌握ChatGPT&#xff1a;如何用AI撰写高质量论文 在当今信息爆炸的时代&#xff0c;人们不仅需要大量信息&#xff0c;还需要这些信息的整理与创新。人工智能技术正是我们在这个信息化时代最强大的助手之一。ChatGPT是一款基于大型神经网络的语言生成…

测试开发工程师(QA)职业到底需要干些什么?part1:移动端QA

概述 移动端QA测试开发工作主要涉及对移动应用程序进行质量保证和测试的开发工作。以下是移动端QA测试开发人员的主要职责和工作内容&#xff1a; 测试计划和策略制定&#xff1a;参与制定移动应用程序的测试计划和策略&#xff0c;确定测试范围、测试目标和测试方法。考虑到…

Mysql---DML

文章目录 目录 一.DML概述 注入数据&#xff08; Insert&#xff09; 替换数据&#xff08;replace&#xff09; 删除数据 &#xff08;delete&#xff09; 修改数据 &#xff08;update&#xff09; 查询数据 &#xff08;select&#xff09; 二. 多表连接查询 内连接 子…

第十四节 JDBC批量处理

批量处理允许将相关的SQL语句分组到批处理中&#xff0c;并通过对数据库的一次调用来提交它们&#xff0c;一次执行完成与数据库之间的交互。 一次向数据库发送多个SQL语句时&#xff0c;可以减少通信开销&#xff0c;从而提高性能。 不需要JDBC驱动程序来支持此功能。应该使…

5.1.4.4【AI技术新纪元:Spring AI解码】Titan Chat

Amazon Titan 基础模型 亚马逊Titan基础模型(FMs)通过完全托管的API,为客户提供了广泛的高性能图像、多模态嵌入和文本模型选择。Amazon Titan模型由AWS创建,预训练在大型数据集上,使其成为强大的通用模型,支持多种用例,同时也支持AI的负责任使用。用户可以按原样使用,…

Linux环境JMeter脚本性能测试、easyNmon生成监控报告

一、下载JMeter安装包 Jmeter是Java开发的&#xff0c;需要依赖JDK环境&#xff0c;因此我们需提前安装好JDK。 Jmeter是开源的工具&#xff0c;我们直接到官网下载即可。 最新版本下载地址&#xff1a;Apache JMeter - Download Apache JMeter 二、安装JMeter #新建jmete…

【GIT】最好用的git可视化教程网站推荐

最好用可视化学习git 网站:https://learngitbranching.js.org/?demo&localezh_CN 玩遍所有关卡&#xff0c;花半天时间便能掌握git &#x1f603; 本地仓库 基础命令介绍 git commit 提交 git branch <分支名> 创建分支 git checkout <分支名> 切换分支 git…

鸿蒙Harmony应用开发—ArkTS(@State装饰器:组件内状态)

State装饰的变量&#xff0c;或称为状态变量&#xff0c;一旦变量拥有了状态属性&#xff0c;就和自定义组件的渲染绑定起来。当状态改变时&#xff0c;UI会发生对应的渲染改变。 在状态变量相关装饰器中&#xff0c;State是最基础的&#xff0c;使变量拥有状态属性的装饰器&a…

【C++ leetcode】双指针问题

1. 611. 有效三角形的个数 题目 给定一个包含非负整数的数组 nums &#xff0c;返回其中可以组成三角形三条边的三元组个数。 题目链接 . - 力扣&#xff08;LeetCode&#xff09; 画图 和 文字 分析 判断是否是三角形要得到三边&#xff0c;由于遍历三边要套三层循环&#x…

苍穹外卖Day3碰到的元注解

1. Target Target注解用于指定自定义注解可以应用的Java元素范围。它的参数是ElementType的枚举值&#xff0c;可以指定一个或多个范围。使用Target可以限制注解只能用于特定的程序元素&#xff0c;如类、方法、字段等。 import java.lang.annotation.ElementType; import ja…

文兴业:从内蒙古小镇到全球金融巨擘的不凡旅程

文兴业的传奇人生&#xff0c;如同一部跨越时间和地域的史诗&#xff0c;描绘了一个内蒙古小镇男孩如何凭借自己的智慧、勤奋和不屈不挠的精神&#xff0c;在全球商界创造了辉煌成就的故事。这个故事不仅仅是关于个人的成功&#xff0c;更是关于如何通过教育和持续的自我提升&a…

开发调试、远程访问、内网穿透解决方案集合

开发调试、远程访问、内网穿透解决方案集合 前言Cpolar下载安装配置与使用 Ngrok购买隧道下客户端配置与使用 ZeroTier注册与安装创建虚拟网络加入虚拟网络配置授权 花生壳Centos系统Ubuntu系统使用花生壳控制台SN码登录添加映射 Loophole通过CLI方式安装登录与注销简单使用身份…

网络安全是什么? 为什么要学网络安全 ?网络安全怎么学习?

网络安全是什么&#xff1f; 网络安全是指保护计算机网络、网络设备、应用程序、数据和用户免受非法访问、攻击、破坏或泄漏的过程和技术。网络安全包括多个领域&#xff0c;例如网络防御、漏洞管理、加密技术、身份验证和访问控制等等。 网络安全非常重要&#xff0c;因为现…

【好玩的经典游戏】Docker环境下部署RPG网页小游戏

【好玩的经典游戏】Docker环境下部署RPG网页小游戏 一、react-tetris小游戏介绍1.1 react-tetris小游戏简介1.2 项目预览二、本次实践介绍2.1 本地环境规划2.2 本次实践介绍三、本地环境检查3.1 安装Docker环境3.2 检查Docker服务状态3.3 检查Docker版本3.4 检查docker compose…

省一餐,是减瘦捷径?还是牺牲健康的换取?

肥胖从来不是靠短时间的&#xff0c;每天少吃一餐就能减掉的&#xff0c;需要长期坚持。但三餐不管哪一餐&#xff0c;长期不吃&#xff0c;都不会有好结果。为了瘦&#xff0c;失去健康值不值呢&#xff1f; 长期不吃早饭后果 1、消耗率、吸收率减慢&#xff1a;身体经过一整…

解锁新功能,Dynadot现支持BITPAY平台虚拟货币

Dynadot现已支持虚拟货币付款&#xff01;借助与BitPay平台的合作&#xff0c;Dynadot为您提供了多种安全的虚拟货币选择。我们深知每位客户都有自己偏好的支付方式&#xff0c;因此我们努力扩大了支付方式范围。如果您对这一新的支付方式感兴趣&#xff0c;在结账时您可以尝试…