欢迎来到天天文库
浏览记录
ID:59194896
大小:39.73 KB
页数:9页
时间:2020-09-10
《数值分析数学实验上机实验编程matlab源代码.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Newton法及改进的Newton法源程序:clear%%%%输入函数f=input('请输入需要求解函数>>','s')%%%求解f(x)的导数df=diff(f);%%%改进常数或重根数miu=2;%%%初始值x0x0=input('inputinitialvaluex0>>');k=0;%迭代次数max=100;%最大迭代次数R=eval(subs(f,'x0','x'));%求解f(x0),以确定初值x0时否就是解while(abs(R)>1e-8)x1=x0-miu*eval(subs(f,
2、'x0','x'))/eval(subs(df,'x0','x'));R=x1-x0;x0=x1;k=k+1;if(eval(subs(f,'x0','x'))<1e-10);breakendifk>max;%如果迭代次数大于给定值,认为迭代不收敛,重新输入初值ss=input('mayberesultiserror,chooseanewx0,y/n?>>','s');ifstrcmp(ss,'y')x0=input('inputinitialvaluex0>>');k=0;elsebreakende
3、ndendk;%给出迭代次数x=x0;%给出解Gauss消元法源程序:cleara=input('输入系数阵:>>')b=input('输入列阵b:>>')n=length(b);A=[ab]x=zeros(n,1);%%%函数主体Yipusilong-1;fork=1:n-1;%%%是否进行主元选取ifabs(A(k,k))4、forr=k+1:n;ifabs(A(r,k))>abs(t)p=r;elsep=k;endend%%%交换元素ifp~=k;forq=k:n+1;s=A(k,q);A(k,q)=A(p,q);A(p,q)=s;endendend%%%判断系数矩阵是否奇异或病态非常严重ifabs(A(k,k))5、m;endendend%%%%求解xx(n)=A(n,n+1)/A(n,n);fork=n-1:-1:1;s=0;forr=k+1:n;s=s+A(k,r)*x(r);endt=(A(k,n+1)-s)x(k)=(A(k,n+1)-s)/A(k,k)endLagrange插值源程序:n=input('将区间分为的等份数输入:');s=[-1+2/n*[0:n]];%%%给定的定点,Rf为给定的函数x=-1:0.01:1;f=0;forq=1:n+1;l=1;%求插值基函数fork=1:n+1;if6、k~=q;l=l.*(x-s(k))./(s(q)-s(k));elsel=l;endendf=f+Rf(s(q))*l;%求插值函数endplot(x,f,'r')%作出插值函数曲线gridonholdon分段线性插值源程序clearn=input('将区间分为的等份数输入:');s=[-1+2/n*[0:n]];%%%给定的定点,Rf为给定的函数m=0;hh=0.001;forx=-1:hh:1;ff=0;fork=1:n+1;%%%求插值基函数switchkcase1ifx<=s(2);l=7、(x-s(2))./(s(1)-s(2));elsel=0;endcasen+1ifx>s(n);l=(x-s(n))./(s(n+1)-s(n));elsel=0;endotherwiseifx>=s(k-1)&x<=s(k);l=(x-s(k-1))./(s(k)-s(k-1));elseifx>=s(k)&x<=s(k+1);l=(x-s(k+1))./(s(k)-s(k+1));elsel=0;endendendff=ff+Rf(s(k))*l;%%求插值函数值endm=m+1;f(m)=ff8、;end%%%作出曲线x=-1:hh:1;plot(x,f,'r');gridonholdon三次样条插值源程序:(采用第一边界条件)clearn=input('将区间分为的等份数输入:');%%%插值区间a=-1;b=1;hh=0.001;%画图的步长s=[a+(b-a)/n*[0:n]];%%%给定的定点,Rf为给定的函数%%%%第一边界条件Rf"(-1),Rf"(1)v=5000*1/(1+25*a*a)^3-50/(1+25*a*a)^4;f
4、forr=k+1:n;ifabs(A(r,k))>abs(t)p=r;elsep=k;endend%%%交换元素ifp~=k;forq=k:n+1;s=A(k,q);A(k,q)=A(p,q);A(p,q)=s;endendend%%%判断系数矩阵是否奇异或病态非常严重ifabs(A(k,k))5、m;endendend%%%%求解xx(n)=A(n,n+1)/A(n,n);fork=n-1:-1:1;s=0;forr=k+1:n;s=s+A(k,r)*x(r);endt=(A(k,n+1)-s)x(k)=(A(k,n+1)-s)/A(k,k)endLagrange插值源程序:n=input('将区间分为的等份数输入:');s=[-1+2/n*[0:n]];%%%给定的定点,Rf为给定的函数x=-1:0.01:1;f=0;forq=1:n+1;l=1;%求插值基函数fork=1:n+1;if6、k~=q;l=l.*(x-s(k))./(s(q)-s(k));elsel=l;endendf=f+Rf(s(q))*l;%求插值函数endplot(x,f,'r')%作出插值函数曲线gridonholdon分段线性插值源程序clearn=input('将区间分为的等份数输入:');s=[-1+2/n*[0:n]];%%%给定的定点,Rf为给定的函数m=0;hh=0.001;forx=-1:hh:1;ff=0;fork=1:n+1;%%%求插值基函数switchkcase1ifx<=s(2);l=7、(x-s(2))./(s(1)-s(2));elsel=0;endcasen+1ifx>s(n);l=(x-s(n))./(s(n+1)-s(n));elsel=0;endotherwiseifx>=s(k-1)&x<=s(k);l=(x-s(k-1))./(s(k)-s(k-1));elseifx>=s(k)&x<=s(k+1);l=(x-s(k+1))./(s(k)-s(k+1));elsel=0;endendendff=ff+Rf(s(k))*l;%%求插值函数值endm=m+1;f(m)=ff8、;end%%%作出曲线x=-1:hh:1;plot(x,f,'r');gridonholdon三次样条插值源程序:(采用第一边界条件)clearn=input('将区间分为的等份数输入:');%%%插值区间a=-1;b=1;hh=0.001;%画图的步长s=[a+(b-a)/n*[0:n]];%%%给定的定点,Rf为给定的函数%%%%第一边界条件Rf"(-1),Rf"(1)v=5000*1/(1+25*a*a)^3-50/(1+25*a*a)^4;f
5、m;endendend%%%%求解xx(n)=A(n,n+1)/A(n,n);fork=n-1:-1:1;s=0;forr=k+1:n;s=s+A(k,r)*x(r);endt=(A(k,n+1)-s)x(k)=(A(k,n+1)-s)/A(k,k)endLagrange插值源程序:n=input('将区间分为的等份数输入:');s=[-1+2/n*[0:n]];%%%给定的定点,Rf为给定的函数x=-1:0.01:1;f=0;forq=1:n+1;l=1;%求插值基函数fork=1:n+1;if
6、k~=q;l=l.*(x-s(k))./(s(q)-s(k));elsel=l;endendf=f+Rf(s(q))*l;%求插值函数endplot(x,f,'r')%作出插值函数曲线gridonholdon分段线性插值源程序clearn=input('将区间分为的等份数输入:');s=[-1+2/n*[0:n]];%%%给定的定点,Rf为给定的函数m=0;hh=0.001;forx=-1:hh:1;ff=0;fork=1:n+1;%%%求插值基函数switchkcase1ifx<=s(2);l=
7、(x-s(2))./(s(1)-s(2));elsel=0;endcasen+1ifx>s(n);l=(x-s(n))./(s(n+1)-s(n));elsel=0;endotherwiseifx>=s(k-1)&x<=s(k);l=(x-s(k-1))./(s(k)-s(k-1));elseifx>=s(k)&x<=s(k+1);l=(x-s(k+1))./(s(k)-s(k+1));elsel=0;endendendff=ff+Rf(s(k))*l;%%求插值函数值endm=m+1;f(m)=ff
8、;end%%%作出曲线x=-1:hh:1;plot(x,f,'r');gridonholdon三次样条插值源程序:(采用第一边界条件)clearn=input('将区间分为的等份数输入:');%%%插值区间a=-1;b=1;hh=0.001;%画图的步长s=[a+(b-a)/n*[0:n]];%%%给定的定点,Rf为给定的函数%%%%第一边界条件Rf"(-1),Rf"(1)v=5000*1/(1+25*a*a)^3-50/(1+25*a*a)^4;f
此文档下载收益归作者所有