Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab-如何实现向后Euler';什么方法?_Matlab_Iteration_Sparse Matrix - Fatal编程技术网

Matlab-如何实现向后Euler';什么方法?

Matlab-如何实现向后Euler';什么方法?,matlab,iteration,sparse-matrix,Matlab,Iteration,Sparse Matrix,我正在尝试实现这些公式: 正向欧拉法: 这就是我尝试过的: x_new=(speye(nv)+dt*lambda*L)*x_old; 这有什么问题吗?如何使用稀疏操作计算此值 反向欧拉法: 我试过这个: x_new=(speye(nv)-dt*lambda*L)\x_old; 如何实现基于新的x计算现有x的向后部分?可以用除法吗 L是这样的稀疏矩阵: full(L)= -1.0000 0.2500 0.2500 0.2500 0.2500 0.3333 -1

我正在尝试实现这些公式:

正向欧拉法:

这就是我尝试过的:

x_new=(speye(nv)+dt*lambda*L)*x_old;
这有什么问题吗?如何使用稀疏操作计算此值

反向欧拉法:

我试过这个:

x_new=(speye(nv)-dt*lambda*L)\x_old;
如何实现基于新的
x
计算现有
x
的向后部分?可以用除法吗


L
是这样的稀疏矩阵:

full(L)=
-1.0000    0.2500    0.2500    0.2500    0.2500
0.3333   -1.0000    0.3333         0    0.3333
0.3333    0.3333   -1.0000    0.3333         0
0.3333         0    0.3333   -1.0000    0.3333
0.3333    0.3333         0    0.3333   -1.0000
另外,对于其他变量,我们有如下内容:

nv=5;
dt=0.01;
λ=0.5;
x_old=[-4 0 5;
1 -5 5;
1 0 1;
1 5 5;
1 0 0]

我在这里看不到域,但向后Euler方法是一种基本的常微分方程求解器

x_new
站在方程两边时,有两种方法可以解决这种情况

1. 第一次迭代使用
x_new_temp
,将
x_new_temp
设置为
x_old
,并使用正向欧拉公式进行少量迭代。在迭代之后,可能由于迭代
i
中的
x_new_temp
i-1
之间的一些差异,您将
x_new
设置为上次迭代中的
x_new_temp

2.用适当的方法求解非线性方程,例如。 反向欧拉公式规定:

y\u new=y\u old+k*f(t,y\u old)

我们可以将其转化为:

y_old+k*f(t,y_old)-y_new=0

这是一个基本的非线性函数,可以用任何数值方法来解决这类问题


在你的例子中当涉及到矩阵时,我会使用定点迭代。

Re:“使用除法可以吗?”-你肯定有一些测试问题,可以比较结果,对吗?是的,结果看起来不错,除了分母中的零元素。另外,我的问题是:是否允许在Euler的前进法中使用除法,或者是否有一种方法可以保持公式不变,而不将
(speye(nv)-dt*lambda*L)
移动到另一侧?我需要在任何地方使用
*
而不是
*
吗?在我看来,你做得不错。任何隐式程度的数值方法(即,计算新值需要方程组的解)都需要计算。代码
x_new=A\x_old
实际上是求解
x_new
的线性系统,而不仅仅是简单的除法运算。