Fredholm第二类积分方程的MATLAB代码实现(1)
這是《The Numerical Solution of Integral Equations of the Second Kind》書上的例題代碼實(shí)現(xiàn),基于MATLAB來編寫的,對(duì)應(yīng)于這一篇的Python代碼點(diǎn)擊打開鏈接
本代碼主要實(shí)現(xiàn)Fredholm integral equations of the second kind,方程如下:?
? ? ? ? ?lamda*x(t)-integrate(K(t,s)*x(s))ds=y(t),a=0<=t<=b,K(t,s)取exp(s*t)?
首先,我們給定兩個(gè)精確解exp(-t)cos(t)和sqrt(t),求出其對(duì)應(yīng)的y(t),然后再來反解x(t).更詳細(xì)說明可?
參見《The Numerical Solution of Integral Equations of the Second Kind》P30-34.
首先定義各種函數(shù),保存為.m文件
第一步:定義核函數(shù)
function k=func_k(s,t) k=exp(s*t); %k的表達(dá)式第二步:定義給定的精確解x
function x=func_x(t) x=exp(-t)*cos(t); %x的表達(dá)式第三步:用精確解求出y
function y=func_y(x,k,a,b,lamda) syms t s; y=subs(lamda*x-int(x*k,t,a,b),t,s); % 用符號(hào)積分求出y的表達(dá)式,并統(tǒng)一y中的變量為s第四步:求方程組的右端項(xiàng)(相當(dāng)于Ax=b中的b)
function f=func_f(y,a,b,lamda,n) syms s; f=ones(n,1); for i=1:nf(i)=int(y*s^(i-1),s,a,b); %這里用符號(hào)積分求y*s^(i-1) end第五步:求系數(shù)c
function c=solve_c(f,a,b,lamda,n) % B=ones(n,n); %用于存放系數(shù)矩陣 for i=1:nfor j=1:nB(i,j)=-b^(i+j-1)/(factorial(j-1)*(i+j-1));endB(i,i)=lamda+B(i,i); end c=B\f; %求c,其為一個(gè)n維的向量 end第六步:求xn
function xn=solve_xn(y,c,a,b,lamda,n) syms t; m=0; for i=0:n-1m=m+c(i+1)*t^i/factorial(i); end xn=(y+m)/lamda;第七步:求無窮范數(shù)
function E=err(x,xn,a,b) syms s t; tt=a:0.1:b; E=vpa(norm(subs(subs(x-xn,s,t),t,tt),Inf),20); %取區(qū)間[a,b]中的離散點(diǎn),求無窮范數(shù)以上是定義好的函數(shù),接下來再寫一個(gè)主函數(shù)文件,然后運(yùn)行此文件即可。以上的核函數(shù),x函數(shù)等可以改成自己想要的!!!
clear n=input('please input n:') a=input('please input a:') b=input('please input b:') lamda=input('please input lamda:') e=ones(n,1); %用來存誤差 syms s t; for i=1:nk=func_k(s,t);x=func_x(t);y=func_y(x,k,a,b,lamda);f=func_f(y,a,b,lamda,i);c=solve_c(f,a,b,lamda,i);xn=solve_xn(y,c,a,b,lamda,i);e(i)=err(x,xn,a,b); end e if n==10figure(1)tt=a:0.1:b;plot(tt,vpa(subs(subs(x-xn,s,t),t,tt),20),'r--')xlabel('t'), ylabel('error')title('error,n=10,a=0,b=1,lamda=5') end運(yùn)行結(jié)果我就不放上來了,因?yàn)檫@臺(tái)電腦沒有按MATLAB,o(╥﹏╥)o
總結(jié)
以上是生活随笔為你收集整理的Fredholm第二类积分方程的MATLAB代码实现(1)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 四阶龙格库塔法求解微分方程【MATLAB
- 下一篇: IE7和IE8的CSS样式不兼容