Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.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求解线性系统的方法_Matlab_Linear Algebra_Numerical_Spline - Fatal编程技术网

用matlab求解线性系统的方法

用matlab求解线性系统的方法,matlab,linear-algebra,numerical,spline,Matlab,Linear Algebra,Numerical,Spline,我有一个线性系统Ax=b,它由自然样条曲线创建,如下所示: 在哪里 matlab中用于求解系统的代码如下: clear; clc; x = [...] ; a = [...]; x0 = ...; n = length(x) - 1 ; for i = 0 : (n-1) h(i+1) = x(i+2) - x(i+1) ; end b= zeros( n+1 , 1 ) ; for i =2: n b(i,1) = 3 *(a(i+1)-a(i))/h(

我有一个线性系统Ax=b,它由自然样条曲线创建,如下所示:

在哪里

matlab中用于求解系统的代码如下:

 clear; 
 clc;

x = [...] ;
a = [...];
x0 = ...;
n = length(x) - 1 ; 

for i = 0 : (n-1) 
    h(i+1) = x(i+2) - x(i+1) ; 
end


b= zeros( n+1 , 1 ) ;
for i =2: n 
    b(i,1) = 3 *(a(i+1)-a(i))/h(i) - 3/h(i-1)*(a(i) - a(i-1) ) ;
end


%linear system solution. 

l(1) =0 ; m(1) = 0 ; z(1) = 0 ;

for i =1:(n-1) 
    l(i+1) = 2*( x(i+2) - x(i) ) - h(i)* m(i) ;
    m(i+1) = h(i+1)/l(i+1);
    z(i+1) = ( b(i+1) - h(i)*z(i) ) / l ( i+1) ;
end

l(n+1) =1;
z(n+1) = 0 ;
c(n+1) = 0 ;

for j = ( n-1) : (-1) : 0 
    c(j+1) = z(j+1) - m(j+1)*c(j+2) ;
end
但我不明白用哪种方法来解线性方程组。 如果我不得不猜测的话,我会说使用了LU方法,对三对角矩阵进行了调整,但我仍然找不到与代码的联系


任何帮助都将不胜感激

系数看起来有点奇怪(特别是
l
方程中的
2
),但它看起来像一个特殊的公式,其中:

  • 第二个到最后一个循环执行次对角线的前向消去,将矩阵转化为上三角形式
  • 最后一个循环对解决方案执行反向替换

  • 代码似乎与通用算法不匹配,因为解决方案是使用组成对角线的向量,而不是对角线本身,没有明显的内存预分配。因此,我不能说这种方法是否比一般的方法“更好”。

    要求解线性系统
    A*x=b
    ,通常只需使用
    x=A\b
    。要构建矩阵
    A
    ,请查找
    diag
    命令。你可以比较
    x
    和你的解
    c
    ,如果它是正确的话。它使用三角矩阵解算器。参见《数字配方书》第115页()