zoukankan      html  css  js  c++  java
  • Matlab-10:Ritz-Galerkin方法求解二阶常微分方程

    一、代数多项式法:

     1 tic;
     2 clear
     3 clc
     4 % N=input('please key in the value of ''N''');
     5 N=10;
     6 M=100;
     7 h=1/M;
     8 X=0:h:1;
     9 accurate_fun=inline('x.^2 - (2*exp(x))/(exp(1) + 1) - (2*exp(-x)*exp(1))/(exp(1) + 1) + 2');
    10  f=inline('x.^2-x');
    11  phi=inline('x.*(1-x).*x.^(i-1)','i','x');
    12  diff_phi=inline('i*x.^(i-1)-(i+1)*x.^i','i','x');
    13  for j=1:N
    14      for i=1:N
    15 A(i,j)=quad(@(x)phi(i,x).*phi(j,x)+diff_phi(i,x).*diff_phi(j,x),0,1);
    16      end
    17      b(j,1)=quad(@(x) phi(j,x).*f(x),0,1);
    18  end
    19  C=A;
    20 syms x;
    21  Un=0;
    22 for i=1:N
    23 Un=Un+C(i)*phi(i,x);
    24 end
    25 Un=Un+x;
    26  numerical= double(vpa(subs(Un,'x',X)));
    27  accurate=accurate_fun(X);
    28  subplot(1,2,1)
    29  plot(X,numerical,'r -',X,accurate,'b >');
    30   title('numerical VS accurate');
    31  legend('numerical','accurate');
    32  grid on;
    33   subplot(1,2,2);
    34   plot(X,numerical-accurate,'g');
    35   title('error');
    36   grid on;
    37  toc;

    二、三角函数法:

     1 tic;
     2 clear
     3 clc
     4 % N=input('please key in the value of ''N''');
     5 N=10;
     6 M=100;
     7 h=1/M;
     8 X=0:h:1;
     9 accurate_fun=inline('x.^2 - (2*exp(x))/(exp(1) + 1) - (2*exp(-x)*exp(1))/(exp(1) + 1) + 2');
    10  f=inline('x.^2-x');
    11  phi=inline('sin(i*pi*x)','i','x');
    12  diff_phi=inline('i*pi*cos(i*pi*x)','i','x');
    13  for j=1:N
    14      for i=1:N
    15 A(i,j)=quad(@(x)phi(i,x).*phi(j,x)+diff_phi(i,x).*diff_phi(j,x),0,1);
    16      end
    17      b(j,1)=quad(@(x) phi(j,x).*f(x),0,1);
    18  end
    19  C=A;
    20  syms x;
    21  Wn=0;
    22 for i=1:N
    23 Wn=Wn+C(i)*phi(i,x);
    24 end
    25 Un=Wn+x;
    26 numerical=vpa(subs(Un,'x',X));
    27 accurate=accurate_fun(X);
    28 subplot(1,2,1)
    29 plot(X,numerical,'r -',X,accurate,'g ^');
    30 title('Ritz Galerkin method');
    31 legend('numerical solution','accurate solution');
    32 grid on;
    33 subplot(1,2,2)
    34 plot(X,numerical-accurate,'b');
    35 title('error');
    36 grid on;
    37 toc;

     

  • 相关阅读:
    Word中设置文档结构图
    jQuery设计思想
    JMJS系统总结系列JMJS中使用到的Jquery工具(四)
    JMJS系统总结系列XSLT的语句规则(一)
    构建安全的数据访问组件
    JMJS系统总结系列Jquery与后台的交互方式(三)
    浮躁的搬运工
    JMJS系统总结系列Jquery分页扩展库(五)
    IIS7 授权配置错误
    JMJS系统总结系列HTML标签在XSLT 中的应用(二)
  • 原文地址:https://www.cnblogs.com/xtu-hudongdong/p/6507294.html
Copyright © 2011-2022 走看看