|
马上注册,结识高手,享用更多资源,轻松玩转三维网社区。
您需要 登录 才可以下载或查看,没有帐号?注册
x
好久没来论坛发言了,来分享几个我编写对程序,对工科学生也许会有点启发。
! a7 g: C; T2 f9 C6 O( F* R! {
用迭代法求解方程超越方程的解
- L3 [" Y) b8 ]- X4 L#include "math.h"; W. B( J8 N. `* O6 Y* c
main()+ s2 A" y: c3 s+ e6 o) I
{
. V& B `4 v! M$ tdouble x1,x2;
' d1 v9 i U: tx1=1;
" n8 R3 {9 ?, c! L, e+ H% r* bx2=2;8 F. }) B- y" {& r! L
while(x2-x1>0.000001||x1-x2>0.000001)* y: K: T1 [" B$ {$ ` V
{, r3 N- X: o5 H" n3 Q1 Z
x1=x2;
4 w% {' S% c: B N0 W% Q. W4 J x2=log10(x1+2);9 J. O/ M9 X! c) h2 I' n. ^
printf("x2=%lf\n",x2);
8 g# D/ E3 ]9 s9 @* p }
- @; m. A- p' Q: dprintf("result is %lf\n",x2);' F: y U& o z' U
}
! R4 }( ?& n/ c
. Q- q" i6 Q! O5 O9 |- ~: G( q5 J
" a- @- {2 N. k
9 \% ?. ^* o6 V4 g- Z2 O对分法解方程1 l y! {; ?. s
double f(double x)( ~/ Y% a" B, L
{; M! W7 q7 W7 S
double y;% Z% ~# i- d: A h: f$ X* u
y=x*x*x+2*x-5; i, i5 o6 W1 ` `8 \2 |% J
return y;
9 y; a' G3 ]" t3 ]7 S+ e P* o}3 S9 }# k, E- }- Z; D
main()3 Y4 C% r, {2 i) Q4 ]! p
{4 E, _3 j6 a4 w# m
double a=1,b=2;
/ G+ Q" _! n; E; S7 C+ W2 E ?double c,d,r;- Z5 T" t( O! @8 m' n d
int i;
# L# T* k# S8 F" Nfor(i=0;i<20;i++)
" v' i5 Y9 Q* G/ c6 g9 M {( c C; H4 W# |" _, }$ t
c=(a+b)/2;- X, Q& \, Y5 z5 |
d=f(c);7 l% t% T4 n) @5 |
if(d==0)* K8 A n" l! ?3 ^& T& q" D3 O
{
- Z! j0 q8 c' Y# X2 Z8 ?' P" A: \ r=c;- Z; g% b/ k- a3 d8 H5 C7 L
break;
, B5 C2 x$ t5 F# V+ l }
- \; X0 \- ~8 ~6 n2 z. L6 h else9 g, m+ a: s/ i2 q }
{* ]/ u) t( l2 u. P, @; P
if(d>0)
7 i3 i7 v0 s0 f5 E! y- V b=c;, [0 T) l6 D3 k4 w7 D2 X0 F
else% m: `1 Y' J* \* |' F! L
a=c;
% r+ H F2 k; p }! N; l; ~9 B) D( `+ Z8 M
}
9 l1 Y7 @% m) r' n$ y3 gr=c;+ L4 A' p' }2 J/ ]% v
printf("The result of ""x^3+2*x-5=0"" is %lf\n",r); ?% U3 {2 @' D- l* B: q
}
7 `& @2 @' X6 n& ^
7 F: B* x6 p1 n5 `" p& W$ C! N
. W* H" r# Y$ A! o7 R一下程序段将以0为起点0.05为步长以2*PI为终点计算各个自变量的正弦值,并将计算结果以点的坐标的形式(x,y)打印到文件中,方便绘图软件处理。使用这种方法,即使不懂C语言的图形操作也可以绘制出高质量的曲线来。
T% I- V; O, v: w& v# b+ i5 H- v9 ~ Y: D+ D5 e
#define PI 3.1415926( J& h* a1 T5 K1 p
#include<stdlib.h>
" d* r2 z9 T; q4 E( Y#include<stdio.h>
; y9 q5 k( z: X2 i#include<math.h>9 p. j2 o- Z8 U+ e' r
main()
) N. b3 y. k* s{
( l5 b" M( T; H8 hFILE * pf;
' v1 y p0 Y0 _& S5 w( V2 ^; rdouble x,y;
, \0 j9 b% g' L3 X( xchar xx,yy;
% q& t* u+ K: y- M# \. M) k' Jx=0.0;* ?' S( W* H- l1 g+ k
if((pf=fopen("d:\\file1.txt","w"))==NULL)9 Y( p% @1 |0 D, U+ H
{
8 J1 K7 M( @* n* w* D( x9 P6 W printf("cannot open this file\n");9 G" o2 F" A& j! J7 I
exit(1);
& a4 @( c# V4 }$ V; l( `; f }
% {# ~$ J; N* T& F9 C! D% Z; swhile(x<=(PI*2.0))
. I9 @* E& b% t0 O{
1 x; r3 r& {( m% }5 sy=sin(x);
& B3 y4 t p6 i+ \* Z+ P9 ^% `. hfprintf(pf,"%lf,%lf\n",x,y);
7 C5 N8 r- B7 T+ L* W1 G: {, m5 Kx+=0.05;0 W9 t+ n" I3 e
}" r6 q/ Y* |8 q" |
fprintf(pf,"%lf,%lf\n",2*PI,sin(2*PI));
& `: m) A5 [2 g6 Z% Z6 V+ W4 Kfclose(pf);
9 f) W7 d K% u% R; I" w( o3 ~}
* ]) {, {) w. n1 R |
|