鱼C论坛

 找回密码
 立即注册
查看: 1856|回复: 6

[已解决]有没有大神帮忙写下这两道题做下参考,小的实在无从下手了,谢谢

[复制链接]
发表于 2017-5-1 20:19:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
就此先谢谢各位大神了
最佳答案
2017-5-2 13:17:56
第一题
  1. def f(x):#f(x)
  2.     x=x**3-4*x*x+4*x-5
  3.     return x
  4. def f_dao(x):#f'(x)
  5.     x=3*x*x-8*x+4
  6.     return x
  7. i=0#用于计算迭代次数
  8. def get(x):
  9.     global i   
  10.     distance=abs(f(x)/f_dao(x))#计算距离
  11.     print ('迭代'+str(i)+' '+str(distance))
  12.     if distance<=0.00001:#如果距离小于或等于接近标准输出x
  13.         print (x)
  14.     else:#否则进行递归
  15.         i+=1
  16.         x=x-distance
  17.         get(x)
  18.    
  19. get(10)
复制代码

第二题
  1. f1=open('D:\speech\Obama.txt','r')#打开奥巴马文件
  2. f2=open('D:\speech\Trump.txt','r')#打开特朗普文件
  3. str1=f1.read()#获取文件1内容
  4. str2=f2.read()#获取文件2内容
  5. str1_array=str1.split(' ')#将获取文件1内容分割成数组
  6. str2_array=str2.split(' ')#同上
  7. result_array=[0,0,0]#初始化结果
  8. def count(x):#设计计算词个数的方法
  9.     for i in x:
  10.         if i=='the':
  11.             result_array[0]+=1#计算the个数
  12.         elif i=='a':
  13.             result_array[1]+=1#计算a个数
  14.         elif i=='an':
  15.             result_array[2]+=1#计算an个数
  16.     return result_array
  17. result_array=count(str1_array)
  18. result_array=count(str2_array)
  19. print ('the:'+str(result_array[0])+'\n'+'a:'+str(result_array[1])+'\n'+'an:'+str(result_array[2]))
  20. f1.close()
  21. f2.close()

复制代码
题目1.png
题目2.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-5-1 20:24:15 | 显示全部楼层
Python 3 的 Windows系统
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-2 11:16:39 | 显示全部楼层
第一题求导的话可以去下个sympy库来进行,然后调用递归函数或者循环都可以
第二套可以用正则表达式匹配
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-2 11:17:57 | 显示全部楼层
题目不难,可以说相当简单。
问题是,你的解答是什么?你哪里不会,我可以帮你分析。
如果你希望别人帮你全部解完了,那对你自己的编程几乎是没有提高的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-2 12:14:36 | 显示全部楼层
小锟 发表于 2017-5-2 11:16
第一题求导的话可以去下个sympy库来进行,然后调用递归函数或者循环都可以
第二套可以用正则表达式匹配

确实,用sympy解轻松+愉快
  1. # coding:utf-8
  2. import sympy as sp


  3. def function(x0):
  4.     x = sp.symbols('x')
  5.     f = x**3 - 4 * x**2 + 4 * x - 5
  6.     df = sp.diff(f, x)
  7.     expr = f / df
  8.     x1 = x0 - expr.subs(x, x0)
  9.     diff = abs(x1 - x0)
  10.     c = 1
  11.     while diff > 0.00001:
  12.         print('迭代 %d : %.15f' % (c, diff))
  13.         c += 1
  14.         x0 = x1
  15.         x1 = x0 - expr.subs(x, x0)
  16.         diff = abs(x1 - x0)
  17.     else:
  18.         print(x1.evalf(17))

  19. function(10)
复制代码


迭代 1 : 2.834821428571428
迭代 2 : 1.848700471867023
迭代 3 : 1.155914959364576
迭代 4 : 0.636819850851948
迭代 5 : 0.243592529011858
迭代 6 : 0.037408239879253
迭代 7 : 0.000845530651217
3.2418965630345885

***Repl Closed***
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-2 13:17:56 | 显示全部楼层    本楼为最佳答案   
第一题
  1. def f(x):#f(x)
  2.     x=x**3-4*x*x+4*x-5
  3.     return x
  4. def f_dao(x):#f'(x)
  5.     x=3*x*x-8*x+4
  6.     return x
  7. i=0#用于计算迭代次数
  8. def get(x):
  9.     global i   
  10.     distance=abs(f(x)/f_dao(x))#计算距离
  11.     print ('迭代'+str(i)+' '+str(distance))
  12.     if distance<=0.00001:#如果距离小于或等于接近标准输出x
  13.         print (x)
  14.     else:#否则进行递归
  15.         i+=1
  16.         x=x-distance
  17.         get(x)
  18.    
  19. get(10)
复制代码

第二题
  1. f1=open('D:\speech\Obama.txt','r')#打开奥巴马文件
  2. f2=open('D:\speech\Trump.txt','r')#打开特朗普文件
  3. str1=f1.read()#获取文件1内容
  4. str2=f2.read()#获取文件2内容
  5. str1_array=str1.split(' ')#将获取文件1内容分割成数组
  6. str2_array=str2.split(' ')#同上
  7. result_array=[0,0,0]#初始化结果
  8. def count(x):#设计计算词个数的方法
  9.     for i in x:
  10.         if i=='the':
  11.             result_array[0]+=1#计算the个数
  12.         elif i=='a':
  13.             result_array[1]+=1#计算a个数
  14.         elif i=='an':
  15.             result_array[2]+=1#计算an个数
  16.     return result_array
  17. result_array=count(str1_array)
  18. result_array=count(str2_array)
  19. print ('the:'+str(result_array[0])+'\n'+'a:'+str(result_array[1])+'\n'+'an:'+str(result_array[2]))
  20. f1.close()
  21. f2.close()

复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-2 22:48:06 | 显示全部楼层
本帖最后由 余欲渔 于 2017-5-2 22:52 编辑

只解第一题,如下:
  1. x=10
  2. for i in range(1,1000000):
  3.     xn=(x**3-4*x**2+4*x-5)/(3*x**2-8*x+4)
  4.     if xn<0.00001:break
  5.     print('迭代',i,'  ',xn)
  6.     x-=xn
  7. print(x)
复制代码

  1. RESTART: C:\Users\Administrator\AppData\Local\Programs\Python\Python35-32\test.py
  2. 迭代 1    2.8348214285714284
  3. 迭代 2    1.8487004718670228
  4. 迭代 3    1.1559149593645757
  5. 迭代 4    0.6368198508519486
  6. 迭代 5    0.24359252901185732
  7. 迭代 6    0.037408239879253194
  8. 迭代 7    0.0008455306512175063
  9. 3.2418969898026964
  10. >>>
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-19 09:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表