Matlab:导数边界值的有限元(Galerkin)法






tic;
% this method is transform from Galerkin method
%also call it as finit method
%is used for solving two point BVP which is the first and second term.
%this code was writen by HU.D.dong in February 11th 2017
%MATLAB 7.0
clear;
clc;
N=50;
h=1/N;
X=0:h:1;
f=inline('(0.5*pi^2)*sin(0.5*pi.*x)');
%以下是右端向量:
for i=2:N
fun1=@(x) pi^2/2.*sin(pi/2.*x).*(1-(x-X(i))/h);
fun2=@(x) pi^2/2.*sin(pi/2.*x).*((x-X(i-1))/h);
f_phi(i-1,1)=quad(fun1,X(i),X(i+1))+quad(fun2,X(i-1),X(i));
end
funN=@(x) pi^2/2.*sin(pi/2.*x).*(x-X(N))/h;
f_phi(N)=quad(funN,X(N),X(N+1));
%以下是刚度矩阵:
A11=quad(@(x) 2/h+0.25*pi^2*h.*(1-2*x+2*x.^2),0,1);
A12=quad(@(x) -1/h+0.25*pi^2*h.*(1-x).*x,0,1);
ANN=quad(@(x) 1/h+0.25*pi^2*h*x.^2,0,1);
A=diag([A11*ones(1,N-1),ANN],0)+diag(A12*ones(1,N-1),1)+diag(A12*ones(1,N-1),-1);
Numerical_solution=A\f_phi;
Numerical_solution=[0;Numerical_solution];
%Accurate solution on above以下是精确解
%%
for i=1:length(X)
Accurate_solution(i,1)=sin((pi*X(i))/2)/2 - cos((pi*X(i))/2)/2 + exp((pi*X(i))/2)*((exp(-(pi*X(i))/2)*cos((pi*X(i))/2))/2 + (exp(-(pi*X(i))/2)*sin((pi*X(i))/2))/2);
end
figure(1);
grid on;
subplot(1,2,1);
plot(X,Numerical_solution,'ro-',X,Accurate_solution,'b^:');
title('Numerical solutions vs Accurate solutions');
legend('Numerical_solution','Accurate_solution');
subplot(1,2,2);
plot(X,Numerical_solution-Accurate_solution,'b x');
legend('error_solution');
title('error');
toc;
效果图:

Matlab:导数边界值的有限元(Galerkin)法的更多相关文章
- Matlab:导数边界值的有限元(Ritz)法
tic; % this method is transform from Ritz method %is used for solving two point BVP %this code was w ...
- Matlab-7:偏微分方程数值解法-李荣华-有限元解导数边界值的常微分(Galerkin方法)
p47.(实习题-李荣华)用线性元求下列边值问题的数值解 tic; % this method is transform from Galerkin method %also call it as f ...
- 【Matlab】运动目标检测之“光流法”
光流(optical flow) 1950年,Gibson首先提出了光流的概念,所谓光流就是指图像表现运动的速度.物体在运动的时候之所以能被人眼发现,就是因为当物体运动时,会在人的视网膜上形成一系列的 ...
- Matlab查看数值不用科学计数法显示
如图: 运行结果显示的是科学计数法的数据 输入命令“format long g” --> Enter --> 输入需要转换的数据 即可显示.
- matlab规定小数点保留4位且非科学计数法格式存储txt
matlab 不保存为科学计数法 http://blog.sciencenet.cn/blog-472136-402727.html 经常在表示matlab值时,它总会把一些小于1的大于1000的数使 ...
- 层次分析法、模糊综合评测法实例分析(涵盖各个过程讲解、原创实例示范、MATLAB源码公布)
目录 一.先定个小目标 二.层次分析法部分 2.1 思路总括 2.2 构造两两比较矩阵 2.3 权重计算方法 2.3.1 算术平均法求权重 2.3.2 几何平均法求权重 2.3.3 特征值法求权重 2 ...
- <读书笔记>软件调试之道 :问题的核心-重现问题
声明:本文档的内容主要来源于书籍<软件调试修炼之道>作者Paul Butcher,属于读书笔记. 重现第一,提问第二 问题重现是实证过程的最强大武器,如果不能重现问题,你也无法证明修复了它 ...
- Testing - 测试基础 - 方法
选择和使用测试方法和工具 按照测试需求用途(或测试技巧)选择 在软件开发生命周期和软件测试流程中适当地选择 按照测试人员实际技能选择 选择可提供的和可执行的 测试方法 类别及技巧 目标 使用方法 举例 ...
- [liu yanling]软件测试技巧
1.添加.修改功能 (1)是否支持tab键 (2)是否支持enter键 (3)不符合要求的地方是否有错误提示 (4)保存后,是否也插入到数据库中 (5)字段唯一的,是否可以重复添加 (6)对编辑页列表 ...
随机推荐
- pycharm新建py文件时,自动补充文件头注释信息
步骤: 1.File -->Settings 2.选择 File and Code Templates -> Files -> Python Script 文件头注释信息代码样式: ...
- (转)Golang--使用iota(常量计数器)
iota是golang语言的常量计数器,只能在常量的表达式中使用. iota在const关键字出现时将被重置为0(const内部的第一行之前),const中每新增一行常量声明将使iota计数一次(io ...
- Java 基础 IO
一,前言 回想之前写过的程序,数据都是在内存中,一旦程序运行结束,这些数据都没有了,等下次再想使用这些数据,可是已经没有了.那怎么办呢?能不能把运算完的数据都保存下来,下次程序启动的时候,再把这些数据 ...
- [PHP] swoole在daemonize模式下,chdir失效问题
swoole version: 1.9.6 其实跟swoole的版本无关,因为原代码体系,fpm模式下,在启动的时候,是使用 chdir 函数改变了当前目录的,而其它代码在做类的自动加载的时候,都是写 ...
- JavaWeb-----ServletConfig对象和servletContext对象
1.ServletConfig ServletConfig:代表当前Servlet在web.xml中的配置信息 String getServletName() -- 获取当前Servlet在web. ...
- DRF之视图类(mixin)源码解析
同样的增删改查操作,如果我们还像之前序列化组件那样做,代码重复率过多,所以我们用视图表示: 具体源码实现:首先定义一个视图类,然后根据mixin点进去有五个封装好的方法,这五个方法共有的属性就是都需 ...
- mybatis常见问题和错误
1. jdbc java type 映射关系 1) mysql的text 在mybatis中使用varchar类型 2. mybatis常见的错误 3.There is no getter for p ...
- PHP XAMPP windows环境安装扩展redis 致命错误: Class 'Redis' not found解决方法
PHP XAMPP windows环境安装扩展redis 致命错误: Class 'Redis' not found解决方法 1.电脑需要先安装redis服务端环境,并在安装目录下打开客户端redis ...
- Six advantages of Nissan consult 3 diagnostic tool
Today autonumen.com introduces Nissan consult 3. Nissan Consult 3 is a professional diagnostic tool ...
- HTML响应式布局实现详解
摘自:https://blog.csdn.net/lesouls/article/details/81454568 第一步:在网页代码的头部,加入一行viewport元标签(1)viewport是网页 ...