Info

この質問は閉じられています。 編集または回答するには再度開いてください。

How to code this problem?

1 回表示 (過去 30 日間)
John Amitage
John Amitage 2019 年 5 月 10 日
閉鎖済み: MATLAB Answer Bot 2021 年 8 月 20 日
For example,
I got
A=[ 1 2 4 5 1 .......]
I want to calculate:
X1=(x-2)(x-4)(x-5)(x-1).....
X2=(x-1)(x-4)(x-5)(x-1)....
X3=(x-1)(x-2)(x-5)(x-1)....
And so on
So how can I code it on Matlab?
Thank you very much!
  2 件のコメント
James Tursa
James Tursa 2019 年 5 月 10 日
What have you done so far? What specific problems are you having with your code? Are you after a symbolic result, or a numeric result for a specific value of x?
John Amitage
John Amitage 2019 年 5 月 10 日
Hi, thank you for your answer
I've tried
syms x
X=[1 2 3]
n=size(X,2)
A=1
for i=2:n
A=A*(x-X(i))
end
And it gives me A=(x-2)(x-3)
So I'm finding a way to make the program also gives me B=(x-1)(x-3) and C=(x-1)(x-2) and generalize it so when I input any vector X with any n=size(X,2) it can give me the full answer.
Specifically, I'm doing Lagrange Interpolation
Thank you
(sorry for my English)

回答 (1 件)

James Tursa
James Tursa 2019 年 5 月 10 日
E.g.,
syms x
A = [1 2 4 5];
n = numel(A);
P = prod(x-A);
X = cell(n,1);
for k=1:n
X{k} = P / (x-A(k));
end
This gives a cell array
>> X{1}
ans =
(x - 2)*(x - 4)*(x - 5)
>> X{2}
ans =
(x - 1)*(x - 4)*(x - 5)
>> X{3}
ans =
(x - 1)*(x - 2)*(x - 5)
>> X{4}
ans =
(x - 1)*(x - 2)*(x - 4)
  10 件のコメント
John Amitage
John Amitage 2019 年 5 月 10 日
ahh I understand now, i'm so sorry for taking your time :D
Thank you and have a good day !
James Tursa
James Tursa 2019 年 5 月 10 日
No problem! Note that it is easy to generalize this to an arbitrary sized "A" variable by using a cell array. It would be horrendous to try and implement this with named variables X1, X2, etc.

製品


リリース

R2018a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by