How to code this problem?

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 日

0 投票

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 日
The program gives me:
X =
4×1 cell array
{1×1 sym }
{0×0 double}
{0×0 double}
{0×0 double}
How can I convert it?
Thank You :D
James Tursa
James Tursa 2019 年 5 月 10 日
編集済み: James Tursa 2019 年 5 月 10 日
What is the A variable you are using? What version of MATLAB are you using?
John Amitage
John Amitage 2019 年 5 月 10 日
My Matlab version is R2018a
James Tursa
James Tursa 2019 年 5 月 10 日
And A?
John Amitage
John Amitage 2019 年 5 月 10 日
Oh I am sorry, may I ask you what is "A variable"?
James Tursa
James Tursa 2019 年 5 月 10 日
Look at your original post, you have this variable
A=[ 1 2 4 5 1 .......]
I am asking you what "A" variable you are using with the code I have given you. The code works for me as I have demonstrated.
John Amitage
John Amitage 2019 年 5 月 10 日
I copied your code but without the semicolon because the program display nothing if it's there
Screenshot (46).png
James Tursa
James Tursa 2019 年 5 月 10 日
編集済み: James Tursa 2019 年 5 月 10 日
So, what is the problem? It looks like the code works for you. What does this show after you run the code:
X{1}
X{2}
X{3}
X{4}
Aren't those the polynomials you want?
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

質問済み:

2019 年 5 月 10 日

閉鎖済み:

2021 年 8 月 20 日

Community Treasure Hunt

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

Start Hunting!

Translated by