當前位置:首頁 » 編程語言 » c語言解方程組

c語言解方程組

發布時間: 2023-06-04 04:17:58

㈠ 如何用c語言程序解方程

#include"stdio.h"
#include"math.h"
/*求一元二次方程ax*x+bx+c=0的解*/
main()
{
floata,b,c,x1,x2,d;
printf("請輸入a:");
scanf("%f",&a);
printf("請輸入b:");
scanf("%f",&b);
printf("請輸入c:");
scanf("%f",&c);
d=b*b-4*a*c;
if(d<0)
printf("方程沒有實數解。 ");
if(d==0)
{
x1=(-b)/(2*a);
printf("x1=%f ",x1);
}
if(d>0)
{
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("x1=%f,x2=%f ",x1,x2);}
}
請輸入a:12
請輸入b:34
請輸入c:4
x1=-0.122985,x2=-2.710348
Pressanykeytocontinue

㈡ 如何用C語言解二元一次方程組

設計思路如下:

1、問題描述:

給定一個二元一次方程組,形如:

a * x + b * y = c;

d * x + e * y = f;

x,y代表未知數,a, b, c, d, e, f為參數。

求解x,y。

2、數據規模和約定:

0 <= a, b, c, d, e, f <= 2147483647。

3、設計思路:

二元一次方程組是由兩個含有兩個未知數的方程組成的,要求解,就要把二元轉化為一元。由二元一次方程組的解法思想知,要把二元轉化為一元.

實現的功能代碼如下:

因為在求解過程中只有數之間的運算,而沒有整個式子的運算,因此這種方法被廣泛地用於計算機中。

㈢ c語言解三元一次方程組!接著我的代碼寫!盡快~

//用克萊姆法則
float d=a[0,0]*a[1,1]*a[2,2]+a[0,1]*a[1,2]*a[2,0]+a[0,2]*a[1,0]*a[2,1]-a[0,0]*a[1,2]*a[2,1]-a[0,1]*a[1,0]*a[2,2]-a[0,2]*a[1,1]*a[2,0];
if(d==0)printf("無解\n");
else{
float p=a[0,3]*a[1,1]*a[2,2]+a[0,1]*a[1,2]*a[2,3]+a[0,2]*a[1,3]*a[2,1]-a[0,3]*a[1,2]*a[2,1]-a[0,1]*a[1,3]*a[2,2]-a[0,2]*a[1,1]*a[2,3];
float q=a[0,0]*a[1,3]*a[2,2]+a[0,3]*a[1,2]*a[2,0]+a[0,2]*a[1,0]*a[2,3]-a[0,0]*a[1,2]*a[2,3]-a[0,3]*a[1,0]*a[2,2]-a[0,2]*a[1,3]*a[2,0];
float r=a[0,0]*a[1,1]*a[2,3]+a[0,1]*a[1,3]*a[2,0]+a[0,3]*a[1,0]*a[2,1]-a[0,0]*a[1,3]*a[2,1]-a[0,1]*a[1,0]*a[2,3]-a[0,3]*a[1,1]*a[2,0];
printf("x1=%f\n",p/d);
printf("x2=%f\n",q/d);
printf("x3=%f\n",r/d);
}
}

㈣ C語言線性方程組求解,很急!

/*

方程組維數 : 3

控制精度 : 0.000001

增廣矩陣第1行(空格隔開):3 4 -6 12

增廣矩陣第2行(空格隔開):1 -2 1 -3

增廣矩陣第3行(空格隔開):3 2 -1 11

整理完畢,此時方程組為 :

11.33333-24

01-0.92.1

0011

方程的解為 :

2 3 1

Press any key to continue

*/

#include<iostream.h>
#include<math.h>
#defineN100

intmain(){
intn,k,i,j,m;
doubleA[N][N+1],eps,temp;
cout<<"方程組維數:";
cin>>n;
cout<<"控制精度:";
cin>>eps;
for(i=0;i<n;i++){
cout<<"增廣矩陣第"<<i+1<<"行(空格隔開):";
for(j=0;j<n+1;j++)cin>>A[i][j];
}
for(k=0;k<n;++k){
m=k;
for(i=k+1;i<n;++i){
if(fabs(A[i][k])>fabs(A[m][k]))
m=i;
}
if(fabs(A[m][k])<=eps)return0;
if(m!=k){
for(i=k;i<n+1;i++){
temp=A[k][i];
A[k][i]=A[m][i];
A[m][i]=temp;
}
}
temp=A[k][k];
for(i=k;i<n+1;++i)A[k][i]/=temp;//主元系數「歸一」劃
for(i=k+1;i<n;i++){//消元
temp=A[i][k];
for(j=k;j<n+1;++j){
A[i][j]-=A[k][j]*temp;
}
}
}
cout<<"整理完畢,此時方程組為:"<<endl;
for(i=0;i<n;i++){
for(j=0;j<n+1;j++)
cout<<A[i][j]<<"";
cout<<endl;
}
for(i=n-2;i>=0;i--){
for(j=i+1;j<n;j++)
A[i][n]-=A[i][j]*A[j][n];
}
cout<<"方程的解為:"<<endl;
for(i=0;i<n;i++)cout<<A[i][n]<<"";
cout<<endl;
return0;
}

㈤ 用C語言編程二分法求解方程組

#include<stdio.h>
#include<math.h>

#define EQUATION(A, B, m, n, x) (A*pow(x, m) + B*pow(x, n) - 1)/* 定義方程*/

double A, B, m, n;/*方程參數*/

void find_extent(double *x1, double *x2)/*找出根所在的區間*/
{
double i = 0, j = 0;
*x1 = 0;
if(EQUATION(A, B, m, n, 0) > 0)
{
while(EQUATION(A, B, m, n, ++i) > 0 && EQUATION(A, B, m, n, --j) > 0);
*x2 = EQUATION(A, B, m, n, i) <= 0 ? i : j;
}
else
{
while(EQUATION(A, B, m, n, ++i) < 0 && EQUATION(A, B, m, n, --j) < 0);
*x2 = EQUATION(A, B, m, n, i) >= 0 ? i : j;
}
}

/*二分法解方程*/
/*輸入參數:根所在區間[x1, x2], 和精度*/
double get_result(double x1, double x2, double accuracy)
{
double x = (x1 + x2) / 2;
while(fabs(EQUATION(A, B, m, n, x)) > accuracy)
{
if(EQUATION(A, B, m, n, x) * EQUATION(A, B, m, n, x1) > 0)
x1 = x;
else
x2= x;
x = (x1 + x2)/2;
}
return x;
}

int main()
{
double x;
double x1,x2;
scanf("%lf%lf%lf%lf", &A, &B, &m, &n);
find_extent(&x1, &x2);
x = get_result(x1, x2, 0.00001);
printf("%lf", x);
return 0;
}

㈥ 用c語言編程求線性方程組的解

給,下面的代碼已經編譯運行確認,肯定好用了,試試吧:)
#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#define
number
20
#define
esc
0x1b
#define
enter
0x0d
float
a[number][number+1]
,ark;
int
flag,n;
void
exchange(int
r,int
k);
float
max(int
k);
void
message();
int
main()
{
float
x[number];
/*此數組用於存放方程解*/
int
k,i,j;
char
celect;
system("cls");
printf("\n用gauss列主元消元法解線性方程組");
printf("\n1.解方程組請按enter.");
printf("\n2.退出程式請按esc.");
celect=getch();
if(celect==esc)
exit(0);
printf("\n
輸入方程組的維數:n=");
scanf("%d",&n);
printf("\n現在輸入系數矩陣a和向量b:");
for(i=1;i<=n;i++)
{
printf("\n請輸入a%d1--a%d%d系數和向量b%d:
\n",i,i,n,i);
/*實現將每一行中的系數和向量一次性輸入,數之間用空格格開,輸完後回車確定*/
for(j=1;j<=n+1;j++)
/*將剛才輸入的數存入數組*/
scanf("%f",&a[i][j]);
}
for(k=1;k<=n-1;k++)
{
ark=max(k);
if(ark==0)
/*判斷方程是否為線性方程,即是否合法*/
{
printf("\n此方程組不合法!");message();
}
else
if(flag!=k)
exchange(flag,k);
for(i=k+1;i<=n;i++)
for(j=k+1;j<=n+1;j++)
a[i][j]=a[i][j]-a[k][j]*a[i][k]/a[k][k];
}
x[n]=a[n][n+1]/a[n][n];
for(
k=n-1;k>=1;k--)
{
float
me=0;
for(j=k+1;j<=n;j++)
{
me=me+a[k][j]*x[j];
}
x[k]=(a[k][n+1]-me)/a[k][k];
}
for(i=1;i<=n;i++)
{
printf("\nx%d=%f",i,x[i]);
}
message();
getch();
return
1;
}
void
exchange(int
r,int
k)
/*交換行的矩函數*/
{
int
i;
for(i=1;i<=n+1;i++)
a[0][i]=a[r][i];
for(i=1;i<=n+1;i++)
a[r][i]=a[k][i];
for(i=1;i<=n+1;i++)
a[k][i]=a[0][i];
}
float
max(int
k)
/*比校系數大小的函數*/
{
int
i;
float
temp=0;
for(i=k;i<=n;i++)
if(fabs(a[i][k])>temp)
{
temp=fabs(a[i][k]);
flag=i;
}
return
temp;
}
void
message()
/*實現菜單選擇的函數*/
{
printf("\n
繼續運算按
enter
,退出程式按
esc!");
switch(getch())
{
case
enter:
main();
case
esc:
exit(0);
default:{printf("\n不合法的輸入!");message();}
}
}

㈦ C語言編程,二元一次方程組

首先要找到二元一次方程組的通解,例如:ax+by=m cx+dy=n不難算出 x=(md-bn)/(ad-bc) y=(mc-an)/(bc-ad) 這相當於知道了演算法,接下來就可以編程序了: int main(){int a,b,c,d,m,n;double x=0,y=0;scanf("%d,%d,%d,%d,%d,%d",&a,&b,&c,&d,&m,&n).

熱點內容
定義dns伺服器的ip 發布:2025-05-17 20:32:37 瀏覽:952
android判斷圖片 發布:2025-05-17 20:32:33 瀏覽:832
安卓12什麼時候適配小米 發布:2025-05-17 20:31:47 瀏覽:69
c語言字元串初始化 發布:2025-05-17 20:18:43 瀏覽:36
安卓融e聯推送需要什麼許可權 發布:2025-05-17 20:18:39 瀏覽:268
我的世界無限武魂伺服器 發布:2025-05-17 20:17:09 瀏覽:371
安卓手游腳本語言 發布:2025-05-17 19:53:07 瀏覽:21
找圈演算法 發布:2025-05-17 19:49:19 瀏覽:410
資料庫的存取方法 發布:2025-05-17 19:48:36 瀏覽:125
androidapp測試 發布:2025-05-17 19:48:19 瀏覽:389