24小时热门版块排行榜    

查看: 1016  |  回复: 7
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

博学GG

新虫 (初入文坛)

[求助] 初学者的困惑,希望大神解答 已有2人参与

数值计算课的老师给布置了一道用matlab求解的题目,有一点困惑还望解答
这是我在网上找的高斯赛德尔迭代方法的源程序:
function [x1 k1]=gauss_seidel(A,b,e)
n=max(size(A));
for i=1:n
    if A(i,i)==0
          'eig can not be zero'
        return
    end
end
k=0;
kend=50;
r=1;
x=zeros(n,1);
while k<=kend && r>e
    x0=x;
    for i=1:n
        s=0;
        for j=1:i-1
            s=s+A(i,j)*x(j);
        end
        for j=i+1:n
            s=s+A(i,j)*x0(j);
        end
        x(i)=b(i)/A(i,i)-s/A(i,i);
    end
    r=norm(x-x0,inf);
    k=k+1;
end
if k>kend
    'die dai bu shou lian ,failure'
    return
else
    'qiu jie cheng gong'
end
x1=x;
k1=k;


这是我要求的问题:
e=0.000000001;
for n=4:12
    A=hilb(n);
    b=A(:,1);
    [x k]=gauss_seidel(A,b,e)
end

为什么在源程序中我把x=zeros(n,1)改成x=ones(n,1)就会报错,错误:
Error in gauss_seidel (line 2)
n=max(size(A));

Output argument "x1" (and maybe others) not assigned during call to "gauss_seidel".


非常困惑,我看源程序没有规定x必须取0,为什么不能改呢?
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

博学GG

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by mygt_hit at 2015-10-24 12:55:08
跑了一下,把x=zeros(n,1)改成x=ones(n,1)后,程序不收敛,跑到如下位置就退出函数,从而使得x1未赋值,程序报错。
if k>kend
    'die dai bu shou lian ,failure'
    return

你好,谢谢你的帮助,请问你是通过什么方式去查看运行到哪个位置出错的?
还有就是怎么会出现这种情况,程序仅仅是让循环大于50时就停止,为什么会退出函数呢?
6楼2015-10-25 16:08:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 8 个回答

mygt_hit

专家顾问 (职业作家)

【答案】应助回帖

感谢参与,应助指数 +1
跑了一下,把x=zeros(n,1)改成x=ones(n,1)后,程序不收敛,跑到如下位置就退出函数,从而使得x1未赋值,程序报错。
if k>kend
    'die dai bu shou lian ,failure'
    return
知其然,知其所以然。
2楼2015-10-24 12:55:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lvweizhong

铜虫 (著名写手)

首先,你为什么要改呢?

发自小木虫Android客户端
3楼2015-10-24 14:52:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

博学GG

新虫 (初入文坛)

引用回帖:
3楼: Originally posted by lvweizhong at 2015-10-24 14:52:09
首先,你为什么要改呢?

我有强迫症。。。
如果一个问题不能搞透彻就会很心烦,毕竟我认为可以改,但问题不知道出在哪里
4楼2015-10-25 15:55:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 310求调剂 +3 baibai1314 2026-03-16 3/150 2026-03-21 03:56 by JourneyLucky
[考研] 一志愿武理材料305分求调剂 +6 想上岸的鲤鱼 2026-03-18 7/350 2026-03-21 01:03 by JourneyLucky
[考研] 299求调剂 +4 shxchem 2026-03-20 5/250 2026-03-21 00:24 by 星空星月
[考研] 330求调剂 +4 小材化本科 2026-03-18 4/200 2026-03-20 23:13 by JourneyLucky
[考研] 304求调剂 +7 司空. 2026-03-18 7/350 2026-03-20 23:08 by JourneyLucky
[考研] 350求调剂 +5 weudhdk 2026-03-19 5/250 2026-03-20 22:04 by luoyongfeng
[考研] 求调剂 +3 eation27 2026-03-20 3/150 2026-03-20 19:32 by JourneyLucky
[基金申请] 学校已经提交到NSFC,还能修改吗? 40+4 babangida 2026-03-19 8/400 2026-03-20 15:58 by babero
[考博] 申博26年 +3 八6八68 2026-03-19 3/150 2026-03-19 19:43 by nxgogo
[考研] 0703化学调剂 +4 18889395102 2026-03-18 4/200 2026-03-19 16:13 by 30660438
[考研] 266求调剂 +5 阳阳哇塞 2026-03-14 10/500 2026-03-19 15:08 by 阳阳哇塞
[考研] 344求调剂 +6 knight344 2026-03-16 7/350 2026-03-18 20:13 by walc
[考研] 【同济软件】软件(085405)考研求调剂 +3 2026eternal 2026-03-18 3/150 2026-03-18 19:09 by 搏击518
[考研] 0854可跨调剂,一作一项核心论文五项专利,省、国级证书40+数一英一287 +8 小李0854 2026-03-16 8/400 2026-03-18 14:35 by 搏击518
[考研] 302求调剂 +10 呼呼呼。。。。 2026-03-17 10/500 2026-03-18 12:45 by Linda Hu
[考研] 312求调剂 +8 陌宸希 2026-03-16 9/450 2026-03-18 12:39 by Linda Hu
[考研] 材料,纺织,生物(0856、0710),化学招生啦 +3 Eember. 2026-03-17 9/450 2026-03-18 10:28 by Eember.
[考研] 材料专硕326求调剂 +6 墨煜姒莘 2026-03-15 7/350 2026-03-17 17:10 by ruiyingmiao
[考研] 304求调剂 +3 曼殊2266 2026-03-14 3/150 2026-03-16 16:39 by houyaoxu
[考研] 0703化学调剂 290分有科研经历,论文在投 +7 腻腻gk 2026-03-14 7/350 2026-03-16 10:12 by houyaoxu
信息提示
请填处理意见