MATLAB如何把计算出来的多项式输出?
在做一个拉格朗日插值多项式的程序,最后不是算出结果,而是把计算出来的多项式显示出来,不知道怎么输出中间有这么一段程序:fori=1:nt=1;forj=1:nifj~=i...
在做一个拉格朗日插值多项式的程序,最后不是算出结果,而是把计算出来的多项式显示出来,不知道怎么输出
中间有这么一段程序:
for i=1:n
t=1;
for j=1:n
if j~=i
t=t*(x-xx(j))/(xx(i)-xx(j));
end
end
s=s+t*yy(i);
end
这里循环出来的公式是我想要显示的 展开
中间有这么一段程序:
for i=1:n
t=1;
for j=1:n
if j~=i
t=t*(x-xx(j))/(xx(i)-xx(j));
end
end
s=s+t*yy(i);
end
这里循环出来的公式是我想要显示的 展开
2个回答
展开全部
比如我们输出一个函数f=A*sin(x)-B*exp(C*x)这种表达式,A,B,C是你输入的任何参数.
(1)你写上如下代码的M文件
function f=dispf(A,B,C)
syms x;
f=A*sin(x)-B*exp(C*x);
end
(2)现在你直接在命令窗口输入命令dispf就可以了,比如
>> dispf(12,36,78)
ans =
12*sin(x) - 36*exp(78*x)
(1)你写上如下代码的M文件
function f=dispf(A,B,C)
syms x;
f=A*sin(x)-B*exp(C*x);
end
(2)现在你直接在命令窗口输入命令dispf就可以了,比如
>> dispf(12,36,78)
ans =
12*sin(x) - 36*exp(78*x)
追问
试了一下,还在做调试,确实能输出
展开全部
function s = poly_printf(p)
if nargin > 1
error('too much input arguments !');
end
while p(1) == 0
p(1)=[];
end
l = length(p);
if l == 0
s = '0';
elseif l == 1
s = num2str(p(1));
elseif l == 2
if p(1) == 1
s = strcat('x+(',num2str(p(2)),')');
% 要考虑系数为负的情况,为了减少if嵌套的层数,干脆统一在系数上加括弧
% 防止出现‘+-’这种错误的表达式
else
s = strcat(num2str(p(1)),'*x+(',num2str(p(2)),')');
end
elseif l > 2;
for i = 1:l
if i == 1
if p(i) == 1
s = strcat('x.^',num2str(l-i));
% x一般为向量,故这里一定要使用.^ 否则会识别为矩阵乘法
% 并返回错误
else
s = strcat(num2str(p(i)),'*x.^',num2str(l-i));
end
elseif i == l
s = strcat(s,'+(',num2str(p(i)),')');
elseif i == l-1
if p(i) == 0;
s = s; %此行无用,仅为提高代码可读性
else
s = strcat(s,'+(',num2str(p(i)),')','*x');
end % if完之后一定要记得加end啊!
else
if p(i) == 0
s = s; %此行无用,仅为提高代码可读性
elseif p(i) == 1
s = strcat(s,'+x.^',num2str(l-i));
else
s = strcat(s,'+(',num2str(p(i)),')','*x.^',num2str(l-i));
end
end
end
end
这是我自己写的多项式输出函数,输出格式不太标准,但是这个是可以用eval重载的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询