Dobrý den,
jak se dá vypočítat soustava rovnic v programu? Nějak jsme na to zatím nepřišel...
Děkuji za odpověď
Fórum › Matematika
Soustavy rovnic a program
Jak v programu? Treba v Mathematice staci zadat
Solve[{rovnice1,rovnice2,...},{promenna1,promenna2..}]
A vyplivne ti to vysledky. jen si je treba dat bacha ze misto = v rovnicich musis davat ==.Téda, jak to naprogramovat je docela dobrá otázka. Dá se to, ale je to minimálně obtížnost "Veterán".
Já vím, je to celkem těžký, proto se ptám na nějaký základní psotup...
To Anonymní uživatel : Z odpovědi MZetka bych řekl, e je postup takový:
1) naučit se soustavy rovnic tak, abys mohl říct, že jsi skill "Killer"
2) naučit se používat jazyk na použitelnou úrveň
3) naučit se prgramovat na Hard level**
:smile3:
Nekdo tady z fora programoval nejaky programy na reseni rovnic...MathAtelier nebo tak nejak se to jmenovalo. Podivej se po tom a zeptej se ho :)
To Anonymní uživatel : Ahoj, pro programové řešení soustav lineárních rovnic lze s úspěchem použít Gausovu eliminační metodu (Gaussian elimination). Samo o sobě to není příliš složité, ale jsou potřeba alespoň základní znalosti Lineární algebry (hlavně práce s maticemi a jejich úpravy).
Jen jsem tak zauvažoval, proč dotyčný chce řešit soustavu rovnic a ne rovnici. Tak mě napadlo, jestli on už nemá tu rovnic v základním tvaru ax + bx+ c = 0 a pouze si to neumí vyjádřit....
Takže z 2. rovnice si vyjádřím y = (-a2*x- c2)/b2
a poté dosadím do první: a1*x +b1*((-a2*x- c2)/b2) + c1 = 0
a z toho dostanu: x = (b1*c2 - b2*c1)/(a1*b2 - a2*b1)
Doufám, že jsem pomohl...
To CommanderZ : to jsem byl já.
Naprogramovat to bylo celkem dost složitý. 5ešil jsem to metodou dosazovací. Nejdřív musíš udělat program na řešení rovnic s více neznámýma (parametrama) a pak ještě podprogram na řešení těch soustav. Celkově to vyšlo tak na 1000 řádek kódu.
Napsat problém, který počítal rovnice v základním tvaru (tedy například ax^2+bx+c=0) není až zas takový problém. Hlavní problém je v upravení toho výrazu, např udělat z (x+5)/(x+1)+5 -> (6x+10)/(x+1)...
Najdete zde články zabývající se matematikou základních a středních škol a databázi hlavolamů.
Pro vyzkoušení Vaš
1000 radek neni moc. Ale stejne respekt :)
To yaqwsx : Funguje to, díky, a chci se zeptat jestli jsem vypozoroval správně; když mi vyjde jmenovatel nula - nemá soustava řešení? A když mi vyjde čitatel i jmenovatel nula, tak soustava má nekonečně mnoho řešení?
A nebo jak to je?
Samozřejmě předem děkuji za odpověď
Rovnice nema reseni, kdyz vyjde nelatny vyraz (0==1) a ma nekonecne mnoho reseni pro vyraz, jehoz hodnota nezalezi na hodnote promenne (1==1)
nastuduj si něco o determinantech (maticová funkce, která se dá elegantně naimplementovat rekurzivně - pokud ti teda tolik nejde o časovou náročnost výpočtu), jakmile to naimplementuješ, tak výsledky soustavy dostaneš jako podíl dvou takovýchto funkcí...
gaussova eliminacni metoda je na relativne malo radku, ja jsem ji napsal v cecku neco pod stovku a myslim ze by sla jeste zkratit... a ze by byly potreba nejake hlubsi znalosti linearni algebry mi take nepripada, staci vedet ze se radky daji scitat a nasobit), a pripadne poznat singularitu soustavy. ale uz se to tady resilo vicekrat...
na to přece existují algoritmy: Seidelova metoda a Ritzova metoda (založená na Seidlově metodě, ale přesnější a rychlejší) jedná se o přibližné řešení, ale když to dáte do programu, tak zvolíte přesnost a necháte počítač chroustat..
nevýhodou je, že rovnice se musí převést do určitého tvaru, ale to není zas až tak velký problém..
princip Seidelovy metody je v tom, že do rovnic dosazuji, nejdříve absolutní členy, a pak tyto výsledky znovu dosadím dokud se nerovnají nule, nevím jestli je to přesně, ale zájemci si to už najdou.. hlavně je tam podmínka, že tvar rovnic musí být v konvergentním tvaru nebo to nenajde řešení a váš program se zacyklí
Řekl bych že na počítaní soustavy lineárních rovnic není nic těžkého ... stačí si to na papíře vyřešit obecně .. a vzoreček použít + nějaké to ošetření nul atd..
na reseni n soustav o n neznamych je takhle na komp dobra gaussova eliminacni metoda...
mate proste rozsirenou matici prvku:
x + 2y = 3
x - y = 0
matice:
1 2 | 3
1 1 | 0
ale jde to pro libovolne velkou
pak se prvni odecita od vsech dalsich tak aby vysla 0 v prvnim sloupci
pak se pokracuje dalsima dokud nemas pod diagonalou vsude nuly...
no a pak to samy udelas jeste nad diagonalou
a na zaver v diagonale vyjadris vse jako jednotky... vyjde ti pak pekne vse ve vysledku
To Anonymní uživatel :
Tady jsem ti napsal nějaký kód na gaussovu eliminační metodu:
#include <stdio.h>
#include <conio.h>
void main ()
{
int n,i,j,k;
double a[10][11],m;
clrscr ();
scanf ("%d",&n);
for (i=0;i<n;i++)
{
for (j=0;j<=n;j++)
{
scanf ("%lf",&a[j][j]);
}}
/* vypis soustavu*/
clrscr ();
printf ("soustava:\n");
for (i=0;j<=n;j++)
{
for (j=0;j<n;j++)
{
printf ("+(%lf)*x%d",a[i][j],j+1);
printf ("=%lf\n",a[i][n]);
}
}
/*gem*/
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
{
if (j==i) continue;
m=a[j][i]/a[i][i];
for (k=i;k<=n;k++)
{
a[j][k]=a[j][k]-a[i][k]*m;
}
}
}
/*vysledek*/
for (i=0;i<n;i++)
{
printf ("x%d=%lf\n",i+1, a[i][n]/a[i][i]);
}
getche ();
}
Ahooj.. :smile8: Pomůžete mi plss s jedním příkladem??? Je to učivo: Soustava 2 rovnic o 2 neznámých.. :smile1: Nechápu jen ten začátek.. Pstě nwm, jak poznám, čím mám násobit.. :smile10: :smile10: Tady je zadání: x-y=6
4x+y=4
Nechápu jen ten začátek, jak se přije na to, čím mám násobit ty 2 rovnice..!!!
Proč tak složitě vážení? Na pohodu jsem napsal jednoduchý program, který sice není schopen vyřešit všechny rovnice, ale pokud máme dvě rovnice ve tvaru aX + bY = c (a,b jsou koeficienty, c je výsledek) a dX + eY = f , tak existuje obecný vzorec, který jsem popsal zde: http://cprograming.wz.cz/obsah/vzorce.html
To Doomista.
Nevím proč otevíráš téměř 2 roky staré vlákno, když jsi nám nic objevného nesdělil.
Píšeš proč tak složitě. To asi proto, že tazatel chtěl vypočítat soustavu rovnic a ne pouze soustavu 2 rovnic, kterou nabízíš ty. Já bych podle tvé logiky mohl taky napsat "obecné" řešení "soustavy" rovnic o jedné neznámé takto:
ax=b
pro a<>0: x=b/a
pro a=0: pro b<>0 nemá soustava řešení
pro b=0 má soustava nekonečně mnoho řešení.
Tvoje obecné řešení má ovšem jednu velikou vadu.
Jak bude vypadat řešení, když ae-bd=0 nebo když b=0.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Soustavy rovnic a nerovnic — založil jajka
Jak najít všechny kořeny soustavy rovnic numerickou metodou — založil yaqwsx
Podmínky při řešení soustavy dvou lineárních rovnic o dvou neznámých — založil martin.kubik
Program na soustavu rovnic — založil kamilek
Program pro výpočet rovnic o 2 neznámých — založil Mayestro