数值分析编程
⑴ 数值分析对学计算机有什么用途
数值分析里,有很多关于迭代的介绍,而计算机编程,对于迭代运用有着一定的要求,所以,数值分析学好以后,更方便学习计算机编程。
数值分析是是研究分析用计算机求解数学计算问题的数值计算方法及其理论的学科。以数字计算机求解数学问题的理论和方法为研究对象,为计算数学的主体部分。
(1)数值分析编程扩展阅读:
数值分析的研究领域:
函数求值
数值分析中最简单的问题就是求出函数在某一特定数值下的值。最直觉的方法是将数值代入函数中计算,不过有时此方式的效率不佳。像针对多项式函数的求值,较有效率的方式是秦九韶算法,可以减少乘法及加法的次数。若是使用浮点数,很重要的是是估计及控制舍入误差。
求解方程
求根算法是要解一非线性方程,其名称是因为函数的根就是使其值为零的点。若函数本身可微且其导数是已知的,可以用牛顿法求解,其他的方法包括二分法、割线法等。线性化则是另一种求解非线性方程的方法。
求解特征值
许多重要的问题可以用奇异值分解或特征分解来表示。例如有些图像压缩算法就是以奇异值分解为基础。统计学中对应的工具称为主成分分析。
最优化
最优化问题的目的是要找到使特定目标函数有最大值(或最小值)的点,一般而言这个点需符合一些约束。
依目标函数及约束条件的不同,最佳化又可以再细分:例如线性规划处理目标函数及约束条件均为线性的情形,常用单纯形法来求解。若目标函数及约束条件其中有一项为非线性,就是非线性规划的范围。
有约束条件的问题可以利用拉格朗日乘数转换为没有约束条件的问题。
积分计算
数值积分的目的是在求一定积分的值。一般常用牛顿-寇次公式,包括辛普森积分法、高斯求积等。上述方式是利用分治法来处理积分问题,也就是将大范围的积分切割成许多小范围的积分,再进行计算。
⑵ MATLAB和数值分析应该先学习哪个
MATLAB和数值分析应该先学习哪个?
这个可以根据自己的数学基础和编程语言的基础来判断:
1、如数学基础比较好,可以先学习matlab,等基本掌握matlab操作和简单编程,再学习数值分析
2、如已掌握matlab操作和简单编程,则可以先学习数值分析
3、如这两门都是初学,同时学习matlab操作和简单编程和数值分析的初步,交叉进行
⑶ 数值分析编程matlab
数值分析有好几块啊。
对于积分可以看:http://www.matlabsky.com/thread-7210-1-1.html
常微分方程可以看:http://www.matlabsky.com/thread-526-1-1.html
当然还有其它的一些,看你要什么方面的。
=============
(一题)
%(1)
clear
n=9;
[ii,jj]=meshgrid(1:n);
A=(ii+jj-1).^2;
%A=(ii+jj).^2; %(2)
%A=1./(ii+jj-1); %(3)
b=sum(A,2);
%%下面两行是测试函数
%A=rand(n );
%b=rand(n,1);
AA=A;
bb=b;
for i=1:n-1
%选主元
[maindiag(i),index]=max(abs(A(i:end,i)));
index=index+i-1;
%交换行i<--->index
temp=A(index,: );
A(index,: )=A(i,: );
A(i,: )=temp;
temp=b(index);
b(index)=b(i);
b(i)=temp;
%消行
for j=i+1:n
temp=A(j,i)/A(i,i);
A(j,: )=A(j,: )-temp*A(i,: );
b(j )=b(j )-temp*b(i);
end
A;
end
%上三角求解
for i=n:-1:1
for j=1:i-1
temp=A(j,i)/A(i,i);
A(j,: )=A( j,: )-temp*A(i,: );
b(j )=b(j )-temp*b(i);
end
x(i)=b(i)/A(i,i);
end
maindiag %查看列主元
AA*x'-bb %由于矩阵奇异,列主元法得到的解不准确
%%(1)例在n<=6时,列主元法可行,n>6列主元法失效
============
(二题)
clear
x=-5:0.5:5;
x=x(:);
y=[0,-0.0001,-0.0002,-0.0003,-0.0004,-0.0048,-0.0366,-0.1581,-0.3679,-0.3894,0,0.3894,0.3679,0.1581,0.0366,0.0048,0.0004,0.0003,0.0002,0.0001,0];
y=y(:);
yy=[];
ii=1:2:7;
for i=1:length(ii)
p=polyfit(x,y,ii(i));
yy(:,i)=polyval(p,x);
info{i}=num2str([num2str(ii(i)),'次多项式']);
end
p=spline(x,y);
yy(:,end+1)=ppval(p,x);
info{end+1}='样条';
info{end+1}='原始数据';
plot(x,yy,x,y,'*')
legend(info,'location','NorthWest')
⑷ 数值分析 编程
俺有。。。你可以私信俺 俺回去给你找
⑸ 数值分析编程
是这样的吗?
format rat
n=8 %n=20
A=zeros(n)+diag(3*ones(n,1),0)+diag(-1/2*ones(n-1,1),1)+diag(-1/4*ones(n-2,1),2)+diag(-1/2*ones(n-1,1),-1)+diag(-1/4*ones(n-2,1),-2)
%b=ones(n,1)
b=[1:n]'
x=A\b
结果:
n =
8
A =
3 -1/2 -1/4 0 0 0 0 0
-1/2 3 -1/2 -1/4 0 0 0 0
-1/4 -1/2 3 -1/2 -1/4 0 0 0
0 -1/4 -1/2 3 -1/2 -1/4 0 0
0 0 -1/4 -1/2 3 -1/2 -1/4 0
0 0 0 -1/4 -1/2 3 -1/2 -1/4
0 0 0 0 -1/4 -1/2 3 -1/2
0 0 0 0 0 -1/4 -1/2 3
b =
1
2
3
4
5
6
7
8
x =
878/1217
175/131
2343/1180
1685/644
1927/602
2143/581
416/109
1426/395
再用雅可比迭代和高斯-塞德尔迭代法求解?
⑹ 数值分析编程题跪求解答
clear
x=[.2 .4 .6 .8 1.0];
y=[0.98 0.92 0.81 0.64 0.38];
yi0=interp1(x,y,0.025,'linear')
xi=0:.02:1;
yi=interp1(x,y,xi,'linear');
zi=interp1(x,y,xi,'spline');
wi=interp1(x,y,xi,'cubic');
plot(x,y,'o',xi,yi,'r+',xi,zi,'g*',xi,wi,'k.-')
legend('原始点','线性点','三次样条','三次多项式')
这是一点提示,自己再搞搞吧,我比较忙,要不然就帮你弄了。