1. 程式人生 > >C語言——方程求解

C語言——方程求解

C語言數學函式:fabs

原型:在TC中原型是extern float fabs(float x);,在VC6.0中原型是double fabs(double x );。

用法:#include <math.h>

功能:求浮點數x的絕對值

說明:計算|x|, 當x不為負時返回 x,否則返回 -x



方程求解

時限:1000ms 記憶體限制:10000K 總時限:3000ms

描述:

迭代法是用於求解方程或方程組近似根的一種常用的演算法設計方法。設方程為f(x)=0,用某種數學方法推

匯出來的等價的形式x=g(x),然後按一下步驟進行:
1)選一個方程的近似根,賦給變數x0;
2)將x0的值保存於變數x1,然後計算g(x1),並將結果存於x0
3)當x0與x1的差的絕對值還小於指定的精度要求時,重複步驟2
若方程有根,並且用上述方法計算出來的近似根序列收斂,則按照上述方法求得的x0就認為是方程的根。
上述方法用C程式的形式表示如下:
x0=初始近似根
do{
x1 =x0;
x0 = g(x1); /*按特定的方程計算新的近似根*/
}while(fabs(x0-x1)大於精度要求);
printf("方程的近似根是%f\n",x0);
試用迭代公式為X(n+1) = 0.5*(x(n)+a/x(n)),計算a為不同值的時候的結果(初值為1.0,精度要求為1e

-4)。

輸入:

一個整型資料a,a大於等於1,小於等於10

輸出:

結果x0,結果保留小數點後3位

輸入樣例:

1

輸出樣例:

1.000

答案如下:

#include<stdio.h> #include<math.h> int main() {  int a;  float x0,x1;    scanf("%d",&a);    x0=1;  do{   x1=x0;   x0=0.5*(x1+a/x1);  }while(fabs(x0-x1)>1e-4);  printf("%.3f\n",x0);  return 0; }



相關推薦

C語言——方程求解

C語言數學函式:fabs 原型:在TC中原型是extern float fabs(float x);,在VC6.0中原型是double fabs(double x );。 用法:#include <math.h> 功能:求浮點數x的絕對值 說明:計算|x|

c語言實現求解這樣的6位數:SQRT(6位數)=3位數,9個數字互不相同(SQRT表示開平方)

(1)設定10個元素的狀態陣列p,記錄數字0~9在6位數和3位數中出現的情況。陣列元素都賦值1,表示數字0~9沒有被使用過。 (2)對嘗試的每一個數3位數x,6位數=x*x,並取其各個位數字,數字作為陣列的下標,若對應元素為1,則該數字第一次出現, 將對應的元素賦值為0,表示該數字已經出現一次。否則,若對

C語言求解素數(質數)的N種境界

★前言:   眾所周知,不管是在學習、考試還是以後找工作中,對於求解素數的問題隨處可見,而且還是一個重難點,為何要說是重難點呢?主要是因為對於不同的人往往會有不同做法,但大多數掌握的都是一些非常平庸的做

計算方法——C語言實現——全主元高斯消元法求解非線性方程

最近在上計算方法這門課,要求是用MATLAB做練習題,但是我覺得C語言也很棒棒啊~ 題目: 高斯消元法是線性方程組的直接解法,可能會造成很大的失真,尤其是高斯順序消元法,對方法進行改進,使每次都選取絕對值最大的元素為主元,使其為乘數的分母,控制舍入誤差的擴大,

某葉C語言學習上重大的一步——一元三次方程求解

 目前某葉編的最難的程式了......感覺算是跨越吧,之前最難的是一元二次方程求解,雖然是最“難”的,只是因為最長,但是寫起來還是很輕鬆的  不過一元三次方程可一點都不輕鬆,很累,因為沒學過一元三次方程解法,所以需要百度,不過在C語言學習的書上找到了解法,要用牛頓迭代法求......   百度娘處充電,勉勉

C++ 二分法求解方程的解

%d amp 圖片 iostream ide 運行 完成 section 小數 二分法是一種求解方程近似根的方法。對於一個函數 f(x)f(x),使用二分法求 f(x)f(x) 近似解的時候,我們先設定一個叠代區間(在這個題目上,我們之後給出了的兩個初值決定的區間 [-20

多線程動態規劃算法求解TSP(Traveling Salesman Problem) 並附C語言實現例程

影響 () 高效率 let ever 好的 出現 我們 運算 TSP問題描述:   旅行商問題,即TSP問題(Travelling Salesman Problem)又譯為旅行推銷員問題、貨郎擔問題,是數學領域中著名問題之一。假設有一個旅行商人要拜訪n個城市,他必須選擇所

C 語言 字串替換 暴力求解

#include<iostream> #include<stdio.h> using namespace std; int main() { int index=0; cout<<"Hello world!" << endl;

記錄我用C語言解的第一個方程~

就是很簡單的ax^2+bx+c=0 #include<stdio.h> #include<math.h> void fun(float a, float b, float c) { float x1,x2,d; d=b*b-4*a*

資料結構(C語言實現):判斷兩棵二叉樹是否相等,bug求解

判斷兩棵二叉樹是否相等。 遇到了bug,求大神幫忙!!! C語言原始碼: #include <stdio.h> #include <stdlib.h> #include <malloc.h> #define OK 1 #define

資料結構--C語言--圖的深度優先遍歷,廣度優先遍歷,拓撲排序,用prime演算法實現最小生成樹,用迪傑斯特拉演算法實現關鍵路徑和關鍵活動的求解,最短路徑

實驗七  圖的深度優先遍歷(選做,驗證性實驗,4學時) 實驗目的 熟悉圖的陣列表示法和鄰接表儲存結構,掌握構造有向圖、無向圖的演算法 ,在掌握以上知識的基礎上,熟悉圖的深度優先遍歷演算法,並實現。 實驗內容 (1)圖的陣列表示法定義及

C語言 棧 資料結構 迷宮求解(附完整程式碼)

一、程式設計思路 1、題目:應用棧實現迷宮遊戲 要求:以書中3.2.4節迷宮求解為基礎實現迷宮遊戲,遊戲執行時顯示一個迷宮地圖(迷宮內容結構可以參照書中圖片,也可以自己編寫),玩家從地圖左上角的入口處進入迷宮,從右下角出口離開迷宮。玩家不能穿牆而過。本題目需在作

C語言 字符二維數組(多個字符串)探討 求解

字符數 沒有 一個 spa style 字符串類 hello world c語言 字符 什麽是二維字符數組? 二維字符數組中為什麽定義字符串是一行一個? “hello world”在C語言中代表什麽? C語言沒有字符串類型? C語言 字符二維數組(多個字符串)探討 求解

牛頓法和割線法方程求根(C語言

1 . 實驗目的 (1) 通過對二分法與牛頓迭代法作程式設計練習與上機運算,進一步體會二分法與牛頓迭代法的不同特點。 (2) 編寫割線迭代法的程式,求非線性方程的解,並與牛頓迭代法作比較。

C語言實現二叉樹的各種遍歷及求解深度

#include<stdio.h> #include<malloc.h> #define MAXSIZE 100 typedef char dataType; //二叉樹結構 typedef struct bnode{ dataType data; struct bnode *lC

C語言一元二次方程簡單求解

#include<stdio.h> #include<math.h> void gen1(double a,double b,double c) {     double x1,x2;     x1=(-b+sqrt(b*b-4*a*c

【Openjudge:Noi】7891:一元三次方程求解 c++

【Openjudge:Noi】7891:一元三次方程求解 總時間限制:  1000ms 記憶體限制:  65536kB 描述 有形如:ax3+bx2+cx+d=0  這樣的一個一元三次方程。 給出該方程中各項的係數(a,b,c,d  均為實數),並約定該方程

01揹包問題(用c語言實現)-回溯法求解

回溯法求解01揹包   用回溯法解問題時,應明確定義問題的解空間。問題的解空間至少應包含問題的一個(最優)解。例如,對於有n種可選擇物品的0-1揹包問題,其解空間由長度為n的0-1向量組成。該解空間

第十二週—C語言 遞迴求解(爬樓梯)

/* 煙臺大學計算機學院 2016 作者:張威 完成日期:2016年11月18日 問題及描述:爬樓梯地方法種數,一次可以爬一階或兩階。 */ #include <stdio.h> #inc

C語言實現牛頓迭代法解方程

利用迭代演算法解決問題,需要做好以下三個方面的工作: 一、確定迭代變數 在可以用迭代演算法解決的問題中,我們可以確定至少存在一個可直接或間接地不斷由舊值遞推出新值的變數,這個變數就是迭代變數。 二、建立迭代關係式 所謂迭代關係式,指如何從變數的前一個值推出其下一