Matlab-10:Ritz-Galerkin方法求解二阶常微分方程
一、代数多项式法:
tic;
clear
clc
% N=input('please key in the value of ''N''');
N=10;
M=100;
h=1/M;
X=0:h:1;
accurate_fun=inline('x.^2 - (2*exp(x))/(exp(1) + 1) - (2*exp(-x)*exp(1))/(exp(1) + 1) + 2');
f=inline('x.^2-x');
phi=inline('x.*(1-x).*x.^(i-1)','i','x');
diff_phi=inline('i*x.^(i-1)-(i+1)*x.^i','i','x');
for j=1:N
for i=1:N
A(i,j)=quad(@(x)phi(i,x).*phi(j,x)+diff_phi(i,x).*diff_phi(j,x),0,1);
end
b(j,1)=quad(@(x) phi(j,x).*f(x),0,1);
end
C=A\b;
syms x;
Un=0;
for i=1:N
Un=Un+C(i)*phi(i,x);
end
Un=Un+x;
numerical= double(vpa(subs(Un,'x',X)));
accurate=accurate_fun(X);
subplot(1,2,1)
plot(X,numerical,'r -',X,accurate,'b >');
title('numerical VS accurate');
legend('numerical','accurate');
grid on;
subplot(1,2,2);
plot(X,numerical-accurate,'g');
title('error');
grid on;
toc;
二、三角函数法:
tic;
clear
clc
% N=input('please key in the value of ''N''');
N=10;
M=100;
h=1/M;
X=0:h:1;
accurate_fun=inline('x.^2 - (2*exp(x))/(exp(1) + 1) - (2*exp(-x)*exp(1))/(exp(1) + 1) + 2');
f=inline('x.^2-x');
phi=inline('sin(i*pi*x)','i','x');
diff_phi=inline('i*pi*cos(i*pi*x)','i','x');
for j=1:N
for i=1:N
A(i,j)=quad(@(x)phi(i,x).*phi(j,x)+diff_phi(i,x).*diff_phi(j,x),0,1);
end
b(j,1)=quad(@(x) phi(j,x).*f(x),0,1);
end
C=A\b;
syms x;
Wn=0;
for i=1:N
Wn=Wn+C(i)*phi(i,x);
end
Un=Wn+x;
numerical=vpa(subs(Un,'x',X));
accurate=accurate_fun(X);
subplot(1,2,1)
plot(X,numerical,'r -',X,accurate,'g ^');
title('Ritz Galerkin method');
legend('numerical solution','accurate solution');
grid on;
subplot(1,2,2)
plot(X,numerical-accurate,'b');
title('error');
grid on;
toc;
Matlab-10:Ritz-Galerkin方法求解二阶常微分方程的更多相关文章
- FESTUNG — 3. 采用 HDG 方法求解对流问题
FESTUNG - 3. 采用 HDG 方法求解对流问题[1] 1. 控制方程 线性对流问题控制方程为 \[\begin{array}{ll} \partial_t c + \nabla \cdot ...
- matlab中struct创建方法
MATLAB中struct创建方法可分为:直接创建法和struct()函数创建法 (1)直接创建: 直接定义字段,像使用一般matlab变量一样,不需要事先声明,支持动态扩充.下面创建一个Studen ...
- Matlab人脸检測方法(Face Parts Detection)具体解释
今天同学让我帮忙制作一个人脸表情识别的样本库,当中主要是对人脸进行裁剪,这里用到了一个相对较新的Matlab人脸检測方法Face Parts Detection.网上百度了一下发现关于Matlab人脸 ...
- Effective Java 第三版——10. 重写equals方法时遵守通用约定
Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...
- C语言多种方法求解字符串编辑距离问题的代码
把做工程过程经常用的内容记录起来,如下内容段是关于C语言多种方法求解字符串编辑距离问题的内容. { if(xbeg > xend) { if(ybeg > yend) return 0; ...
- 三种初步简易的方法求解数值问题 of C++
1. “二分法解方程” 在二分法中,从区间[a,b]开始,用函数值f(a)与f(b)拥有相反的符号.如果f在这个区间连续,则f的图像至少在x=a,x=b之间穿越x轴一次,因此方程f(x)=0在[a,b ...
- 在vs2010中编译log4cxx-0.10.0详细方法(从下载、编译、解决错误详细介绍)
在vs2010中编译log4cxx-0.10.0详细方法(从下载.编译.解决错误详细介绍) http://blog.sina.com.cn/s/blog_a459dcf501013tbn.html
- Python中list常用的10个基本方法----list的灰魔法
########################list 的常用的10个基本方法################################## list 类 列表# 1 列表的基本格式#2 可以 ...
- 从Ubuntu 18.04 LTS升级到Ubuntu 18.10版本的方法
从Ubuntu 18.04 LTS升级到Ubuntu 18.10版本的方法 2018-10-18 21:08:39作者:ywnz稿源:云网牛站 本文提供从Ubuntu 18.04 LTS(Bionic ...
随机推荐
- 不能安装64位office提示已安装32位的
安装64位office办公软件的时候提示已经安装32位的office办公软件所以无法继续安装,但实际上之前安装的32位的office办公软件已经卸载了.问题现象截图如下: 从问题描述中,我们其实已经能 ...
- LuoguP3674 小清新人渣的本愿 && BZOJ4810: [Ynoi2017]由乃的玉米田
题目地址 小清新人渣的本愿 [Ynoi2017]由乃的玉米田 所以这两题也就输出不一样而已 题解 这种lxl的题还是没修改操作的题基本就是莫队 分开考虑每个询问 1.减法 \(a-b=x⇒a=b+x\ ...
- shiro 前后端分离 seseeionId 问题
http://www.cnblogs.com/cshhs/p/9269411.html https://www.w3cschool.cn/shiro/rmvk1if1.html http://www. ...
- Java 11 究竟比 8 快了多少?看看这个基准测试
开源规划调度引擎 OptaPlanner 官网发布了一个 Java 11 GC 性能基准测试报告. 当前使用量最大的 Java 版本是 8,所以测试者用 Java 8 与 Java 11 进行对比测试 ...
- 复习ing
记不住啊,我能有什么办法,只好一遍又一遍看
- 小米MAX开发者选项 以及如何连接MAC开发RN
打开开发者选项:设置--我的设备---全部参数-- 多次点击MiUI版本 打开开发者选项 然后返回到设置的主页面里面的更多设置就可以看到开发者选项了 在开发者选项中打开 USB调试/USB安装 将启动 ...
- React native中的组建通知通信:
有这么一个需求,在B页面pop()回到A页面,需要A页面执行刷新,那么我们可以采用以下方法: 1:在A页面Push到B页面中,加上一个A页面中的刷新函数做为参数,然后在B页面中在pop()函数封装后通 ...
- _event_spawn
EventId 事件ID Entry 刷新生物或物体的entry,正数为生物,负数为物体 Phase 刷新生物或物体的阶段ID SpawnTime 刷新生物或物体的时间(单位:秒),从阶段开始时开始计 ...
- 【BZOJ】3575: [Hnoi2014]道路堵塞
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3575 大概的做法是,按照顺序枚举每一条要删去的边,(假设当前点为$u$,在最短路径上的下一 ...
- Android Studio 使用USB真机调试教程
允许安装未知来源的软件 允许USB调试 设置启动方式 选择USB device 然后运行 会自动安装软件启动! 参考: https://blog.csdn.net/fubo1990/article/d ...