声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

声振论坛 展示 科学计算 算法编程 查看内容

maker系列--最速下降法求线性方程

2015-11-17 04:01| 发布者: aspen| 查看: 1673| 评论: 2|原作者: MVH|来自: 声振论坛

摘要: function x=maker6(A,b) %最速下降法求线性方程 %基于公式如下: %r0=b- Ax0,a=(r0,r0)/(Ar0,r0),x1=x0+a*r0,r1=b-Ax1; %上式根据||r0|| errs,(errs为一个非常小的数据) %chinamaker %2003.12.27 numer=lengt ...
一种求多元方程组的方法

come from shumo.com
%简单的GAUSS消去法
%a为系数方阵,b为右端向量
  1. function x = gauss(a,b)
  2. [n,m] = size(b);
  3. if size(a) == [n,n]
  4.     for i = 1 : (n - 1)
  5.         if a(i,i) == 0 error('Divide by zero');end
  6.         b((i + 1):n,:) = b((i + 1):n,:) - a((i + 1):n,i)*b(i,:)/a(i,i);
  7.         a((i + 1):n,i:n) = a((i + 1):n,i:n) - ...
  8.             a((i + 1):n,i)*a(i,i:n)/a(i,i);
  9.         [a,b]
  10.     end
  11.     if a(n,n) == 0,error('Divide by zero');end
  12.     x(n,:) = b(n,:)/a(n,n);
  13.     for i = n-1:-1:1
  14.         x(i,:) = b(i,:) - a(i,(i + 1):n)*x((i + 1):n,:)/a(i,i);
  15.     end
  16. else,error('Divede of matrix must agree');
  17. end
复制代码


%请大家赐教其他的好方法
12
发表评论

最新评论

引用 MVH 2005-7-28 17:50
介绍一种求多元方程组的方法
come from shumo.com
%简单的GAUSS消去法
%a为系数方阵,b为右端向量
  1. function x = gauss(a,b)
  2. [n,m] = size(b);
  3. if size(a) == [n,n]
  4.     for i = 1 : (n - 1)
  5.         if a(i,i) == 0 error('Divide by zero');end
  6.         b((i + 1):n,:) = b((i + 1):n,:) - a((i + 1):n,i)*b(i,:)/a(i,i);
  7.         a((i + 1):n,i:n) = a((i + 1):n,i:n) - ...
  8.             a((i + 1):n,i)*a(i,i:n)/a(i,i);
  9.         [a,b]
  10.     end
  11.     if a(n,n) == 0,error('Divide by zero');end
  12.     x(n,:) = b(n,:)/a(n,n);
  13.     for i = n-1:-1:1
  14.         x(i,:) = b(i,:) - a(i,(i + 1):n)*x((i + 1):n,:)/a(i,i);
  15.     end
  16. else,error('Divede of matrix must agree');
  17. end
复制代码


%请大家赐教其他的好方法
引用 xinyuan110 2006-5-23 11:11
不错,不错谢谢了!!!

查看全部评论(2)

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-24 21:35 , Processed in 0.056970 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部