求解方程并绘制结果

时间:2014-10-11 07:06:35

标签: matlab equation linear

(已编辑,我已经更改了代码)我有复合方程式,我需要在matlab中求解并找到结果。 我尝试了不同的技术,但都失败了。 方程是:

u(j-1)-2(u(j))+ u(j + 1)= -4 * h ^ 2 * pi ^ 2 * sin(2 * pi * xj)

其中

N = 100

j = 1到n

XJ = JH

H = 1 / N

U(0)== U(n)的== 0

我需要解决方程并绘制结果。这样我就可以比较结果了 确切的解决方案。 这是我到目前为止编写的代码......

function c= prob1()
n=100;

c=(0);   % variable to store all results
u = linspace(1,n-1);
    for k=3:90
    jay=k;
    h=1/k;
    syms xj  
    eqn6 = u(jay-1) -2*u(jay)+u(jay+1)==-4*(h^2)*(pi^2)*sin(2*pi*xj);
    A = solve(eqn6, xj); % solving the equation with xj as unknown
      if(~(A==0))
      c=vertcat(c,A);  % just filtering out the results with 0 output
      end
    end
end

现在我在A中获得答案“(625 * asin(1/9877545463176224))/ 3927”。 这是我无法绘制的。

1 个答案:

答案 0 :(得分:1)

设置方程式Au = b是通过将数学转换为MATLAB语言来完成的,如下所示:

n = 100;
h = 1/n;

j = 0:n; % include zero for the boundary condition
xj = j*h;

% set up right hand side
b = (-4*h^2*pi^2*sin(2*pi*xj))';
% overwrite the first and last value of b with the right hand side of the boundary conditions:
b([1 end]) = 0;

% This is the interesting part:
% set up A: 1*u(j-1) -2*u(j) + 1*u(j+1) and include the boundary conditions
main = [1; -2*ones(n-1,1); 1];
upper = [0; ones(n-1,1)];
lower = [ones(n-1,1); 0];
A = gallery('tridiag', lower, main, upper);

如果您不明白为什么会这样,我建议根据Ab写出至少j = 0,n / 2和n的等式,并将它们与你的方程式。

现在,我们已准备好解决该系统问题。系统很小所以我使用反斜杠操作符(这是一种直接方法),但您也可以选择迭代方法,如bicgstabgmresqmr

u = A\b;

绘制结果u

plot(xj,u)