⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fitfun.m

📁 该程序包包含大量的matlab程序
💻 M
字号:
function fe=fitfun()
%连续函数的最佳逼近
%取基{1, x, ...}
%fitfun.m

%默认算例为课本:P60,例3.1
%原函数f(x)=x^(1/2), 定义域 [1/4, 1]
%结果:P(x) = 10/27 + 88/135x		平方误差=0.00010803

fs=input('<连续函数的最佳逼近>\n输入原函数f(x):[直接回车表示:f(x)=x^(1/2)]\nf(x)=', 's');
if isempty(fs)
	fs='x^(1/2)';
end
f=sym(fs);
a=input('定义域([a, b]) 上界a:');
b=input('Domain ([a, b]) edge b:');
n=input('{1, x, x^2, ..., x^n}\nInput the maximum index n: ');

v=vv(n);
h=vh(n);
G=int(v*h, a, b);
B=int(f*v, a, b);
C=inv(G)*B;
fe=h*C;

%Error delta
SError=vpa(int(f*f, a, b)-int(f*h, a, b)*C, 6)

%Diagram
x=a:(b-a)/100:b;
y=subs(f,x);
plot(x,y,'r')
hold on
y=subs(fe,x);
plot(x,y)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function v=vv(n)
%Create vector in vertical style, such as 
% 				1
% 				x
% 		v =   x^2
% 				x^3
% 				...
% 				x^n

if (n<0 | n>9)
	error('Make sure ''n'' is in range of [0, 9]')
end
s='';
for i=0:n
	s=strcat(s, ';x^');
	s=strcat(s, num2str(i));
end
s(1)='[';
sz=size(s);
s(sz(2)+1)=']';

v=simplify(sym(s));
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function v=vh(n)
%Create vector in horizontal style, such as 
%		v=[1, x, x^2, ..., x^n]

if (n<0 | n>9)
	error('Make sure ''n'' is in range of [0, 9]')
end
s='';
for i=0:n
	s=strcat(s, ',x^');
	s=strcat(s, num2str(i));
end
s(1)='[';
sz=size(s);
s(sz(2)+1)=']';

v=simplify(sym(s));
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -