matlab 迭代我使用matlab中的fsolve函数解方程组,老是出现exitflag=0,我查了下是说迭代超过最大

matlab 迭代
我使用matlab中的fsolve函数解方程组,老是出现exitflag=0,我查了下是说迭代超过最大值,我想问下解决办法,谢谢!
我已经改过了,但是显示超过矩阵的维数,Index exceeds matrix dimensions.运算进行不下去,我想知道当计算不收敛的时候,有哪些解决方法?难道只有不断的尝试初值,碰运气??
WINANA11 1年前 已收到7个回答 举报

harian2007 幼苗

共回答了18个问题采纳率:88.9% 举报

在后面加上optimset('MaxIter',最大迭代次数),例如
x = fsolve(@myfun,[2 3 4],optimset('MaxIter',100000))

1年前

1

什么名字最好呢 幼苗

共回答了1个问题 举报

在后面加上optimset('MaxIter',最大迭代次数),例如
x = fsolve(@myfun,[2 3 4],optimset('MaxIter',100000))
1.exitflag
>0---算法收敛
=0---达到最大迭代次数而停止
<0---算法收敛
你这里出现=0,不见得是不收敛,但是至少肯定此迭代公式收敛速度过慢。...

1年前

2

luoxujun 幼苗

共回答了40个问题 举报

有些方程本身就不收敛,无解的,是没有办法的
有些需要改变方程的形式,构造新的迭代形式

1年前

1

陶ii 幼苗

共回答了7个问题 举报

1.exitflag
>0---算法收敛
=0---达到最大迭代次数而停止
<0---算法收敛
你这里出现=0,不见得是不收敛,但是至少肯定此迭代公式收敛速度过慢。初值的选择固然非常重要,但是要不断尝试显然不是办法。
2.我想说一说,如何构造迭代函数使之具有较快的收敛速度,只说方程,方程组同理。
把求解方程g(x)=0转化为求不动点问题,从不动点方程...

1年前

1

yjr1111 幼苗

共回答了12个问题 举报

在后面加上optimset('MaxIter',最大迭代次数),例如
x = fsolve(@myfun,[2 3 4],optimset('MaxIter',100000))

1年前

1

爱如空气般 幼苗

共回答了6个问题 举报

你解的是线性方程组的话用solve就可以了,不会出现其它问题,若是微分方程组或偏微方程组,那就有点麻烦了,最好套用工程背景进行求解,比如可用振动理论中的求解震动规律的方法,要活学活用!

1年前

1

粉色的真爱 幼苗

共回答了28个问题 举报

楼主没有给出具体的问题,我们在这不好回答。我猜你是在解一个比较特殊的非线性的方程组。
但说句实话,对于病态的方程组,很少有人用fsolve去解。
建议你用用启发式算法,比如matlab自带的遗传算法(Genetic Algorithm),模拟退火(Simulated Annealing)。当然你也可以在file exchange里下载网友提供的m文件,ant colony ,tab...

1年前

1
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 22 q. 1.565 s. - webmaster@yulucn.com