我在学数值分析这门课,其中好多地方用到matlab,想请问关于数值分析的matlab应该怎样学?

我一看到编程中的循环嵌套就晕菜了!... 我一看到编程中的循环嵌套就晕菜了! 展开
 我来答
jaaonwbqs3
2011-09-19 · TA获得超过148个赞
知道答主
回答量:164
采纳率:0%
帮助的人:107万
展开全部
下面是我写的,放心用去啦~~~
%超松弛迭代(SOR方法)
function [x k flag]=SOR(A, b, eps ,w,maxl)
%A为方程组的系数矩阵
%b为方程组的右端向量
%eps为精度要求
%maxl为最大迭代次数,缺省值为100
%w为超松弛因子,默认值为1
%x为方程组的解
%k为迭代次数
%flag为指标变量
%赋初值:
if nargin<5 maxl=100;end
if nargin<4 w=1;end
if nargin<3 eps=1e-5;end
n=length(b); k=0;
x=zeros(n,1); y=zeros(n,1); flag='OK';
%开始迭代:
while true
y=x; %y,z均为辅助变量
for i=1:n
z=b(i);
for j=1:n
if j~=i
z=z-A(i,j)*x(j);
end
end
if abs(A(i,i))<1e-10|k==maxl
flag='failure';return;
end
z=z/A(i,i);x(i)=(1-w)*x(i)+w*z;
end
if norm(y-x,inf)<eps
break;
end
k=k+1;
end

%Jacobi迭代法解线性方程组
function [x k flag]=Jacobi(A, b, eps ,maxl)
%A为方程组的系数矩阵
%b为方程组的右端向量
%eps为精度要求
%maxl为最大迭代次数,缺省值为100
%x为方程组的解
%k为迭代次数
%flag为指标变量
%赋初值:
if nargin<4 maxl=100;end
if nargin<3 eps=1e-5;end
n=length(b); k=0;
x=zeros(n,1); y=zeros(n,1); flag='OK';
%开始迭代:
while 1
for i=1:n
y(i)=b(i);
for j=1:n
if j~=i
y(i)=y(i)-A(i,j)*x(j);
end
end
if abs(A(i,i))<1e-10|k==maxl
flag='failure';return;
end
y(i)=y(i)/A(i,i);
end
if norm(y-x,inf)<eps
break;
end
x=y; k=k+1;
end
稍微调试肯定可以通过,都是经过测试的,记得给我分数呦,谢啦~~~
中国人看好中国
2011-09-18 · TA获得超过3355个赞
知道小有建树答主
回答量:1197
采纳率:33%
帮助的人:763万
展开全部
可以先看看《精通matlab7.0》,把上半册看完,就差不多够用了,然后再去学数值分析,边学边动手操作,很有趣的
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yjoli
2011-09-19 · TA获得超过1384个赞
知道小有建树答主
回答量:472
采纳率:0%
帮助的人:228万
展开全部
个人经验:
我个人认为重要的还是对数值分析方法本身的学习和理解,也就是把自己的数学底子打牢。而对于matlab,仅仅是个工具。
不谦虚的说,只要知道一种程序语言的基本知识,在比较好的数学功底下,大多数的程序都是可以自己编代码解决的,而matlab之所以好用是因为提供了很多方便使用的函数、仿真之类的。举例来讲,学信号分析的人都要学fft,matlab中也提供了该函数,但如果你不知道fft本身的数学基础,何谈对该函数的理解应用?这也是我自己的感受,在遇到某些以前未用的函数时,就总会去理解和学习,甚至查找这个函数实际的计算方法是什么,也就是数学基础咯。
所以,工具的掌握在于练,只是武功招式,而内功是数学基础,把数学基础和程序的算法能合二为一时,你就算是打通了任督二脉,必是高手。
个人经验,仅供参考。
来自:求助得到的回答
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式