وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

حل سیستم معادلات خطی با Numpy پایتون

0 149
زمان لازم برای مطالعه: 4 دقیقه


این ناپخته کتابخانه را می توان برای انجام انواع عملیات ریاضی/علمی مانند ماتریس متقاطع و محصولات نقطه، یافتن مقادیر سینوس و کسینوس استفاده کرد. تبدیل فوریه و دستکاری شکل و غیره. کلمه Numpy نمادی کوتاه برای “Numerical Python” است.

در این مقاله روش حل یک سیستم معادلات خطی با استفاده از کتابخانه Numpy پایتون را خواهید دید.

سیستم معادلات خطی چیست؟

ویکی پدیا الف را تعریف می کند سیستم معادلات خطی مانند:

در ریاضیات، سیستم معادلات خطی (یا سیستم خطی) مجموعه‌ای از دو یا چند معادله خطی است که مجموعه‌ای از متغیرها را شامل می‌شود.

هدف نهایی از حل یک سیستم معادلات خطی، یافتن مقادیر متغیرهای مجهول است. در اینجا یک مثال از یک سیستم معادلات خطی با دو متغیر مجهول آورده شده است. x و y:

معادله 1:

4x  + 3y = 20
-5x + 9y = 26

برای حل سیستم معادلات خطی فوق، باید مقادیر the را پیدا کنیم x و y متغیرها راه های مختلفی برای حل چنین سیستمی وجود دارد، مانند حذف متغیرها، قانون کرامر، تکنیک کاهش ردیف و راه حل ماتریس. در این مقاله به حل ماتریس خواهیم پرداخت.

در حل ماتریسی، سیستم معادلات خطی قابل حل به صورت ماتریس نشان داده می شود. AX = B. به عنوان مثال، ما می توانیم نمایندگی کنیم معادله 1 در قالب یک ماتریس به شرح زیر است:

A = (( 4   3)
     (-5   9))

X = ((x)
     (y))

B = ((20)
     (26))

برای یافتن ارزش x و y متغیرها در معادله 1، باید مقادیر موجود در ماتریس را پیدا کنیم X. برای انجام این کار، می توانیم حاصل ضرب نقطه ای معکوس ماتریس را در نظر بگیریم A، و ماتریس B همانطور که در زیر نشان داده شده است:

X = inverse(A).B

اگر با روش پیدا کردن معکوس یک ماتریس آشنا نیستید، به این لینک نگاهی بیندازید تا متوجه شوید که چگونه به صورت دستی معکوس را پیدا کنید از یک ماتریس برای درک محصول نقطه ماتریس، بررسی کنید این مقاله.

حل یک سیستم معادلات خطی با Numpy

از بخش قبل، می دانیم که برای حل یک سیستم معادلات خطی، باید دو عمل انجام دهیم: وارونگی ماتریس و حاصلضرب نقطه ماتریس. کتابخانه Numpy از پایتون از هر دو عملیات پشتیبانی می کند. اگر قبلاً کتابخانه Numpy را نصب نکرده اید، می توانید موارد زیر را انجام دهید pip دستور:

$ pip install numpy

حالا بیایید ببینیم چگونه یک سیستم معادلات خطی را با کتابخانه Numpy حل کنیم.

با استفاده از متدهای inv() و dot().

ابتدا معکوس ماتریس را خواهیم یافت A که در قسمت قبل تعریف کردیم.

بیایید ابتدا ماتریس را ایجاد کنیم A در پایتون برای ایجاد یک ماتریس، array می توان از روش ماژول Numpy استفاده کرد. یک ماتریس را می توان به عنوان لیستی از لیست ها در نظر گرفت که هر لیست نشان دهنده یک ردیف است.

در اسکریپت زیر لیستی به نام ایجاد می کنیم m_list، که بیشتر شامل دو لیست است: (4,3) و (-5,9). این لیست ها دو ردیف در ماتریس هستند A. برای ایجاد ماتریس A با Numpy، m_list به منتقل می شود array روشی که در زیر نشان داده شده است:

import numpy as np

m_list = ((4, 3), (-5, 9))
A = np.array(m_list)

برای یافتن معکوس یک ماتریس، ماتریس به ماتریس ارسال می شود linalg.inv() روش ماژول Numpy:

inv_A = np.linalg.inv(A)

print(inv_A)

مرحله بعدی یافتن حاصل ضرب نقطه ای بین معکوس ماتریس است A، و ماتریس B. ذکر این نکته ضروری است که حاصل ضرب نقطه ماتریس فقط بین ماتریس ها امکان پذیر است اگر ابعاد داخلی ماتریس ها برابر باشد یعنی تعداد ستون های ماتریس سمت چپ باید با تعداد ردیف های ماتریس سمت راست مطابقت داشته باشد.

برای پیدا کردن محصول نقطه با کتابخانه Numpy، linalg.dot() تابع استفاده می شود. اسکریپت زیر حاصل ضرب نقطه ای بین معکوس ماتریس را پیدا می کند A و ماتریس B، که راه حل است معادله 1.

B = np.array((20, 26))
X = np.linalg.inv(A).dot(B)

print(X)

خروجی:

(2. 4.)

اینجا، 2 و 4 مقادیر مربوط به مجهولات هستند x و y که در معادله 1. برای تأیید، اگر وصل کنید 2 به جای ناشناخته x و 4 در جای ناشناخته y در معادله 4x + 3y، خواهید دید که نتیجه 20 می شود.

بیایید اکنون یک سیستم از سه معادله خطی را حل کنیم، همانطور که در زیر نشان داده شده است:

4x + 3y + 2z = 25
-2x + 2y + 3z = -10
3x -5y + 2z = -4

معادله فوق را می توان با استفاده از کتابخانه Numpy به صورت زیر حل کرد:

معادله 2:

A = np.array(((4, 3, 2), (-2, 2, 3), (3, -5, 2)))
B = np.array((25, -10, -4))
X = np.linalg.inv(A).dot(B)

print(X)

در اسکریپت بالا linalg.inv() و linalg.dot() روش ها به هم زنجیر شده اند متغیر X حاوی محلول برای معادله 2، و به صورت زیر چاپ می شود:

( 5.  3. -2.)

ارزش برای مجهولات x، y، و z به ترتیب 5، 3 و 2- هستند. می توانید این مقادیر را وصل کنید معادله 2 و صحت آنها را بررسی کنید.

با استفاده از روشsol()

در دو مثال قبلی استفاده کردیم linalg.inv() و linalg.dot() روشهای یافتن جواب سیستم معادلات با این حال، کتابخانه Numpy شامل linalg.solve() روشی که می تواند برای یافتن مستقیم جواب یک سیستم معادلات خطی استفاده شود:

A = np.array(((4, 3, 2), (-2, 2, 3), (3, -5, 2)))
B = np.array((25, -10, -4))
X2 = np.linalg.solve(A,B)

print(X2)

خروجی:

( 5.  3. -2.)

می بینید که خروجی مانند قبل است.

یک مثال در دنیای واقعی

بیایید ببینیم چگونه می توان از یک سیستم معادلات خطی برای حل مسائل دنیای واقعی استفاده کرد.

فرض کنید یک میوه‌فروش در یک روز 20 انبه و 10 پرتقال را به مبلغ 350 دلار فروخت. روز بعد او 17 انبه و 22 پرتقال را به قیمت 500 دلار فروخت. اگر قیمت میوه ها بدون تغییر باقی می ماند روی هر دو روز قیمت یک انبه و یک پرتقال چند بود؟

این مشکل را می توان به راحتی با یک سیستم دو معادله خطی حل کرد.

فرض کنید قیمت یک انبه است x و قیمت یک پرتقال است y. مشکل فوق را می توان به صورت زیر تبدیل کرد:

20x + 10y = 350
17x + 22y = 500

جواب سیستم معادلات فوق در اینجا نشان داده شده است:

A = np.array(((20, 10), (17, 22)))
B = np.array((350, 500))
X = np.linalg.solve(A,B)

print(X)

و این هم خروجی:

(10. 15.)

خروجی نشان می دهد که قیمت یک انبه 10 دلار و قیمت یک پرتقال 15 دلار است.

نتیجه

این مقاله روش حل یک سیستم معادلات خطی را با استفاده از کتابخانه Numpy پایتون توضیح می دهد. شما می توانید استفاده کنید linalg.inv() و linalg.dot() روش های زنجیره ای برای حل یک سیستم معادلات خطی، یا می توانید به سادگی از آن استفاده کنید solve() روش. این solve() روش، روش ارجح است.

(برچسب‌ها به ترجمه)# python



منتشر شده در 1403-01-20 05:29:14

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید