|
马上注册,结识高手,享用更多资源,轻松玩转三维网社区。
您需要 登录 才可以下载或查看,没有帐号?注册
x
好久没来论坛发言了,来分享几个我编写对程序,对工科学生也许会有点启发。
m' `9 u- n- g/ \7 C& p) `
" p/ ^2 Q3 a8 P" o用迭代法求解方程超越方程的解8 w5 O5 P: J! ~. n& M
#include "math.h"
9 c+ G1 M5 T% Rmain()
& I& P) H5 R6 B. e' S9 K{
, @' m: l- A; _; @double x1,x2;( T2 Y1 X4 L- }- x) Q& ?5 U
x1=1;
1 k, X. ^. I+ `. _) k0 ix2=2;2 h6 K! L2 l( ^* \, O, c
while(x2-x1>0.000001||x1-x2>0.000001)( n; R# W3 g) R$ }
{
( M* d/ |4 V$ }' u* X0 ~6 L x1=x2;
0 q4 L7 ?$ D* O$ s- ~0 ~- k4 U x2=log10(x1+2);
: O! H- T1 H. n printf("x2=%lf\n",x2);
' z) V% |7 E R: ]/ K }
8 ~7 Y$ F U. }2 p5 a$ Qprintf("result is %lf\n",x2);! J- Y! k5 Z3 Z( t& W; R) H) H
}4 V/ |) B1 a5 I' Q. o. q4 v
# ^ T' O2 p' |
$ A/ k/ k$ X( ~" Q- L; S7 ?$ @, x1 @/ M
对分法解方程
0 J9 {3 @4 x, p5 ^3 Tdouble f(double x); s. z! y2 E" L2 y
{
8 Y+ Q9 [( v" |* W2 P) A3 p, B! Ydouble y;( B I$ ?. Q9 F; h) ~) Q
y=x*x*x+2*x-5;, }! w! p( a5 D! s D7 s
return y;6 B1 F: f ^$ Z( T
}
- g" h8 M+ }2 N" Y! dmain()
$ E( _: e, Y4 g3 B{4 }, r# v$ o: V( o" E+ m% L6 C$ B; p
double a=1,b=2;
/ M p% o/ B* L, {; u) ddouble c,d,r;
$ w" T4 U+ L4 r7 M. f' f/ @0 k' Aint i;
, n2 @3 T3 n( vfor(i=0;i<20;i++). N: G9 n Z; X& B$ [
{
& T& X6 E& `- Z K c=(a+b)/2;. S- P# d! |6 z! u, T
d=f(c);9 g) C9 z8 q; }" I6 G
if(d==0)
' t. w+ o' t' q) p: d {
/ h- q8 b: o3 h7 H r=c;0 G' e9 T+ o9 ?/ g) y* I
break;
Z3 F# x. G8 {0 V K" D }' P. d+ _& X% V- j- m
else% \ i2 }1 h5 o( C4 t) V ~
{
6 _( V0 N! S3 l7 p( C# d+ j9 d if(d>0)
. j+ I+ b+ T! X" ]" @$ T% \ b=c;
2 [* p' E! H8 O3 V5 U1 X6 ?, l else
' n) |& u+ _# Z( Y( y8 Z$ z/ R: e a=c;
! P- A: [ R+ A# c }
. I1 h2 V! T3 |( C' X u( A0 d+ c1 V }0 Y! J( J4 x7 E3 F8 V
r=c;; y# a6 x# h# B
printf("The result of ""x^3+2*x-5=0"" is %lf\n",r);
) [0 r# v6 ~$ G5 W; s4 b$ z, W; u1 y! ?}
t4 l! C. \) |2 V' f5 P) ?# h* @
( t( t0 q! A/ W1 ~( F% K ^ [! ^8 m2 j# [7 q
一下程序段将以0为起点0.05为步长以2*PI为终点计算各个自变量的正弦值,并将计算结果以点的坐标的形式(x,y)打印到文件中,方便绘图软件处理。使用这种方法,即使不懂C语言的图形操作也可以绘制出高质量的曲线来。
- f7 h4 W$ z _9 e- M
% E7 l' H# ]6 s8 z8 p; f& T#define PI 3.14159268 ?' T+ S' }6 J: @+ I/ J, o: V
#include<stdlib.h>
; J3 u& t( l5 i1 n" O/ p#include<stdio.h>/ t2 L6 n% R6 N5 J4 w) @
#include<math.h>1 i4 Z/ K6 p: k
main()
! V l1 K- n* \1 L& j3 j{
! l( K0 @4 [* {; A- x RFILE * pf;
0 t; f ?* k* h: M$ L+ Mdouble x,y;- Y. p, N* s7 { ?; N( K
char xx,yy;
' l0 v. s; @% F5 `/ T* q3 d% Px=0.0;
, u# V$ G5 q$ k( W( T5 m+ Lif((pf=fopen("d:\\file1.txt","w"))==NULL)
( @2 V1 S- r% }% D8 V9 _ {. X) J' ]$ V& c, R
printf("cannot open this file\n");* I: b9 r) n. S1 x
exit(1);
! Y% a8 A& b4 Z& t }
/ L- o; b5 } @: f/ n" B, X+ mwhile(x<=(PI*2.0))2 n: X0 O7 D( T
{
4 X E5 g8 L/ Z0 m" ny=sin(x);0 r0 |0 G$ m# Q% }0 F
fprintf(pf,"%lf,%lf\n",x,y);1 ]& @- R# q( `2 k* D4 ^. P9 |
x+=0.05;. _) M. n5 O- i# }
}, ?2 ?0 l5 u$ ?# w6 t" e
fprintf(pf,"%lf,%lf\n",2*PI,sin(2*PI));
7 D8 w. _4 C/ r5 {- O2 S& u$ R, zfclose(pf);6 J1 E* M1 o' L
}
5 E4 y8 d( z* _/ _# E( S5 p. E: }3 A) m |
|