Matlab:线性热传导(抛物线方程)问题
函数文件1:real_fun.m
- function f=real_fun(x0,t0)
- f=(x0-x0^2)*exp(-t0);
函数文件2:fun.m
- function f=fun(x0,t0)
- f=(x0^2-x0)*exp(-t0)+2*exp(-t0);
函数文件3:fi.m
- function f=fi(x0)
- f=x0-x0^2;
脚本文件:
- tic;
- clc
- clear
- N=100;
- M=1000;
- t_h=1/M;%t的步长
- x_h=1/N;%x的步长
- x=0:x_h:1;%x的节点
- t=0:t_h:1;%t的节点
- B=-2*ones(1,N-1);
- C=1*ones(1,N-2);
- D=1*ones(1,N-2);
- A=diag(B)+diag(C,1)+diag(D,-1);%三对角矩阵
- F=zeros(N-1,M);
- for i=1:N-1
- for j=1:M
- F(i,j)=fun(x(i+1),t(j));
- end
- end
- F=F.*t_h;
- %********************数值解************************************
- J=-N^2*A*t_h+eye(N-1);%求解线性方程组的系数矩阵
- initial=zeros(N-1,1);
- z=zeros(N-1,M);
- for i=1:N-1
- initial(i)=fi(x(i+1));
- end
- b=initial;
- for j=1:M%控制t的节点
- a=b;
- a=a+F(1:N-1,j);
- z(1:N-1,j)=J\a;%解是n-1维的
- b=z(1:N-1,j);%变成下一次求解的初值
- end
- z=[initial,z];
- Z=[zeros(1,M+1);z;zeros(1,M+1)];
- %********************数值解************************************
- for i=1:N+1
- for j=1:M+1
- real_Z(i,j)=real_fun(x(i),t(j));
- end
- end
- compare=abs(real_Z-Z);
- [X,Y]=meshgrid(x,t);
- % colormap(jet)
- subplot(2,2,1),
- mesh(X,Y,Z');
- xlabel('x');ylabel('t');zlabel('u');title('analytical solution');
- subplot(2,2,2),
- mesh(X,Y,real_Z');
- xlabel('x');ylabel('t');zlabel('u');title('numerical solution');
- subplot(2,2,3),
- mesh(X,Y,compare');
- xlabel('x');ylabel('t');zlabel('u');title('error solution');
- grid on;
- toc;
效果图:
Matlab:线性热传导(抛物线方程)问题的更多相关文章
- C# 简单实现直线方程,抛物线方程
本例子是简单的在WinForm程序中实现在坐标系中绘制直线方程,抛物线方程,点.重新学习解析几何方面的知识.仅供学习分享使用,如有不足之处,还请指正. 涉及知识点: 直线方程的表达方式:一般表达式Ax ...
- C# 简单实现直线方程,抛物线方程(转载)
http://www.cnblogs.com/hsiang/archive/2017/01/17/6294864.html 本例子是简单的在WinForm程序中实现在坐标系中绘制直线方程,抛物线方程, ...
- 求解线性递推方程第n项的一般方法
概述 系数为常数,递推项系数均为一次的,形如下面形式的递推式,称为线性递推方程. \[f[n]=\begin{cases} C &n\in Value\\ a_1 f[n-1]+a_2 f[n ...
- Matlab:非线性热传导(抛物方程)问题
函数文件1:real_fun.m function f=real_fun(x0,t0) %精确解 f=4*x0*(1-x0)*sin(t0); 函数文件2:F.m function f=F(N,u,U ...
- MATLAB线性回归方程与非线性回归方程的相关计算
每次比赛都需要查一下,这次直接总结到自己的博客中. 以这个为例子: 2.线性方程的相关计算 x=[1,2,3,4,5]';%参数矩阵 X=[ones(5,1),x];%产生一个5行一列的矩阵,后接x矩 ...
- MATLAB 符号变量表达式 + 方程求解
源代码见文末 部分源代码: % 符号变量 两种表达方式 a=sym('a'); class(a); syms b; b; % 符号常量 c=sym('); c; % 符号表达式 三种表达方式 f1=' ...
- MATLAB——线性神经网络
这个函数默认使用最小二乘,所以不需要训练 % example5_1.m x=-:; y=*x-; % 直线方程为 randn(); % 设置种子,便于重复执行 y=y+randn(,length(y ...
- Matlab实现线性回归和逻辑回归: Linear Regression & Logistic Regression
原文:http://blog.csdn.net/abcjennifer/article/details/7732417 本文为Maching Learning 栏目补充内容,为上几章中所提到单参数线性 ...
- HDU_1071——积分求面积,抛物线顶点公式
Problem Description Ignatius bought a land last week, but he didn't know the area of the land becaus ...
随机推荐
- pycharm import pygame 出现报错:No module named 'pygame'
首先发现装的Python 有问题原来的Python3.6.4版本安装完成后Scripts文件夹里空白的,什么也没有,从https://www.python.org/downloads/windows/ ...
- 浅谈AC自动机
写在前面:从10月23日开始写这篇博文,离NOIP2018只有十多天了.坚持不停课的倔强蒟蒻(我)尽量每天挤时间多搞一搞信竞(然而还要准备期中考试).NOIP争取考一个好成绩吧. 一.简介 AC自动机 ...
- 报错解决——xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
一般在遇到这个问题的时候都是想用git或者svn,结果发现用不了并报错xcrun: error: invalid active developer path (/Library/Developer/C ...
- 解决wine中文字体方块或乱码
从Windows使用字体 如果有一个安装了Windows的分区, 可以通过链接它们来使用其字体. 例如, Windows的C:\盘被挂载在/windows: # ln -s /windows/Wind ...
- Vue系列之 => 路由匹配
路由基本使用,加动画切换 1 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...
- RxJava 详解——简洁的异步操作(二)
上次说的两个例子,事件的发出和消费都是在同一个线程的.如果只用上面的方法,实现出来的只是一个同步的观察者模式.观察者模式本身的目的就是异步机制,因此异步对于 RxJava 是至关重要的.而要实现异步, ...
- ci 配置ckeditor + ckfinder 无图片上传按钮
一:配置路径有问题 {$base_url}assets/js/editor/ckfinder/ckfinder.html --> http://www.cnblogs.com/assets/j ...
- LNMP 如何安装mongodb
wget -c http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.6.4.tgztar -zxvf mongodb-linux-x86_64 ...
- P3195 [HNOI2008]玩具装箱TOY(斜率优化dp)
P3195 [HNOI2008]玩具装箱TOY 设前缀和为$s[i]$ 那么显然可以得出方程 $f[i]=f[j]+(s[i]-s[j]+i-j-L-1)^{2}$ 换下顺序 $f[i]=f[j]+( ...
- CentOS 6.5优化开机启动服务
使用chkconfig命令列举出所有服务,配合管道筛选出开机默认启动的服务,再去掉level0(关机).level4(无意义)和level6(重启)的显示,使结果更直观. chkconfig | gr ...