MATLAB切比雪夫逼近代码问题
答案:1 悬赏:60 手机版
解决时间 2021-03-12 10:38
- 提问者网友:王者佥
- 2021-03-11 16:57
MATLAB切比雪夫逼近代码问题
最佳答案
- 五星知识达人网友:从此江山别
- 2021-03-11 17:24
程序没有问题,可以运行,只是编写得有些繁琐,且结果并未化简,将m文件修改如下:
function f=Chebyshev(y,k,x0)syms t;T(1)=sym(1);T(2)=t;c(1)=int(subs(y,findsym(sym(y)),t)*T(1)/sqrt(1-t^2),t,-1,1)/pi;c(2)=2*int(subs(y,findsym(sym(y)),t)*T(2)/sqrt(1-t^2),t,-1,1)/pi;f=c(1)+c(2)*t;for i=3:k+1 T(i)=2*t*T(i-1)-T(i-2); c(i)=2*int(subs(y,findsym(sym(y)),t)*T(i)/sqrt(1-t^2),t,-1,1)/pi; f=f+c(i)*T(i); f=simple(vpa(f,6)); if(i==k+1) if(nargin==3) f=simple(vpa(subs(f,'t',x0),6)); end endend
输入:clearf=Chebyshev('1/(2-x)',6)
输出:f = .500477+.258941*t+.117457*t^2+.248284e-1*t^3+.483832e-1*t^4+.509296e-1*t^5
输入:clearf=Chebyshev('1/(2-x)',6,'z')
输出:f = .500477+.258941*z+.117457*z^2+.248284e-1*z^3+.483832e-1*z^4+.509296e-1*z^5
function f=Chebyshev(y,k,x0)syms t;T(1)=sym(1);T(2)=t;c(1)=int(subs(y,findsym(sym(y)),t)*T(1)/sqrt(1-t^2),t,-1,1)/pi;c(2)=2*int(subs(y,findsym(sym(y)),t)*T(2)/sqrt(1-t^2),t,-1,1)/pi;f=c(1)+c(2)*t;for i=3:k+1 T(i)=2*t*T(i-1)-T(i-2); c(i)=2*int(subs(y,findsym(sym(y)),t)*T(i)/sqrt(1-t^2),t,-1,1)/pi; f=f+c(i)*T(i); f=simple(vpa(f,6)); if(i==k+1) if(nargin==3) f=simple(vpa(subs(f,'t',x0),6)); end endend
输入:clearf=Chebyshev('1/(2-x)',6)
输出:f = .500477+.258941*t+.117457*t^2+.248284e-1*t^3+.483832e-1*t^4+.509296e-1*t^5
输入:clearf=Chebyshev('1/(2-x)',6,'z')
输出:f = .500477+.258941*z+.117457*z^2+.248284e-1*z^3+.483832e-1*z^4+.509296e-1*z^5
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯