我正在使用Matlab Code for Lagrange Interpolation。
我的问题是使用方程式。
要解决拉格朗日,您需要先找到Li(x)'s ( L0(x) to Ln(x) )
:
e.g。对于L0(x)
,我们得到了:
L0(x) = (x-x1) (x-x2) (x-x3) / (x0-x1) (x0-x2) (x0-x3)
以一个例子为例:
l0(x) = ( x^3 - ( 2 * x^2 ) + 2x ) / 6
这是一个等式。
我编写了代码,但它不接受变量 z
(我使用的代替X
),它告诉我们:
"未定义的功能或变量' z'。"
这当然是正确的,因为它是变量而不是数据,但我怎么能使用或写这个?
答案 0 :(得分:1)
MATLAB默认情况下不喜欢未定义的变量(和大多数编程语言一样!)
你有两种方法来解决你的问题:数字化解决拉格朗日"手工和#34; - 即使用像ode45
这样的函数,或者尝试象征性地执行它。这意味着您必须明确定义x
作为符号变量 - 使用syms x
并使用symbolic maths toolbox,或者使用数字方案,例如{{3} }。
如果要在MATLAB中定义函数,则需要将定义存储到单独的文件中并保存。
例如:
function out = ellZero( x, a )
x0 = a(1); x1 = a(2); x2 = a(3); x3 = a(4); % SET Constants
out = (x-x1).*(x-x2).*(x-x3)./((x0-x1).*(x0-x2).*(x0-x3)); % RET Expression
end
如果您想了解更多有关MATLAB如何处理functions
和' sub - functions
'的信息,请查看ode45
。您可能也对the documentation感兴趣。
希望有所帮助!