Софтуерно Инженерство
Loading...
+ Нов въпрос
mishedon avatar mishedon 3 Точки

Linear Algebra Exercise

Привет!

Правя тази тема за въпроси, свързани със съответното упражнения.

Имам съмнения за коефициентите, които получих в Problem 1 при e1, e2 = [[2, 3], [-5, 1]].

Моят резултат е :

Coefficients:  [-1.31176471  2.04117647]

Какво получавате? Нещо не ми се връзва уравнението -1.3 * [2, 3] + 2.04 * [-5, 1] = [3.5, 8.6]

Тагове:
0
Math Concepts for Developers
Vesso1980 avatar Vesso1980 483 Точки

Здравей,

и при мен излизат същите стойности.

0
ddrenski avatar ddrenski 2 Точки
Привет, аз получих Coefficients: [32.8 -8.9] и сега като ви гледам си мисля, че съм се омазал нейде. :-)
0
ddrenski avatar ddrenski 2 Точки

Ако сметна v=np.linalg.solve(A, b) - получавам същите резултати като вас, но не трябва ли да се сметне инвертираната А - тоест v=np.linalg.solve(A_inv, b), а A_inv=np.linalg.inv(A)? Тогава получавам моя резултат.

0
mishedon avatar mishedon 3 Точки

 

Хммм... Май си отговорих сам - ако се опиташ да го решиш като система уравнения според мен нещата изглеждат така (x = ламбда 1, y = ламбда 2):

| 2x + 3y = 3.5

| -5x + y = 8.6

-------------------

| y = 8.6 + 5x

| 2x + 3 (8.6 + 5x) = 3.5 <=> 17x + 25.8 = 3.5 <=> 17x = -22.3

-------------------

От това излиза, че x = -1.31...

А y = 8.6 + 5(-1.31) <=> y = 8.6 - 6.55 <=> y= 2.05 някъде. С малки закръгляния. А защо трябва A да се инвертира?

0
mishedon avatar mishedon 3 Точки

Оф разменил съм ги - но поне това доказва, че -1.31 и 2.05 НЕ са решения, защото не удовлетворяват равенството. Ще опитам още веднъж с риск да спамя - ако някой вижда грешка моля да я посочи :) Опитваме се да намерим истината.

x[2, 3] + y[-5, 1] = [3.5, 8.6]

| 2x - 5y = 3.5
| 3x + y = 8.6

| y = 8.6 - 3x
| 2x - 5 (8.6 - 3x) = 3.5

=> 17x = 46.5
x = 2.7353

=> y = 8.6 - 8.2059 = 0.39

Обаче ако заместим обратно тези числа - началното уравнение по мои сметки излиза (с малки разлики заради приближенията):

2.7[2, 3] + 0.39[-5, 1] = [3.5, 8.6]
[5.4, 8.1] + [-1.95, 0.39] =  [3.45, 8.6]

Сега въпросът остава - какво бъркам при параметрите на функцията в python

0
30/04/2018 19:12:51
ThePSXHive avatar ThePSXHive 436 Точки

Предполагам, че обяснениято за объркването е свързано с правило от линейната алгебра. В numpy (както и в линейната алгебра) решението на тази система сe представя с общата ф-ла X = A^(-1) x B. Това налага и намирането на инвертираната (обратната) матрица, и затова решението на ddrenski е вярното. Защо получаваш верния резултат при размяната на коефициентите? Защото едно правило от ЛА гласи, че размяната на редовете със стълбовете не променя стойността на една детерминанта, а при определянето на обратната матрица се изчислява и стойността на детерминантата с коефициентите от уравнението. Тоест, стойността на детерминантите:

|a1 b1|
|a2 b2|

и

|a1 a2|
|b1 b2|

е една и съща, а оттам и обратната матрица получава идентичен вид.

0
mishedon avatar mishedon 3 Точки

Добре - видях формулата, пробвах я, получих същите резултати като ddrenski, но въпреки това нещо не ми се връзва.

Ако приемем, че А = np.array([e1, e2]) и извикаме solve(inv(A), np.array(v)) получаваме споменатото горе:

[32.8, -8.9]

Обаче - като го заместим в уравнението - нещата не равнят:

32.8 [2, 3] - 8.9 [-5, 1] = [3.5, 8.6]

[65.6, 98.4] + [44.5, -8.9] = [3.5, 8.6]

Гледах и клипчета за solve... https://www.youtube.com/watch?v=44pAWI7v5Zk

Според мен трябва да се промени начинът на формиране на np.array за А. Правилното ми се вижда np.array([e1[0], e2[0]], [e1[1], e2[1]]) - по този начин, без инвертирано А, получавам:

Coefficients:  [2.73529412 0.39411765]

Този резултат вече, удовлетворява началното уравнение. Има ли резон?

0
Vesso1980 avatar Vesso1980 483 Точки

Защо да си ги размениел, аз мисля , че в първия вариант, в който показа уравненията беше правилен и когато заместим x и y с коефициентите се получаваха правилните стойности на v. 

Имаме базисните вектори е1 и е2 с координати [2, 3] и [-5, 1]  съответно. В случая a1 = 2, b1 = 3 и a2 = -5, b2 = 1 и се получават уравненията:

| 2x + 3y = 3.5

| -5x + y = 8.6

Не мога да разбера защо трябва да инвертираме. В условието пише "Finding the unknown coefficients is the same as solving "a linear system(with only one equation) v=λ1e1+λ2e2" . Мисля си, че ако трябваше да се инвертира, щеше да бъде споменато.

 

0
mishedon avatar mishedon 3 Точки

В следния случай:

| 2x + 3y = 3.5

| -5x + y = 8.6

се получават Coefficients:  [-1.31176471  2.04117647].

Проблемът в тези резултати според мен е, че ако заместим в v=λ1e1+λ2e2 не се получава равенство:

-1.3 * [2, 3] + 2.04 * [-5, 1] = [3.5, 8.6]

[-2.6, -3.9] + [-10.2, 2.04] = [3.5, 8.6]

[-12.8, -1.86] != [3.5, 8.6]

Може и аз да съм в голяма грешка...

0
donton avatar donton 4 Точки

Здравейте, някой има ли проблем с "import skimage.io". Пробвах и с "from skimage import io"===DLL load failed: Указаният модул не е намерен.

Инсталирах на ново scikit-image и нищо...Някой с решение на проблема? Благодаря

0
donton avatar donton 4 Точки

Това реши проблема:

https://stackoverflow.com/questions/43264773/pil-dll-load-failed-specified-procedure-could-not-be-found

0