空灵学院

 找回密码
 立即注册

扫一扫,访问微社区

搜索
查看: 2151|回复: 2

如何在MATLAB用高斯消去法求解线性方程组程序

[复制链接]

9

主题

19

帖子

53

积分

注册会员

Rank: 2

积分
53
发表于 2014-1-29 17:06:36 | 显示全部楼层 |阅读模式
本帖最后由 青蛙道人 于 2014-1-29 17:09 编辑

用gauss 消元法 求解下面的方程组
\[\left\{\begin{aligned}2x_1-x_2+3x_3& =1 \\4x_1+2x_2+5x_3& = 4 \\x_1+2x_2&=7\end{aligned}\right.\]



回复

使用道具 举报

1137

主题

1761

帖子

7558

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
7558
发表于 2014-1-29 19:00:12 | 显示全部楼层
  1. function x=gauss(A,b) %高斯求解方程组
  2. %x=gauss(A,b)
  3. n=length(A);
  4. a=[A,b];
  5. for k=1:n-1
  6. maxa=max(abs(a(k:n,k)));
  7. if maxa==0
  8. return;
  9. end
  10. for i=k:n
  11. if abs(a(i,k))==maxa
  12. y=a(i,k:n+1);a(i,k:n+1)=a(k,k:n+1);a(k,k:n+1)=y;
  13. break;
  14. end
  15. end
  16. for i=k+1:n
  17. l(i,k)=a(i,k)/a(k,k);
  18. a(i,k+1:n+1)=a(i,k+1:n+1)-l(i,k).*a(k,k+1:n+1);
  19. end
  20. end
  21. %回代
  22. if a(n,n)==0
  23. return
  24. end
  25. x(n)=a(n,n+1)/a(n,n);
  26. for i=n-1:-1:1
  27. x(i)=(a(i,n+1)-sum(a(i,i+1:n).*x(i+1:n)))/a(i,i);
  28. end
复制代码
程序如上,调用示例如下:

>> A=[2,-1,3;4,2,5;1,2,0];
>> b=[1;4;7];
>> x=gauss(A,b)

x =

9 -1 -6


回复 支持 反对

使用道具 举报

9

主题

19

帖子

53

积分

注册会员

Rank: 2

积分
53
 楼主| 发表于 2014-1-30 08:05:28 | 显示全部楼层
高手,懂之。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|空灵学院 ( 11033542 )

GMT+8, 2024-5-11 04:12 , Processed in 0.028513 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表