Регистрация не е нужна, освен при създаване на тема в "Задача на седмицата".

Домашно по линейна алгебра използвайки Wolfram Mathematica

Домашно по линейна алгебра използвайки Wolfram Mathematica

Мнениеот Гост » 24 Яну 2023, 00:22

Здравейте!
Трябва ми малко помощ с тази задачи. Ще съм Ви много благодарен, ако ми помогнете!

Задача 2: Да се намери лицето на четириъгълника, определен от точките A (1, 1, 1), B (2, 3, 4), C (4, 3, 2) и D (3, 1, −1).

Трябва да я направим в Wolfram Mathematica.
Гост
 

Re: Домашно по линейна алгебра използвайки Wolfram Mathemati

Мнениеот peyo » 02 Фев 2023, 17:27

Гост написа:Здравейте!
Трябва ми малко помощ с тази задачи. Ще съм Ви много благодарен, ако ми помогнете!

Задача 2: Да се намери лицето на четириъгълника, определен от точките A (1, 1, 1), B (2, 3, 4), C (4, 3, 2) и D (3, 1, −1).

Трябва да я направим в Wolfram Mathematica.



Не ми е интересна Mathematica, ще ползваме Python, Sympy и Numpy.

4 точки в 3D пространството да образуват 4-ъгълник трябва да лежат на една равнина. Да видим дали е така!

Код: Избери целия код
from sympy import *
var("x,y,z,a,b,c,d")
Px = [ (1, 1, 1), (2, 3, 4), (4, 3, 2), (3, 1, -1)]
R = a*x+b*y+c*z+d

s = solve([ R.subs(x,x_).subs(y,y_).subs(z,z_) for x_,y_,z_ in Px])
s


Out[104]: {d: 0, b: -2*c, a: c}

Има равнина и изглежда минава през нулата. Да видим да я опростим:
In [103]: simplify(R.subs(s)/c)
Out[103]: x - 2*y + z

Ок, но това не ни приближава да решението на задачата, само проверихме, че задачата има решение.

Сега как се намират лицата на триъгълници в 3D? Според тук може да изпозлваме cross product:
https://math.stackexchange.com/questions/128991/how-to-calculate-the-area-of-a-3d-triangle

$S=\dfrac{|\mathbf{AB}\times\mathbf{AC}|}2=\dfrac{|\mathbf{AB}||\mathbf{AC}||\sin(\theta)|}2$

Код: Избери целия код
import numpy as np

P = np.array(Px)
AB = P[1]-P[0]
AC = P[2]-P[0]

np.linalg.norm(np.cross(AB,AC))/2


Out[109]: 4.898979485566356

Да намерим лицата на всички възможни 3ъгълници от 4 точки:

Код: Избери целия код
def area(A,B,C):
   return np.linalg.norm(np.cross(A-B,A-C))/2
   
A,B,C,D = P
S4 = area(A,B,C),area(A,B,D),area(A,C,D),area(B,C,D)
S4


Out[116]: (4.898979485566356, 4.898979485566356, 4.898979485566356, 4.898979485566356)


Хм. По някаква причина всички лица са еднакви. Това най-вероятно е зашото точките образвуват пространствен ромб, но не ми се прави чертеж да проверя. Както и да е, това оше изначава, че 4-ъгълника е изпъкнал и лицето му е:

In [115]: sum(S4)/2
Out[115]: 9.797958971132712

Може би. Щеше да е хубаво да има и чертеж, но не е толкова важно.
peyo
Математик
 
Мнения: 1768
Регистриран на: 16 Мар 2019, 09:35
Местоположение: София
Рейтинг: 664


Назад към Кандидат-студенти



Кой е на линия

Регистрирани потребители: Google [Bot]

Форум за математика(архив)